AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TEdit: Eingabe an nächstes Editfeld weitergeben

TEdit: Eingabe an nächstes Editfeld weitergeben

Ein Thema von Mike_on_Tour · begonnen am 9. Dez 2008 · letzter Beitrag vom 18. Dez 2008
Antwort Antwort
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TEdit: Eingabe an nächstes Editfeld weitergeben

  Alt 9. Dez 2008, 12:52
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
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von nachti1505
nachti1505

Registriert seit: 7. Apr 2007
188 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TEdit: Eingabe an nächstes Editfeld weitergeben

  Alt 9. Dez 2008, 13:44
Code:
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;
Wobei noch darauf zu achten wäre, ob NextEdt auch schon maximal gefüllt ist.
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: TEdit: Eingabe an nächstes Editfeld weitergeben

  Alt 17. Dez 2008, 13:06
Zitat von nachti1505:
Code:
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;
Sorry, das ich nicht gleich geantwortet habe. Das Prinzip ist mir klar, aber mit dem 'LocateNextEdit' komme ich nicht weiter. Da könnte ich noch etwas Hilfe gebrauchen.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TEdit: Eingabe an nächstes Editfeld weitergeben

  Alt 17. Dez 2008, 13:25
Zitat von Mike_on_Tour:
Das Prinzip ist mir klar, aber mit dem 'LocateNextEdit' komme ich nicht weiter. Da könnte ich noch etwas Hilfe gebrauchen.
Vielleicht WM_NEXTDLGCTL?
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: TEdit: Eingabe an nächstes Editfeld weitergeben

  Alt 17. Dez 2008, 13:27
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: TEdit: Eingabe an nächstes Editfeld weitergeben

  Alt 17. Dez 2008, 13:45
[quote="uligerhardt"]
Zitat von Mike_on_Tour:
Vielleicht WM_NEXTDLGCTL?
OK, das mache ich ja schon. Zum besseren Verständnis hier mal etwas Code:
Delphi-Quellcode:
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;
Mir fehlt also der Ansatz, wie ich das nächste Feld ermitteln kann (für tNextEdit).
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: TEdit: Eingabe an nächstes Editfeld weitergeben

  Alt 18. Dez 2008, 07:44
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
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz