Entwickler-Ecke
Sonstiges (Delphi) - Text im Editfeld mit Entertaste bestätigen
marcelrusi - Mi 11.01.12 18:37
Titel: Text im Editfeld mit Entertaste bestätigen
Hallo Leute,
folgendes Problem :
Habe ein Programm erstellt, dass einen Ton abspielt, wenn im Editfeld '1' steht und einen anderen abspielt, wenn im Feld '10' steht. Leider wird bereits der Ton für '1' abgespielt, wenn ich die '10' eingeben will ( da man ja 1 zuerst eingibt ). Kann man das Programm so schreiben, dass der Ton erst gespielt wird, wenn die Eingabe mit z.b. der Entertaste bestätigt wird ?
HenryHux - Mi 11.01.12 18:46
Du kannst neben dem OnChange Ereignis auch das OnKey Ereignis wählen,
in dem kannst du dann z.B. so auf die Entertaste reagieren:
Delphi-Quelltext
1:
| if key = VK_Return then .. |
lg
marcelrusi - Mi 11.01.12 19:02
Danke schonmal aber kenn mich mit OnKey nicht so aus...
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = VK_Return then if Edit1.Text = '1' then PlaySound(PChar('1.wav'), hInstance, SND_ASYNC);... |
ist jetzt mein Quellcode. Klappt aber nicht :P Bekomme den Fehler 'Inkompatible Typen'. Was muss ich ändern ?
HenryHux - Mi 11.01.12 19:13
Tut mir leid, habe mich nicht genau ausgedrückt.
Du benutzt das KeyPress Event, jedoch brauchst du das KeyDown Event für diese Methode.
lg :)
marcelrusi - Mi 11.01.12 19:25
Okay jetzt klappts schonma, dass der Ton gespielt wird, wenn ich Enter drücke, aber der Ton wird trotzdem noch während des Eingebens gespielt...
marcelrusi - Mi 11.01.12 19:31
Ich muss noch irgendwo else if ( also wenn enter nicht gedrückt wird ) einbringen oder ? aber wo ?
jaenicke - Mi 11.01.12 19:49
marcelrusi hat folgendes geschrieben : |
| Okay jetzt klappts schonma, dass der Ton gespielt wird, wenn ich Enter drücke, aber der Ton wird trotzdem noch während des Eingebens gespielt... |
Wie sieht denn der Code aus?
Irgendetwas musst du machen, auch wenn nicht Enter gedrückt wurde, sonst würde das nicht passieren.
marcelrusi - Mi 11.01.12 19:57
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_Return then if Edit1.Text = '1' then PlaySound(PChar('1.wav'), hInstance, SND_ASYNC); ... if Edit1.Text = '10' then PlaySound(PChar('10.wav'), hInstance, SND_ASYNC); end;
procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text = '1' then PlaySound(PChar('1.wav'), hInstance, SND_ASYNC); ... if Edit1.Text = '10' then PlaySound(PChar('10.wav'), hInstance, SND_ASYNC); end;
end. |
Ist jetz gekürzt hab das mit weitaus mehr Tönen aber die Anzahl tut ja nicht zur Sache...
Lemmy - Mi 11.01.12 20:38
Hi,
ich weiß Du bist ein Anfänger, aber so weit solltest Du doch mitdenken können: WEnn bei der Eingabe (verändern - change) schon was kommt - was ist wohl die Aufgabe von Edit1OnChange?
GRüße
jaenicke - Mi 11.01.12 20:38
Überlege doch einmal was du da tust...
In Edit1KeyDown führst du den Code aus, wenn Enter gedrückt wird. So weit so gut. Aber was ist mit Edit1Change?
Außerdem ist dir hoffentlich klar, dass dein Code nicht das selbe ist wie der:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_Return then begin if Edit1.Text = '1' then PlaySound(PChar('1.wav'), hInstance, SND_ASYNC); ... if Edit1.Text = '10' then PlaySound(PChar('10.wav'), hInstance, SND_ASYNC); end; end; |
(Und das ist wohl eher was du meinst....)
marcelrusi - Mi 11.01.12 20:48
Dankeschön !
Ja das 2. begin hatte ich vergessen :P Stimmt Edit1Change war unnötig ^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!