Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Mehrere Tasten in einer Procedure abfragen? (https://www.delphipraxis.net/167355-mehrere-tasten-einer-procedure-abfragen.html)

Bummi 26. Mär 2012 12:58

AW: Mehrere Tasten in einer Procedure abfragen?
 
für Tab ins OnShortCut des Forms hängen
Delphi-Quellcode:
procedure TForm2.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var
  KeyCode: TShortCut;
begin
  KeyCode := Menus.ShortCut(Msg.CharCode, KeyDataToShiftState(Msg.KeyData));
  case KeyCode of
    VK_TAB: ShowMessage ('tab');
  else
    Exit;
  end;

  Handled := True;

end;

FlatIron 26. Mär 2012 13:10

AW: Mehrere Tasten in einer Procedure abfragen?
 
Ne schnellere Lösung wäre diese (TApplicationEvent aus der Registerkarte "Zusätzlich"):

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if msg.message = WM_KEYDOWN then
  begin
    if msg.wParam = 9 then
    begin
      ShowMessage('Tab wurde gedrückt!');
    end;
  end;
end;

DeddyH 26. Mär 2012 13:21

AW: Mehrere Tasten in einer Procedure abfragen?
 
Ich hätte eher an sowas gedacht (Events sind allen betroffenen Edits per OI zugewiesen):
Delphi-Quellcode:
procedure TfrmTest.Edit1Exit(Sender: TObject);
var
  Edit: TEdit;
  dummy: integer;
begin
  Edit := Sender as TEdit;
  if (Edit.Text <> '') then
    if not TryStrToInt(Edit.Text, dummy) then
      begin
        ShowMessage('Bitte nur Zahlen eintragen');
        Edit.SetFocus;
      end;
end;

procedure TfrmTest.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
    Perform(WM_NEXTDLGCTL, 0, 0);
end;

rd3 26. Mär 2012 14:53

AW: Mehrere Tasten in einer Procedure abfragen?
 
OnKeyPress + KeyPreview = True
Delphi-Quellcode:
  if key = #13 then
  begin  //Enter key: TEdit, oder auch mehr...
    if (ActiveControl.ClassType = TEdit) then
    begin
      Key := #0;
      Perform(WM_NEXTDLGCTL, 0, 0);
    end;
  end;

mat72 27. Mär 2012 08:52

AW: Mehrere Tasten in einer Procedure abfragen?
 
Danke für eure Hilfe.
Ich habe das ganze jetzt so gelöst.
Delphi-Quellcode:
procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if (Key=#13)
    then
      Edit2.SetFocus;
end;

procedure TForm3.Edit1Exit(Sender: TObject);
begin
    try
       ol:=StrToFloat(Edit1.Text);
    except
          ShowMessage('Please enter only Numbers!');
          Edit1.Clear;
          Edit1.SetFocus;
    end;
end;
Gruß
Matthias

DeddyH 27. Mär 2012 08:53

AW: Mehrere Tasten in einer Procedure abfragen?
 
Du könntest auch gleich Delphi-Referenz durchsuchenTryStrToFloat verwenden.

himitsu 27. Mär 2012 09:22

AW: Mehrere Tasten in einer Procedure abfragen?
 
Dem Detlef stimme ich vollkommen zu.
Beim Debuggen breitet soein sinnloser Try-Except-Missbrauch richtig viel Freude. :wall:

Zitat:

Delphi-Quellcode:
Edit1.Clear;

Ich hab mich bei nur einem einzigen Zeichen vertippt, was man schnell ändern könnte,
aber nun darf ich alles neu eingeben, nur weil jemand so nett war alles zu löschen?

DeddyH 27. Mär 2012 09:24

AW: Mehrere Tasten in einer Procedure abfragen?
 
Sehe ich auch so, SelectAll statt Clear wäre evtl. benutzerfreundlicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz