![]() |
TEdit: Eingabe an nächstes Editfeld weitergeben
Hallo,
ich habe mehrere Edit-Felder. In jedes Feld kann eine maximale Anzahl Zeichen eingegeben werden. Wir die maximale Zeichenanzahl erreicht, wird automatisch das nächste Edit-Feld selektiert. Ähnlich verfahre ich mit der Backspace-Taste. Wir die Backspace-Taste an der ersten Position eines Feldes gedrückt, wird das vorherige Edit-Feld selektiert und die Eingabemarke an die letzte Stelle gesetzt. Dafür benutze ich die Events 'Edit.OnKeyPress' und 'Edit.OnEnter'. Wenn in diesem Edit-Feld aber schon die maximale Anzahl Zeichen steht und ich jetzt eine Eingabe mache, dann wird zwar das nächste Feld selektiert, aber die Eingabe ist weg. Wie kann ich diese Eingabe an das nächste Edit-Feld übergeben ? Mike |
Re: TEdit: Eingabe an nächstes Editfeld weitergeben
Code:
Wobei noch darauf zu achten wäre, ob NextEdt auch schon maximal gefüllt ist.
procedure OnKeyPress(...)
var NextEdt: TEdit; begin if length(Edit.Text) = Edit.MaxLength then begin NextEdt := LocateNextEdit; NextEdt.SelStart := length(NextEdt.Text); NextEdt.Text := NextEdt.Text + Key; end; end; |
Re: TEdit: Eingabe an nächstes Editfeld weitergeben
Zitat:
|
Re: TEdit: Eingabe an nächstes Editfeld weitergeben
Zitat:
|
Re: TEdit: Eingabe an nächstes Editfeld weitergeben
An die Message hatte ich auch gedacht, aber das nächste Control in der Tabulatorreihenfolge muss ja kein TEdit sein, das müsste man also ggf. etwas ausbauen.
|
Re: TEdit: Eingabe an nächstes Editfeld weitergeben
[quote="uligerhardt"]
Zitat:
Delphi-Quellcode:
Mir fehlt also der Ansatz, wie ich das nächste Feld ermitteln kann (für tNextEdit).
iLaenge := Length (Trim (TEdit(Sender).Text));
// Länge der vorhandenen Eingabe (!) auf Maximum prüfen if (iLaenge > (TEdit(Sender).MaxLength - 1)) then begin // hier nächstes Editfeld ermitteln und Wert aus 'Key' übergeben // z.B. so //tNextEdit.SelStart := Length (tNextEdit.Text); //tNextEdit.Text := tNextEdit.Text + Key; end else begin // Länge der vorhandenen Eingabe entspricht Maximum minus 1, // deshalb nächstes Feld auswählen // der Wert von Key wird noch ins Editfeld eingetragen if (iLaenge = (TEdit(Sender).MaxLength - 1)) then begin Perform (WM_NEXTDLGCTL, 0, 0); end; end; |
Re: TEdit: Eingabe an nächstes Editfeld weitergeben
Hallo,
Aus der Hilfe: Die Eigenschaft TabOrder gibt die Position des Steuerelements in der Tabulatorreihenfolge der übergeordneten Komponente an. geg: TabOrder des aktuellen TEdit -> TabOrder1 ges: TEdit mit TabOrder > TabOrder1 Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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