Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - TEdit.onKeyDown=>beep?
saite - Do 21.10.04 18:51
Titel: TEdit.onKeyDown=>beep?
Hi!
Wie kann man abstellen, dass wenn man ein Edit feld hat und man dem dingen nen onKeyDown ereignis zuweist, es ein beep gibt?
grz
saite
jasocul - Do 21.10.04 19:29
zeich mal source
F34r0fTh3D4rk - Do 21.10.04 19:36
Zitat Delphi Helper:
Wenn man im Editfeld auf Enter drückt ertönt - wenn diese Funktion in Windows eingeschaltet ist - ein Beep-Ton. Dieser kann unterdrückt werden.
Schreibe ins OnKeyPress-Ereignis des Editfelds:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then Key:=#0; end;
#13 ist das ASCII Zeichen für die Entertaste. |
aber dann wird glaube ich auch die Entertaste deaktiviert und bei den anderen
beept es dann trotzdem :(
Luzzifus - Do 21.10.04 19:40
F34r0fTh3D4rk hat folgendes geschrieben: |
Schreibe ins OnKeyPress-Ereignis des Editfelds:
Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then Key:=#0; end;[/delphi] #13 ist das ASCII Zeichen für die Entertaste. |
aber dann wird glaube ich auch die Entertaste deaktiviert und bei den anderen
beept es dann trotzdem :( |
nicht unbedingt.
Wenn man das so schreibt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then begin ... Key:=#0; end; |
Dann sollte man zumindest noch sagen können, was passieren soll wenn Enter gedrückt wird. Wäre auf jedenfall nen Versuch wert. :)
saite - Fr 22.10.04 01:16
cool! danke.
ich werds versuchen, und dann berichten, ob's alles funzt;)
grz
saite
edit:
muss man eigentlich das '#' vor die (z.b.) 13 schreiben? also if Key=#13?
weil bei mir funzt es auch so: if Key=13 then...
was ist der unterschied?
saite - Fr 22.10.04 01:25
hmm... also wenn ich es so mache:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.txt_key(Sender: TObject; var Key: Word; Shift: TShiftState); begin if btn_loesen.Enabled=true then begin if Key=13 then begin if btn_weiter.Enabled then btn_weiter.OnClick(self) else begin if Length(en.Text)>0 then btn_antworten.OnClick(self) else messagedlg('Sie haben keine Übersetzung eingegeben', mtInformation, [mbOk],0) end; Key:=0 end end end;
...
en := TEdit.Create(Form_abfrage); with en do begin ... onKeyDown:=txt_key; end; ... |
...dann machts immer noch beep...
wenn ichs so mache:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.txt_key(Sender: TObject; var Key: Word; Shift: TShiftState); begin if btn_loesen.Enabled=true then begin if Key=#13 then begin if btn_weiter.Enabled then btn_weiter.OnClick(self) else begin if Length(en.Text)>0 then btn_antworten.OnClick(self) else messagedlg('Sie haben keine Übersetzung eingegeben', mtInformation, [mbOk],0) end; Key:=#0 end end end;
...
en := TEdit.Create(Form_abfrage); with en do begin ... onKeyDown:=txt_key; end; ... |
...dann bekomme ich die fehlermeldungen:
[Fehler] Unit1.pas(481): Inkompatible Typen
[Fehler] Unit1.pas(492): Inkompatible Typen: 'Word' und 'Char'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
wobei sich die fehler auf die zeilen mit dem Key=#13 und Key:=#0 beziehen!
und nu???
Nagelbrett - Fr 22.10.04 08:03
liegt daran, dass du im onKeyDown event bist. Die anderen sprachen jedoch von onKeyPress, also probier es mal dort :)
saite - Sa 23.10.04 12:09
jo, so funktioniert es.
Danke an alle :wink:
grz
saite
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!