![]() |
Leertaste und Funktion
Hallo Netz,
weiß einer von Euch, ob es in Delphi eine Funktion gibt, nach der man erst die Leertaste oder auch eine andere Taste außer Returen betätigen muß, damit dass Programm weiterläuft. Danke Euch! Viele Grüße Kaddy :coder: |
Du meinst, dass die nächste Funktion/Prozedur erst nach einem Tastendruck ausgeführt wird? ja das geht. Mit der Onkeydown oder Onkeyup funktion von z.B. Form1. Da kannst du sagen
Delphi-Quellcode:
man liest sich, Stanlay :firejump:
IF Key = 13 then ShowMessage('Du hast die Leertaste gedrückt');
|
Hallo Stanley,
im OnKeyDown und Press mit if Key = #13 Grüsse, Daniel :hi: |
Moin Kaddy,
ein normales Windowsprogramm wartet sowieso, solange keine Eingabe, in welcher Form auch immer, gemacht wird. Was hast Du denn vor? |
@ daniel: und wann nehm ich dann nur die Zahl. Ich werde noch verrückt mit den sch*** keys. :evil:
Danke. |
Moin Stanlay,
ist doch recht einfach. Schau Dir doch einfach mal die Deklaration der jeweils übergebenen Parameter an. Wenn ein Char gefordert ist (KeyPress) musst Du halt # und die Nummer des Zeichens nehmen, ansonsten die Zahl (oder eben VK_xxxx). |
Der Christian macht mich heute ganz glücklich. da lernt man ja richtig was, hier im Forum. Danke schon wieder. Stanlay :hello:
|
moin,
danke euch. Ich habe verstanden, dass ich eine Procedure mit onkeydown machen muß. Wie bekomme ich nun die zum Laufen. Kann ja nicht mit doppelklick auf den Button starten. Danke! Gruß Kaddy |
die OnKeyxxx Methoden/Prozeduren werden automatisch aufgerufen/ausgeführt wenn die jeweilige Komponenten (einige haben kein OnKeyxx Ereigniss) den Eingabefocus hat und eine Taste gedrückt wird.
|
Geht bei mir leider nicht. Habe mal meinen Code dazugepackt. Vielleicht kann mir ja einer helfen. Danke!
Delphi-Quellcode:
procedure TForm1.Eingabefeldonkeydown(Sender: TObject; var Key: Word;
Shift: TShiftState); var i: integer; j: integer; begin //Eingabe der Maschinendaten Label1.caption:='Anzahl Maschinen eingeben'; if key=13 then begin mac:=strtoint(Eingabefeld.text); end; //Eingabe der Periodenanzahl Label1.caption:='Anzahl Perioden eingeben'; if key=13 then begin per:=strtoint(Eingabefeld.text); end; //Eingabe der Kapazitäten der Maschinen je Periode Label1.Caption:=('Die Kapazitäten der '+inttostr(mac)+ ' eingeben:'); i:=1; j:=1; while i<mac+1 do begin while j<per+1 do begin Label2.Caption:=('Periode '+inttostr(i)+'Maschine'+inttostr(j)); machine[per,mac].cap:=strtoint(Eingabefeld.text); j:=j+1; end; i:=i+1; j:=1; end; end; Gruß Kaddy 8) |
Kann es sein, dass du aus der DOS-Programmierung kommst und dich noch nicht mit Events beschäftigt hast? Also:
Das normale Vorgehen unter Windows wäre, mehrere Edits für die verschiedene Eingaben zu designen. In deinem Fall wären das drei Stück, je eine für Anzahl der Maschinen, Anzahl der Perioden und Kapazität der Maschinen. Danach kann der Nutzer auf einen Button klicken, der die Eingaben bestätigt. Dessen Code könnte dann so aussehen (bin gerade in der Schule und habe kein Delphi vor mir):
Delphi-Quellcode:
Für mehrere verschiedene Kapazitäten, wie es auch im Beispiel war, müsstest du ein TabSheet oder ein ähnliches Control verwenden.
procedure TForm1.Button1Click(Sender: TObject);
begin //Eingabe der Maschinendaten mac:=strtoint(Eingabefeld1.text); //Eingabe der Periodenanzahl per:=strtoint(Eingabefeld2.text); //Eingabe der Kapazitäten der Maschinen je Periode machine.cap:=strtoint(Eingabefeld3.text); Wenn du möchtest, dass der Cursor bei Betätigung von Enter automatisch in das nächste Edit springt, musst du im OnKeyPress-Event des jeweiligen Edits bei Betätigung der Enter-Taste (13) den Tastaturfokus weitergeben. Den passenden Befehl weiß ich leider nicht auswendig (such mal in der Hilfe nach focus/Fokus). Wenn du allerdings ein Konsolenprogramm schreiben willst, kannst du deinen Code benahe unverändert weiternutzen. Du erstellst einfach unter "New->Console Application" oder so ein Kommandozeilenprogramm und benutzt deinen Code als Hauptprogramm. Tipp: Schau mal unter read() oder readln() in der Hilfe nach. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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