![]() |
TEdit komplett markieren bei Mausklick
Hallo!
Ich hätte gerne, dass ein TEdit-Feld erstmal alles markiert wenn der User draufclickt. (So dass man drauflosschreiben kann um den Inhalt zu überschreiben und nicht erst alles markieren muss) Erst wenn das Edit schon den Fokus hat und mann nochmal klickt soll nur der Mauscursor zu sehen sein. (so verhält sich z.B. die Addressleiste beim Firefox) Wie mach ist das? (SelectAll in OnEnter aufrufen tut's beispielsweise nicht) Danke! Ralf |
Re: TEdit komplett markieren bei Mausklick
Delphi-Quellcode:
Hoffe das hilft??
SendMessage(Edit1.handle, EM_SETSEL, 0, -1);
|
Re: TEdit komplett markieren bei Mausklick
Delphi-Quellcode:
procedure TForm1.Edit1Click(Sender: TObject);
begin with (Sender as TEdit) do begin if Tag = 0 then begin Perform(EM_SETSEL, 0, -1); Tag := 1; end; end; end; procedure TForm1.Edit1Exit(Sender: TObject); begin (Sender as TEdit).Tag := 0; end; |
Re: TEdit komplett markieren bei Mausklick
Danke!
Ein
Delphi-Quellcode:
in den OnEnter-Event uns alles ist gut.
PostMessage(Edit1.handle, EM_SETSEL, 0, -1);
|
Re: TEdit komplett markieren bei Mausklick
Wie wäre es einfach mit .AutoSelect auf True setzen und alles is Gut? :stupid:
|
Re: TEdit komplett markieren bei Mausklick
Zitat:
Zitat:
|
Re: TEdit komplett markieren bei Mausklick
es wird alles markiert, sobald das Edit den Focus bekommt und bei einem weiteren Klicken passiert nichts mehr,
also genauso wie er es möchte Zitat:
|
Re: TEdit komplett markieren bei Mausklick
Delphi-Quellcode:
Edit1.SelectAll;
|
Re: TEdit komplett markieren bei Mausklick
Es gibt noch 'ne Möglichkeit:
Delphi-Quellcode:
Ich weiss nicht, obs auch mit OnEnter klappt. Ausprobieren.
procedure btnXYClick(Sender: TObject);
begin edt.SetFocus; edt.SelStart := 0; edt.SelLength := Length(edt.Text); end; btnXY ist bei mir ein Defaultbutton. Könnte aber sein, dass auch dieses nicht beim Klick funktioniert. Ich vermute, dass die Reihenfolge der Ereignisse erst den OnFocus auslöst und dann das Klick den Focus an die Position der Maus setzt und damit die Selektion aufhebt. Dann könntest Du aber das OnClick-Ereignis mal testen, obs in der Routine funktioniert. |
Re: TEdit komplett markieren bei Mausklick
Also bei meinen Edits, die ich hier produzieren kann, ist AUTOSELECT:=true STANDARD!
Und dabei wird im Edit zwar beim Enterereignis über Tastatur alles markiert, bei der Maus wird bei einfach Klick nichts markiert, bei Doppelklick funktioniert das dann erst wieder. Somit ist der allererste Vorschlag wohl am effizientesten. |
Re: TEdit komplett markieren bei Mausklick
Wieso nicht ganz einfach so:
Delphi-Quellcode:
Edit: hatte mir das Problem nicht richtig durchgelesen ..
procedure TForm1.Edit1Click(Sender: TObject);
begin Edit1.SelectAll; end; |
Re: TEdit komplett markieren bei Mausklick
Zitat:
|
Re: TEdit komplett markieren bei Mausklick
Das klappt wunderbar.
Mit der Tabulatortaste wird wie gehabt alles markiert. |
Re: TEdit komplett markieren bei Mausklick
Michael Linden, dabei benötigt man extra noch wieder eine Variable, die man andauernd umschalten muss, weil das Markieren ja nur beim ersten Klicken aufs Edit stattfinden soll, also immer nur wenns den Fokus bekommt.
|
Re: TEdit komplett markieren bei Mausklick
Ok. Lesen bildet.
Aber beim Firefox verhält es sich (scheinbar) so, dass nach kompletter Markierung der Adresse der Fokus aus dem Edit verschwindet. Zumindest blinkt da nix mehr. :gruebel: Nun, wie Tony schon schrieb, nimm ein paar Variablen und setze sie in den Ereignissen OnEnter, OnKlick und OnMausDaun. :dp: |
Re: TEdit komplett markieren bei Mausklick
Zitat:
Bei mir wird nur alles markiert, wenn mit Tab navigiert wird, jedoch wird bei einfachem Klick auf das Edit nicht alles markiert bei AutoSelect := True. Das dürfte bei allen Delphi Versionen so sein. |
Re: TEdit komplett markieren bei Mausklick
Versteh gerade euer Problem nicht! :gruebel:
Denn: Zitat:
Edit: Auch mit Tabulator! |
Re: TEdit komplett markieren bei Mausklick
Ja, das PostMessage() funktioniert hervorragend. SelectAll im OnClick und Setzen des AutoSelect := True funktinieren hingegen nicht. Man kann das ja mal selber ausprobieren, bevor so was als Lösung präsentiert wird.
|
Re: TEdit komplett markieren bei Mausklick
komisch, ar mir garnicht so aufgefallen, aber es stimm, wenn man es mit der Maus anklickt, wird die Marierung nicht so gesetzt, wie gedacht :shock:
(ich arbeite wohl wirlich zuviel mit der Tastatur, anstatt mit der Maus) hab aber grad nochma in der OH nachgeschaut und da klingt es auch anders, als es ist :gruebel: Zitat:
PS: da EM_SETSEL eine Nachricht mit Rückgabewert ist, wäre SendMessage (statt PostMessage) richtiger, oder direkt .SelectAll :angel2: Und dann wolltest du es doch nur beim ersten Klick markiert haben, also .OnEnter, statt .OnClick hmmm OnClick wird nach OnEnter ausgeführt und irgendwie wird da der Cursor nochmal neu gesetzt :gruebel: Aber ein Problem hast du dennoch ... du wolltest doch nicht mehr alles markiert haben, wenn du nochmals Klickst und das geht im OnClick nicht. |
Re: TEdit komplett markieren bei Mausklick
Zitat:
dies aufruft:
Delphi-Quellcode:
SendMessage(Handle, EM_SETSEL, 0, -1);
|
Re: TEdit komplett markieren bei Mausklick
Zitat:
|
Re: TEdit komplett markieren bei Mausklick
Zitat:
![]() |
Re: TEdit komplett markieren bei Mausklick
Dann bleibt wohl nur 'ne Kombination aus AutoSelect=True und den Markieren im OnClick.
Beim FireFox (grad probiert) wird auch (sozusagen) im OnClick (also beim Loslassen der Maustaste) alles in den Adress- und Such-Edits markiert. Und wen die Variable stört, dafür gibt's auch andere Möglichkeiten etwas direkt im Edit zu speichern. (also wenn wer keine zusätzliche Variable erstellen will und .Tag schon belegt ist) |
Re: TEdit komplett markieren bei Mausklick
OFFTOPIC: [Wow, dafür dass ein möglicher Lösungsansatz schon in der ersten Antwort vorhanden war, ist das ein recht langer Thread geworden :lol: ]
|
Re: TEdit komplett markieren bei Mausklick
@TonyR: wer sagt, daß man sich mit der ersten antwort zufriden geben muß ... womöglich existiert ja noch 'ne bessere/schönere/optimalere Lösung :roll:
|
Re: TEdit komplett markieren bei Mausklick
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 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