Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - probekm mit OnKeyUp


csigg - Di 12.07.05 14:06
Titel: probekm mit OnKeyUp
ich hab folgenden Quellcode:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure Tfrm_Main.edtMitarbeiterSuchenKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Sender = edtMitarbeiterSuchen then
  begin
       if key = 13 then
       begin
         prc_Mitarbeiter_Suchen;
          edtMitarbeiterSuchen.Text:='';
       end;
  end;
 if Sender = edtSpezialistSuchen then
  begin
       if key = 13 then
       begin
          tbSpezialistsuchen.Click;
          edtSpezialistsuchen.Text := '';
       end;
  end;

Wenn jetzt allerdings in dem TEdit edtmitarbeitersuchen nix eingegeben wurde, dann wird in prc_Mitarbeiter_Suchen ein MessageDlg gestartet mit der Meldung 'kein Name angegeben'. Diese Meldung muss mit klick auf OK bestätigt werden. Wenn ich allerdings jetzt ENTER drücke, was bei einem MessageDlg ja ohne Probleme funktioniert, dann wird sofort wieder die prc_mitarbeiter_suchen gestartet, weiss jemand woran das liegt, bzw. wie ich das unterbinden kann??


iKilledKenny - Di 12.07.05 15:41

versuchs mal mit


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure Tfrm_Main.edtMitarbeiterSuchenKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Sender = edtMitarbeiterSuchen then
  begin
       if key = 13 then
       begin
         key := #0;
         prc_Mitarbeiter_Suchen;
          edtMitarbeiterSuchen.Text:='';
       end;
  end;
 if Sender = edtSpezialistSuchen then
  begin
       if key = 13 then
       begin
          key := #0;
          tbSpezialistsuchen.Click;
          edtSpezialistsuchen.Text := '';
       end;
  end;


ist ungetestet, müsste aber dein problem lösen.

viele grüße
alex


csigg - Di 12.07.05 15:58

also ich habs jetzt so mal ausprobiert, funktioniert aber nicht wirklich.


Alstar - Di 12.07.05 16:04

Hi!
Setze mal das "Key := #0" hinter die Prozedur, die die MessageBox aufruft! Dann sollte es klappen.

Alstar


csigg - Di 12.07.05 16:09

das geht nicht, weil da Key nicht definiert ist, und ich weiss nicht wie ich ihn da definieren kann


Heiko - Di 12.07.05 16:11

Am besten schicke uns mal dein Programm (als Beitragsanhang).


csigg - Di 12.07.05 16:14

das kann ich nicht, ich kann das programm weder schicken noch hochladen, aber ich schau dass ich es heut abend von daheim aus hochlade. Falls bis dahin noch niemand auf eine andere Idee gekommen ist. *g*


Alstar - Di 12.07.05 16:14

user profile iconcsigg hat folgendes geschrieben:
das geht nicht, weil da Key nicht definiert ist, und ich weiss nicht wie ich ihn da definieren kann

Nein! Nicht in die betreffende Prozedur nach der MessageBox, sondern in deiner Prozedur nach diesem ...

Delphi-Quelltext
1:
prc_Mitarbeiter_Suchen;                    


Alstar


csigg - Di 12.07.05 16:26

ich habs, war sehr einfach *g*
den ganzen Code von oben in OnKeyDown und das key=0 in OnKeyUp