![]() |
Mit der Enter Taste in die nächste TextBox navigieren!?
Guten Abend zusammen!
Ich bin neu hier im Forum, wahrscheinlich auch, weil ich erst seit relativ kurzer Zeit programmiere. Nun habe ich Delphi 8 für das Microsoft .NET und schon ein bisschen von meinem ersten Programm geschafft. Es fehlt noch besonders an den Feinheiten. Da die Personen, die dieses Programm nutzen sollen es gewohnt sind, mit der Enter Taste am Ziffernblock durch die einzelnen Eingabefelder zu springen, wäre es natürlich sehr Vorteilhaft, wenn das neue Programm diese Funktion auch unterstützen würde. Ich versuche seit zwei Tagen nun dies umzusetzen, komme aber zu keinem funktionierendem Ergebnis. Wenn ich den Code nutzen möchte, den man als einer der Ersten im Netz findet, scheitert es schon an der ersten Zeile. Zum Beispiel der Folgende:
Delphi-Quellcode:
Diesen habe ich mir als Erstes auf meine TextBox5 angepasst, in der ich dieses als erstes ausprobieren wollte.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if Key = #13 then begin Key := #0; { check if SHIFT - Key is pressed } if GetKeyState(VK_Shift) and $8000 <> 0 then PostMessage(Handle, WM_NEXTDLGCTL, 1, 0) else PostMessage(Handle, WM_NEXTDLGCTL, 0, 0); end; end; Dies sah dann so aus:
Delphi-Quellcode:
Dann ist natürlich erst einmal die Frage, ob der erste Teil schon falsch ist.
procedure TWinForm.TextBox5_KeyPress(sender: System.Object; var Key: Char; e: System.Windows.Forms.KeyPressEventArgs);
Es scheitert auf jeden Fall spätestens bei "var Key: Char", da dies nicht automatisch eingefügt wird, wenn man im Objekt Inspektor auf KeyPress klickt, ist die Deklaration beim nachträglichen eintragen unterschiedlich als die eigentliche Deklaration von der TextBox5_KeyPress prozedure. Eine zusätzliche Frage ist dann auch noch das setzten von KeyPreview auf true. Woe muss ich dann die zeile TextBox5.KeyPreview := True, wenn sie so korrekt ist einfügen? Ich bin leider wirklich noch ziemlicher Anfänger. Ich habe zwar jetzt schon einige Tutorials durch, allerdings fehlen trotzdem auch noch Grundlagen. Würde mich sehr freuen, wenn mir trotzdem jemand helfen würde! Viele Grüße, by Michael |
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Hallo Michael,
zuerst einmal: Herzlich Willkommen in der Delphi-PRAXiS. Es muss im Form1 die Eigenschaft: KeyPreview auf TRUE gesetzt werden. Mit folgendem Code kann man sich dann, mit der ENTER- oder TAB- Taste zu den Eingabe-Felder weiter bewegen.
Delphi-Quellcode:
Bis bald Chemiker
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if key = #13 then Self.Perform(WM_NEXTDLGCTL, 0, 0); end; |
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Zitat:
in Deiner Situation möchte ich Dich Off-Topic auf ein paar Punkte hinweisen.
PS an alle Delphianer: Für Win32-Anwendungen ist Delphi (trotz aller Unklarheiten) offensichtlich weiterhin hochaktuell und geeignet. Aber für NET scheinen mir eine solche Warnung und Empfehlung zum Wechsel leider angebracht. |
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Guten Morgen!
Danke erstmal für eure Antworten! :) Leider funktioniert die Methode von Chemiker auch nicht. Ich habe in der Form1 KeyPreview auf true gestellt. Aber bei den Code kommen trotzdem noch vier Fehlermeldungen. Liegt es vielleicht daran, dass sich die Eingabefelder in einem TabControl befinden? Muss man dann etwas spezielleres machen? @ Jürgen: Das Problem ist, dass wir Delphi komerziell Nutzen. Mein Chef hat mit Delphi angefangen. Daher haben wir nun auch Borland Delphi 8 für das Microsoft .NET Framework. Es ist dann nicht so einfach alles auf C# umzustellen. Für mich als Anfänger ist das natürlich noch praktisch, allerdings wird eher darauf bestanden bei Delphi zu bleiben. Mein Chef hat zwar noch nicht mit WinForms gearbeitet, möchte allerdings, auch sein Programm irgendwann in solche implementieren, wofür er auch eigentlich Delphi 8 gekauft hat. Was ich damit sagen will ist, dass ich alles dafür tun sollte, dass ich das Programm in Delphi ans laufen bekomme. trotzdem danke für den gut gemeinten Tip! Viele Grüße Michael N. |
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Zitat:
|
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Hallo Michael,
nun ja, wenn man von solchen Kriterien abhängig ist, dann geht es natürlich nicht anders. Aber auch dann bleibt meine dringende Empfehlung (an den Chef), wenigstens auf Delphi 2006 zu wechseln (oder 2007, bitte nach Informationen im Forum oder bei CodeGear suchen): Delphi 8 kann für NET meines Wissens nach nicht mit der IDE arbeiten; und die IDE ist doch eine große Arbeitserleichterung. Zum eigentlichen Thema: In der Tat fehlen die Fehlermeldungen; denn eigentlich ist die Antwort von Chemiker korrekt. Ich möchte sie aber wie folgt ergänzen:
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if key = #13 then begin // "normale" Delphi-Methode verwenden ohne Windows-Konstante: SelectNext(ActiveControl, true, true); // anstelle von Self.Perform(WM_NEXTDLGCTL, 0, 0); // Eingabe zurücksetzen, damit sie nicht weiter bearbeitet wird key := #0; end; end; ![]() Zitat:
|
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Zitat:
edit: 300. Beitrag :party: |
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Hallo Michael,
Ich habe Deinen Beitrag leider nicht sorgfältig genug durchgelesen. Währ lesen kann ist klar im Vorteil. Habe leider übersehen das du mit Delphi.NET programmierst. Vielleicht hilft Dir das weiter:
Delphi-Quellcode:
Ob das unter Delphi 8 funktioniert kann ich leider nicht prüfen.
procedure TWinForm.TWinForm_KeyPress(sender: System.Object; e: System.Windows.Forms.KeyPressEventArgs);
begin if e.KeyChar = #13 then begin e.Handled:= true; SelectNextControl(ActiveControl,TRUE,TRUE,TRUE,TRUE); end; end; Bis bald Chemiker |
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Hallo nochmal zusammen,
finde es wirklich super, das ihr euch dem Problem antut und mir helfen möchtet, echt Klasse! Findet man lange nicht in jedem Forum, dass Anfängern geholfen wird. ich habe es jetzt nochmal mit der Version von Jürgen versucht dabei treten Folgende Fehler auf, welche bei den Messages angezeigt werden: Undeklarierter Bezeichner: 'ActiveControl'
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
//';' erwartet aber '.' gefunden ';' erwartet aber ')' gefunden begin if key = #13 then begin SelectNext(ActiveControl, true, true); //undefinierter Bezeichner: 'SelectNext' Undefinierter Bezeichner: 'ActiveControl' key := #0; end; end; Ich bin bisher immer davon ausgegangen, dass ich "TForm1" in den Namen der TextBox ändern muss, glaube aber jetzt verstanden zu haben, dass dieser Code nur für die "Hauptform" eingebracht werden muss, und dieser dann für alle TextBoxen auf der Form gilt. Ist das richtig? Müsste ich dann "TForm1" in "TWinForm" umändern, da das Fenster so heißt, oder muss ich es vielleicht in den Namen des TabControls ändern, da sich alle textboxen ja eigentlich in dem Tabcontrol befinden? Ich weiß, das sind wohl eher Fragen zu erweiterten Grundlagen, allerdings muss man auch diese ertsmal kennenlernen. Habe leider in den bisherigen Tutorials, die ich gemacht habe keine Antwort darauf gefunden. Ich werde bei nächster Gelegenheit mal meinen Chef darauf ansprechen, für das nächste Projekt dann doch eher eine der neueren Delphiversionen von Codegear nutzen zu können. Noch eine Korrektur meines vorhergehenden Postings. Wir nutzen Delphi nicht um komerzielle Programme zu schreiben, möchten diese also nicht verkaufen, sie sollen jedoch in einem Unternehmen genuzt werden. Wie sieht das dabei mit den Rechten aus? P.S.: Glückwunsch zum 300.! ;) :D Grüße aus der halbsonnigen Eifel, by Michael |
Re: Mit der Enter Taste in die nächste TextBox navigieren!?
Hups, jetzt hab ich das Alte doch abgeschickt..
Sorry für das Doppelposting! Aber ich denke so bleibts Übersichtlicher. Chemiker!? Ich nenn dich Gott! :D Vielen vielen lieben Dank!! Es funktioniert einwandfrei! Echt super! Auch nochmal vielen Dank an die Anderen! Habt mir alle sehr geholfen! Wirklich ein Klasse Forum, habe mich ja auch schon durch andere Probleme mit der Forensuche gesucht. Hierbleibende Grüße by Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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