Autor Beitrag
marcelrusi
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
if key = VK_Return then ..					


lg

Für diesen Beitrag haben gedankt: marcelrusi
marcelrusi Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 11.01.12 19:02 
Danke schonmal aber kenn mich mit OnKey nicht so aus...

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 11.01.12 19:31 
Ich muss noch irgendwo else if ( also wenn enter nicht gedrückt wird ) einbringen oder ? aber wo ?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 11.01.12 19:49 
user profile iconmarcelrusi hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 11.01.12 19:57 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 11.01.12 20:48 
Dankeschön !

Ja das 2. begin hatte ich vergessen :P Stimmt Edit1Change war unnötig ^^