![]() |
Tastenton bei Tastendruck
Hallo liebe Delphi Praxis,
ich arbeite an einem kleinen Projekt, bei dem ich bei Tastendruck einen kurzen Ton abspielen will (async also so, dass das Programm in der Zeit nicht einfriert). Ersteinmal habe ich ein Großes TRichEdit Feld auf der Form. In den uses steht mmSystem; Im OnKeyDown Ereignis der Form habe ich folgenden Quelltext:
Delphi-Quellcode:
Unerklärlicherweise lässt sich das Programm nich kompilieren und spuckt eine Fehlermeldung Undeklarierter Bezeichner für VK_A (VK_RETURN, also Enter Taste) funktioniert).
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); const FileName = 'leer.wav'; begin if (Key = VK_A) then begin MCISendString(PChar('play ' + FileName), nil, 0, 0); end end; Ich hab es mit VK_RETURN probiert und erfolgreich kompiliert, jedoch kam kein Ton... auch kein Beep-Ton wie bei PlaySound... Ich hoffe einer der hellen Köpfe kann mir helfen, bitte ausführlich und verständlich, sprich bitte mit Quelltext =) Ich bin nicht der Ober-Programmierer. _____________________ Vielen Dank Dunkelbunt |
AW: Tastenton bei Tastendruck
Die Konstanten VK_A etc. sind wohl nirgends definiert. Aber du kannst anstelle von VK_A auch einfach Ord('A') schreiben. Da weiß auch jeder was gemeint ist.
Warum verwendest du eigentlich nicht "PlaySound" wenn es bisher damit funktioniert hat? |
AW: Tastenton bei Tastendruck
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel, wie man die Ziffern 0 bis 9 sprechen lassen kann.
Delphi-Quellcode:
Das Archiv im Anhang enthält die 10 Wave-Dateien.
uses ..., MMSystem {benötigt für PlaySound()};
function ApplicationPath: string; // Hilfsfunktion begin Result := ExtractFilePath(ParamStr(0)); end; procedure TFrmTest.EditLieferscheinNrKeyPress(Sender: TObject; var Key: Char); var s:string; begin if Key in ['0'..'9'] then begin // Wave-Datei liegen im Unter-Verzeichnis "Wave" // also "0.wav" bis "9.wav" s := ApplicationPath+'Wave\'+ Key+'.WAV'; PlaySound(PChar(s), 0, SND_FILENAME or SND_ASYNC); end; end; |
AW: Tastenton bei Tastendruck
Danke für die Antworten,
ich probiere beide aus. Ergebnis dann im EDIT =) EDIT: Ich habe das Nummern-Sprechprogramm versucht. Ersteinmal will ich fragen ob es nur bei mir so ist, dass die Wav Dateien irgendwie abgehackt klingen also Fün.... statt Fünf. Außerdem: bei mir kommt ersteinmal nur ein Beep Ton =( Schreibe ich meine Zahlen in ein EditFeld, passiert auch nichts =( Woran kanns liegen? Ich habe genau den Quelltext benutzt...
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, mmSystem, StdCtrls; type TForm1 = class(TForm) procedure FormKeyPress(Sender: TObject; var Key: Char); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} function ApplicationPath: string; // Hilfsfunktion begin Result := ExtractFilePath(ParamStr(0)); end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); var s:string; begin if Key in ['0'..'9'] then begin // Wave-Datei liegen im Unter-Verzeichnis "Wave" // also "0.wav" bis "9.wav" s := ApplicationPath+'Wave\'+ Key+'.WAV'; PlaySound(PChar(s), 0, SND_FILENAME or SND_ASYNC); end; end; end. |
AW: Tastenton bei Tastendruck
Setze entweder Form.Keypreview auf true, oder häng das Ereignis OnKeypress auch an Dein Edit.
0.wav ist kaputt deshalb der Beep. Abgehackt klingt es weil die Eingabe einer neuen Zahl die Soundausgabe der vorherigen unterbricht. |
AW: Tastenton bei Tastendruck
Du hast mich falsch verstanden, es kommt kein Ton im Programm. Ich habe mir die Sounds als datei mit Vlcplayer angehört...
EDIT: Nachdem ich Form.Keypreview auf True gesetzt habe kommt jetz immer ein Beep-Ton (bei 0-9) |
AW: Tastenton bei Tastendruck
Ich habe das Problem jetz gelöst.
Es lag lediglich daran, dass die OnKeyPress Prozedur der Form nur anspringt, wenn keine Edit Box da ist. Ich hab das ganze für die TRichEdit eingestellt und alles klappt super! Danke für eure Hilfe! :dp: ________________________________ Viele Grüße, Dunkelbunt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz