![]() |
Edit.SelectAll beim OnEnter - Probleme
Hallo Geimende.
bestimmt ist das total einfach und ich schau nur mal wieder nicht richtig dahinter. Folgendes: Ich habe ein Programm mit mehreren Eingabefeldern (TEdit). Ich habe mir gedacht, dass es für den Anwender bequemer ist, wenn der Text im Eingabefeld beim Reinklicken markiert wird ... analog, wenn man mit der Tab-Taste durchgeht. Das klappt aber irgendwie nicht, obwohl das Ereignis ausgelöst wird:
Delphi-Quellcode:
Wenn ich eine Fehlerabfrage mache geht es doch auch:
procedure TfrmStartseite.EditEnter(Sender: TObject);
begin TEdit(Sender).SelectAll; end;
Delphi-Quellcode:
Verstehe ich nicht. Ich möchte das Markieren aber auch nicht in das OnClick-Ereignis nehmen, weil man ja auch mal irgendwo in den Text oder wie hier in die Telefonnummer klicken möchte, ohne dass gleich der gesamte Text markiert wird.
procedure TfrmStartseite.TelNummerEditChange(Sender: TObject);
begin if Funktionen.isPosNumeric(TEdit(Sender).Text) = false then begin TEdit(Sender).SelectAll; MessageDlg('Bitte geben Sie eine Zahl ein!' + #10 + #13 + 'Bitte korrigieren Sie!' , mtInformation, [mbOK], 0); exit; end; end; :roteyes: könnte mir mal bitte jemand auf die Sprünge helfen. schon mal Danke die Suchende |
Re: Edit.SelectAll beim OnEnter - Probleme
Hallo,
Reihenfolge der Ereignisse: - OnEnter - OnMouseDown MouseDown hebt die Selectierung wieder auf. Also in OnEnter ein Flag setzen und dann entsprechend in OnMouseDown reagieren. |
Re: Edit.SelectAll beim OnEnter - Probleme
Danke für die schnelle Antwort,
so was habe ich schon vermutet/ befürchtet ... dafür jetzt extra noch 'ne globale Variable machen zu müssen ... naja habe übrigens noch was "annormales": im gleichen Programm - meine Editfelder sind auf einem TPageControl untergebracht - betrifft Editfeld auf einer anderen Seite (anderem TabSheet) - diesmal Fehlerabfrage im onExit-Ereignis (nicht im ONCange-Ereignis, wie bei der Telefonnummer)
Delphi-Quellcode:
er geht ordentlich in das Ereignis rein und auch die Auswahl funktioniert. Aber den Text markiert er mir diesmal nicht mit
procedure TfrmStartseite.letzteKalEditExit(Sender: TObject);
begin if Funktionen.isDateTime(letzteKalEdit.Text) = false then begin TEdit(Sender).SetFocus; MessageDlg('Die Eingabe der letzten Kalibrierung ist nicht korrekt!' + #10+#13 + 'Bitte korrigieren Sie!', mtInformation, [mbOK], 0); end; end; TEdit(Sender).SelectAll sondern nur mit TEdit(Sender).SetFocus ? Verstehe ich schon wieder nicht. die Suchende |
Re: Edit.SelectAll beim OnEnter - Probleme
Zitat:
Du könntest aber auch die .Tag eigenschaft des TEdits dazu missbrauchen. Frei nach dem Motto: OnEnter: TEdit(Sender).Tag := 1; OnExit: TEdit(Sender).Tag := 0; OnMouseDown: If (TEdit(Sender).Tag = 1) then TEdit(Sender).SelectAll; Und neue Frage neuer Thread |
Re: Edit.SelectAll beim OnEnter - Probleme
Hallo,
Zitat:
Delphi-Quellcode:
Das "annormales" ist normal :wink:
//OnEnter
Edit.Tag := 1; //OnMouseDown if Edit.Tag = 1 then begin Edit.Tag := 0; Edit.SelectAll; end; SelectAll selektiert auch, Du siehst es nur nicht, weil die Eigenschaft Edit.HideSelection bei dem Edit auf True gesetzt ist. Bei SetFocus greift die Eigenschaft Edit.AutoSelect. //Edit: kein roter Kasten, ehrlich :? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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