| Autor |
Beitrag |
marcelrusi
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 11.01.12 18:37
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
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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
Für diesen Beitrag haben gedankt: marcelrusi
|
|
marcelrusi 
Hält's aus hier
Beiträge: 10
|
Verfasst: 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  Bekomme den Fehler 'Inkompatible Typen'. Was muss ich ändern ?
|
|
HenryHux
      
Beiträge: 542
Erhaltene Danke: 33
Windows 7 Premium
Delphi XE, Eclipse
|
Verfasst: 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 
Für diesen Beitrag haben gedankt: marcelrusi
|
|
marcelrusi 
Hält's aus hier
Beiträge: 10
|
Verfasst: 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 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 11.01.12 19:31
Ich muss noch irgendwo else if ( also wenn enter nicht gedrückt wird ) einbringen oder ? aber wo ?
|
|
jaenicke
      
Beiträge: 19338
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
Hält's aus hier
Beiträge: 10
|
Verfasst: 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
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: 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
      
Beiträge: 19338
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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....)
Für diesen Beitrag haben gedankt: marcelrusi
|
|
marcelrusi 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 11.01.12 20:48
Dankeschön !
Ja das 2. begin hatte ich vergessen  Stimmt Edit1Change war unnötig ^^
|
|