キー入力


もしもしポンタ  2005-10-28 00:18:41  No: 18304

Aを押下時、Tmemoに"xyz"と表示させたいのですが、"xyza"と表示されてしまいます
具体的には、
if chr(Key) = 'A' then
    Memo1.SelText := 'xyz' + #13#10;
と、書いています

deleteを使おうかとも思ったのですが、なんか幼稚な気がして・・・・

スマートな方法ありませんか?


スマートかな?  2005-10-28 00:32:38  No: 18305

Key := 0;


もしもしポンタ  2005-10-28 00:46:27  No: 18306

>Key := 0;
私もこの方法を考えてやってみたんですが、、、
どこに入れても駄目だったんですけど、どこに入れればいいんですか?><

ちなみに、KeyDownです


3K  2005-10-28 01:07:21  No: 18307

Aとaは違うのはわかっていますか?


もしもしポンタ  2005-10-28 01:22:36  No: 18308

>Aとaは違うのはわかっていますか?
これは文字コード的にということでしょうか??
それならわかっていますが・・・


masayan  2005-10-28 01:36:43  No: 18309

あまり、スマートな方法ではありませんが...

var
  KeyNull : Boolean;

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  KeyNull := False;

  if Chr(Key) = 'A' then
  begin
    Memo1.SelText := 'xyz' + #13#10;
    KeyNull := True;
  end;
end;

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if KeyNull then Key := #0;
end;

ってな感じでどうでしょう?


3K  2005-10-28 01:48:57  No: 18310

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = 'A')  or (Key = 'a') then
  begin
    Key := #0;
    Memo1.selText := 'xyz' + #13#10;
  end;
end;

対象はあくまでも「A」です。
「a」も必要ならなら  if (Key = 'A') or (Key = 'a') then

でどうでしょうか?


?  2005-10-28 01:51:11  No: 18311

単純にこれでは?
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Chr(65) then //Aのアスキーコード
    begin
      Key := #0;
      Memo1.SelText := 'xyz' + #13#10;
    end;
end;


3K  2005-10-28 01:55:18  No: 18312

おっと失礼
begin
  if (Key = 'A')  or (Key = 'a') then

begin
  if (Key = 'A') then
でした。


もしもしポンタ  2005-10-28 01:59:58  No: 18313

KeyDownイベントだと、皆さんが言う通りに書いても思い通りに動かないんですよ・・・
実際はShiftとかAltとかをからめたいので、KeyDownで書きたいんですけど・・・

やっぱりフラグですかねぇ・・・^^;


3K  2005-10-28 02:26:12  No: 18314

であれば、KeyDownはそのままで
Memo1KeyPressに
if Key = 'A' then
    key := #0;
だけ入れるって言うのはどうでしょ?


Basser  2005-10-28 19:15:10  No: 18315

これでどうでしょう?

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  Msg: TMsg;
begin
  if (Chr(Key) = 'A') and PeekMessage(Msg, Memo1.Handle, WM_CHAR, WM_CHAR, PM_NOREMOVE) and
     (Chr(Msg.wParam) in  ['A', 'a']) and PeekMessage(Msg, Memo1.Handle, WM_CHAR, WM_CHAR, PM_REMOVE) then
    Memo1.SelText:= 'xyz';
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加