![]() |
gibt es eine Funktion, die das Ausführen einer Prozedure ...
Hallo
ich wollte mal wissen, ob es eine Funktion/ Prozedure gibt in Delphi, die überprüfen kann, ob eine andere Funktion ausgeführt wird oder nicht. Wahrscheinlich fragt ihr euch gerade was meint er?? Also folgendes: Ich möchte in einem Edit überprüfen ob die onkeydown-Funktion für die Delete-Taste wahr ist (also gedrückt ist) oder falsch (ist nicht gedrückt). Ich weiß zu diesem Thema wurde schon viel gepostet, die meisten haben mit key: word auch anscheinend ein ausreichendes Ergebnis erreicht. Die mir zur verfügungstehende Funktion unterstützt aber nur key: Char. Ich habe eine ähnliche Funktion gefunnden Assigned, aber mit der noch nicht wirklich viel anfangen können. Hoffe ihr könnt mir wieder helfen. Danke |
Re: gibt es eine Funktion, die das Ausführen einer Prozedure
Wenn du dich nicht gerade in ihr befindest, wird diese nicht ausgeführt.
|
Re: gibt es eine Funktion, die das Ausführen einer Prozedure
Zitat:
Wenn die Taste gedrückt wird, dann wird dieses Event (die Funktion ist 'nur' der Eventhandler) einmal (kurz) ausgeführt. Das heisst, auch wenn die Taste noch weiter gedrückt wird: Die Funktion wurde nur einmal direkt beim Event (also beim Drücken selber) ausgeführt und danach eben nicht mehr. Eine Idee wäre es, im OnKeyDown Event, wenn Delete gedrückt wurde, ein Flag zu setzen. IsDeletePressed := true; Und im OnKeyUp-Event, wenn die Taste eben wieder losgelassen wurde, das Flag auf false zurück zu setzen. Hier gibts auch noch ein paar Hintergrundinfos zu den Key Events: ![]() |
Re: gibt es eine Funktion, die das Ausführen einer Prozedure
Zitat:
|
Re: gibt es eine Funktion, die das Ausführen einer Prozedure
Wenn du irgendetwas ausführen möchtest wenn die Delete-Taste gedrückt wird, packst du einfach in das OnKeyDown-Event vom edit-feld:
Code:
für die f-tasten, etc. guckst du z.B. unter
if key = vk_delete then
tut irgendwas ![]() Gruß tr909 |
Re: gibt es eine Funktion, die das Ausführen einer Prozedure
Hallo!
Zitat:
Anders sieht es aus, wenn Du Dein Programm in mehrere Threads aufteilst, welche neben dem Hauptthread Berechnungen durchführen. Dann wird (vorausgesetzt Du hast entsprechend viele CPU-Kerne wie Threads) wirklich simultan an mehrerern Stellen des Programmcodes gewerkelt. Mit nur einem CPU-Kern wird nach wie vor alles schön hintereinander berechnet. Dein Problem mit den "nicht erkannten Tasten in einem Editfeld" rührt daher, dass das Editfeld die entsprechenden Windows-Messages der Tastendrücke für sich vereinnahmt, das Programm nichts davon mitkriegt. Was hast Du vor, wo liegt Dein Problem? |
Re: gibt es eine Funktion, die das Ausführen einer Prozedure
Hallo noch mal an alle,
Hat zwar etwas gedauert aber mit euren Hinweisen und etwas probieren und lesen hat es nun geklappt. Bei der onkeydown-Funktion das Edit-Fensters wird im gegensatz zur onkeypress-Funktion das Key als Word und nicht als Char übergeben. So konnte ich das vk_delete benutzen und es funktioniert. Für andere die das gleiche Problem haben hier die endgültige Version:
Delphi-Quellcode:
Wie gesagt, wichtig war bei mir die Initialisierung des Keys als Word und nicht als Char.procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var iIndex, iTemp: integer; begin if key = vk_delete then begin //Löscht einen markierten Bereich im Editfenster (Vorraussetzung es ist etwas markiert!!) if Edit1.SelLength >0 then begin iEditpos := Edit1.SelStart; for iTemp := 0 to Edit1.SelLength - 1 do if Tisch[iIndex].sEditWert[iTemp] = #44 then Tisch[iIndex].bTastenregistrierung := false; delete(Tisch[iIndex].sEditWert,Edit1.SelStart+1,Edit1.SelLength); end //Löscht das Zeichen nach dem Cursor (Voraussetzung es ist nichts markiert) else begin iEditPos := Edit1.SelStart - 1; if Tisch[iIndex].sEditWert[Edit1.SelStart] = #44 then Tisch[iIndex].bTastenregistrierung := false; delete(Tisch[iIndex].sEditWert,Edit1.SelStart+1,1); iEditPos := iEditPos + 1; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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