Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit komplett markieren bei Mausklick (https://www.delphipraxis.net/126295-tedit-komplett-markieren-bei-mausklick.html)

Micha88 25. Dez 2008 00:17

Re: TEdit komplett markieren bei Mausklick
 
Wieso nicht ganz einfach so:

Delphi-Quellcode:
procedure TForm1.Edit1Click(Sender: TObject);
begin
 Edit1.SelectAll;
end;
Edit: hatte mir das Problem nicht richtig durchgelesen ..

Namenloser 25. Dez 2008 00:20

Re: TEdit komplett markieren bei Mausklick
 
Zitat:

Zitat von MichaelLinden
Wieso nicht ganz einfach so:

Delphi-Quellcode:
procedure TForm1.Edit1Click(Sender: TObject);
begin
 Edit1.SelectAll;
end;

Weil man auch über die Tab-Taste das Edit fokussieren kann.

Michael Habbe 25. Dez 2008 00:21

Re: TEdit komplett markieren bei Mausklick
 
Das klappt wunderbar.
Mit der Tabulatortaste wird wie gehabt alles markiert.

TonyR 25. Dez 2008 00:25

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.

Michael Habbe 25. Dez 2008 00:55

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:

API 25. Dez 2008 07:36

Re: TEdit komplett markieren bei Mausklick
 
Zitat:

Zitat von himitsu
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

Bei welcher Delphi Version ist das so?
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.

lbccaleb 25. Dez 2008 07:56

Re: TEdit komplett markieren bei Mausklick
 
Versteh gerade euer Problem nicht! :gruebel:

Denn:

Zitat:

Zitat von ralfiii
Ein
Delphi-Quellcode:
     PostMessage(Edit1.handle, EM_SETSEL, 0, -1);
in den OnEnter-Event uns alles ist gut.

geht bei mir genauso gut!

Edit:
Auch mit Tabulator!

API 25. Dez 2008 08:00

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.

himitsu 26. Dez 2008 16:43

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:

Die Eigenschaft AutoSelect bestimmt, ob der gesamte Text im Eingabefeld automatisch markiert wird, wenn das Steuerelement den Fokus erhält.
schon komisch, was ein not (csLButtonDown in ControlState) in CM_ENTER so alles verändert :wall:

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.

toms 26. Dez 2008 19:27

Re: TEdit komplett markieren bei Mausklick
 
Zitat:

Zitat von himitsu
Aber ein Problem hast du dennoch ... du wolltest doch nicht mehr alles markiert haben, wenn du nochmals Klickst und das geht im OnClick nicht.

Darum einfach ein .SelectAll im OnEnter. Das PostMessage / SendMessage ist unnötig, da ein .SelectAll
dies aufruft:
Delphi-Quellcode:
 SendMessage(Handle, EM_SETSEL, 0, -1);


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 Uhr.
Seite 2 von 3     12 3      

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