![]() |
Problem mit Aktualisierung von Eigenschaften von TEdit
Der Titel ist schlecht gewählt, lässt sich nur ausführlich erklären:
Mein Ziel: 3 TEdit Felder, becshriftet mit Edit1: Altes Passwort Edit2: Neues Passwort, Edit3: Neues Passwort wiederholen. soweit kein Problem. Wenn jetzt ein Edit zum schreiben ausgewählt wird, dann soll der Standardtext verschwinden und passwordchar auf * gesetzt werden. Soweit auch kein Problem. Wenn das Feld beschriftet wird, wird der text nicht resettet und der PasswordCHar bleibt leer. Wenn das Feld aber leer gelassen wird und abgewählt wird, solls resettet werden - PasswordChar aus, text auf Standard zurücksetzten. So weit, so gut. Die Funktionen die das bewirken, stehen im OnClick- und im OnMouseOver-Ereignis, und sehen etwa so aus:
Delphi-Quellcode:
Jetzt kommt das Problem:
procedure TForm3.Edit1Select(Sender: TObject);
begin if Edit1.text = 'Altes Passwort' then begin Edit1.Text:= ''; Edit1.PasswordChar:= '*'; end; if ((Edit2.Text = '') or (Edit2.Text = 'Neues Passwort')) then begin Edit2.Text:= 'Neues Passwort'; Edit2.PasswordChar:= #0; end else begin Edit2.PasswordChar:= '*'; end; if ((Edit3.Text = '') or (Edit3.Text = 'Neues Passwort wiederholen')) then begin Edit3.Text:= 'Neues Passwort wiederholen'; Edit3.PasswordChar:= #0; end else begin Edit3.PasswordChar:= '*'; end; end; Wenn ich in Edit1 bin, und die TAB-Taste benutze, um ins nächste Edit zu springen, passiert - logischerweise - nichts, und das Passwort ist einfach sichtbar, was natürlich nicht sein darf. Hat jemand eine Idee, wie ich den Sprung mit der TAB-Taste mit einbauen kann? |
Re: Problem mit Aktualisierung von Eigenschaften von TEdit
Hi,
du könntest zum Zurücksetzen das OnExit-Ereignis und zum Aktivieren von passwordchar das OnEnter oder KeyPress-Ereignis verwenden. |
Re: Problem mit Aktualisierung von Eigenschaften von TEdit
Danke, funktioniert 1a!
Habe noch eine Frage, wenn ich jetzt das Menu mit den drei Edits öffne, ist das erste schon immer ausgewählt/aktiviert, sodass der text nicht mehr angezeigt wird! Gibts da irgendeine Eigenschaft (wie bei Button default), die festlegt, ob ein Edit schon gewählt ist? Wenn nicht wirds wohl irgendwo am COde liegen... |
Re: Problem mit Aktualisierung von Eigenschaften von TEdit
Du kannst die Tabreihenfolge entsprechend ändern, aber das ist eher eine Notlösung. Das erste Steuerelement in der Tabreihenfolge bekommt am Anfang den Fokus.
Verleg doch lieber deinen Code vom OnEnter ins OnKeyPress (evtl. auch OnKeyDown), so dass du den Vorgabetext erst beim ersten Tastendruck löschst. |
Re: Problem mit Aktualisierung von Eigenschaften von TEdit
Zitat:
Von OnEnter nach OnKeyDown/Press ist nicht gut, denn wenn der Text noch da ist, während man den Fokus schon auf das Edit gesetzt hat, wird jeder User erstmal den Text markieren und löschen. Der Text muss wirklich direkt verschwinden, sobald jemand im Begriff ist, etwas reinzuschreiben. So, ist gelöst! Einfach die Eigenschaft Edit.tabstop auf false setzen, dann wird nichts mehr fokussiert. Kleiner Nachteil - man kann den Text nicht mehr markieren, aber das ist mir an dieser Stelle egal! Nochmal vielen Dank, Niko! |
Re: Problem mit Aktualisierung von Eigenschaften von TEdit
Zitat:
Richtig wäre OnEnter = Feld wird betreten, gleichgültig ob mit Maus oder Tastatur OnExit = Feld wird verlassen |
Re: Problem mit Aktualisierung von Eigenschaften von TEdit
Zitat:
Auf jeden Fall ein Danke an euch beide! :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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 by Thomas Breitkreuz