![]() |
Curosr in TEdit ans Ende setzen
Hallo Zusammen und ein Gutes Neues Jahr!!!!
Kaum hat das Jahr angefangen, schon habe ich das erste Problem. Manchmal scheint das einfachste schwer zu sein :( Bevor ihr mich jetzt auf die SuFu oder Google verweist, ich habe dort gefühlte 1.000 Einträge zu dem Thema gefunden, alles funktioniert bei mir jedoch leider nicht. Ich verwende Delphi 2010 Pro und es geht um die Standard TEdit-Komponente. Wie der Titel schon sagt, möchte ich den Cursor an das Ende eines Textes setzen. Aufgerufen wird die Funktion im OnEnter-Event des TEdit:
Delphi-Quellcode:
Der Source ist ja selbsterklärend nur funktioniert das leider nicht. Auch andere Varianten mit SelLength etc. funktionieren nicht. Der Cursor bleibt schön links stehen. Mehr Code steht in der Procedure übrigends nicht drin, so dass ich ausschließen kann, dass ein anderer Code-Teil zu dem Verhalten führt.
if ((EditURL.Enabled) and (Length(EditURL.Text) = 0)) then begin
EditURL.Text := 'http://'; EditURL.SelStart := EditURL.GetTextLen; end; Ich denke es ist ein simpler Denkfehler meinerseits und hoffe, dass mich jemand von der Leitung stupst :) Grüsse |
AW: Curosr in TEdit ans Ende setzen
Der Denkfehler:
Delphi-Quellcode:
;-)
Length(EditURL.Text) = 0)
Zu viel gefeiert? :mrgreen: |
AW: Curosr in TEdit ans Ende setzen
Eigentlich nicht :) Ich denke schon dass das passt, vielleicht nochmals mein Vorhaben:
Ich habe ein Edit um - wie der Name schon sagt - eine Homepageadresse einzugeben. Wenn das Feld beim OnEnter-Event leer ist, soll die Zeichenkette "http://" eingefügt werden (Zeitersparnis...) und der Cursor an das Textende gesetzt werden. Daher bin ich der Meinung, dass die Überprüfung auf
Delphi-Quellcode:
korrekt ist...
Length(EditURL.Text) = 0
|
AW: Curosr in TEdit ans Ende setzen
Oups. :oops:
Ich hatte die zweite Zeile übersehen und gedacht, der SelStart würde nur für Leerstrings aufgerufen. Bei mir gilt die Feier-Ausrede übrigens gar nicht. Ich habe ordnungsgemäß gearbeitet. :-) Bei mir funktioniert:
Delphi-Quellcode:
Hast Du mal debugt, was überhaupt durchgeführt wird und was Text und TextLength liefert?
odEditPanel.SelStart := MaxInt;
|
AW: Curosr in TEdit ans Ende setzen
Okay, auf das bin ich natürlich nicht gekommen und nein, ich habe nicht gedebugged :oops: Ich sah dafür aber auch keinen Grund, das Edit ist ja definitiv vor dem Aufruf leer...
Werde es heute Abend gleich mal probieren und posten, ob es geklappt hat. Dank Dir! |
AW: Curosr in TEdit ans Ende setzen
Hab es versucht, leider ohne Erfolg, der Cursor bleibt nach wie vor am Beginn stehen :(
EDIT: Habe gerade noch herausgefunden, dass es funktioniert, wenn man das Control über TAB anspringt, klickt man in das TEdit mit der Maus rein, geht der Code leider nicht. Bei einem leeren Projekt sieht es übrigens exakt gleich aus... |
AW: Cursor in TEdit ans Ende setzen
Ach so, Du hast den Code im Edit.OnEnter?
Das sollest Du besser bei der Initialisierung des Formulars durchführen. Alternativ wäre eine Ableitung von TEdit denkbar, die entsprechend angepasst wird. Oder einen Timer starten, der SelStart mit einer kurzen Verzögerung durchführt. Das widerspricht dann allerdings dem Standardverhalten und ist daher nicht unbedingt zu empfehlen. |
AW: Cursor in TEdit ans Ende setzen
Zitat:
Hoffe auf weitere Tipps... |
AW: Cursor in TEdit ans Ende setzen
Zitat:
Ohne dass ich das jetzt im Detail untersucht habe, mal ein paar Überlegungen: Wenn Du in ein Edit klickst, wird der Cursor an die entsprechende Position gesetzt. Das würde man auch so erwarten. Dein gewünschtes Verhalten würde dem eher widersprechen. Vielleicht kannst Du die Anzeige von "http://" einfach unterlassen und ggf. bei der späteren Verarbeitung ergänzen. Wenn Du es im OnEnter machst, hat das Edit schon die Kontrolle übernommen. Der Klick ist ja schon erfolgt und die Klickposition vermerkt. Dann wird der Fokus gesetzt und OnEnter aufgerufen. Dann setzt das Edit den Fokus an die Klickposition. Ich würde das zumindest so vermuten. Im OnEnter kannst Du daher dann den Cursor nicht in jedem Fall beliebig setzen. Du müsstest dazu das Verhalten des Edits ändern (durch eine Komponentenableitung) oder die Änderung nachträglich veranlassen (z.B. durch einen Timer). |
AW: Curosr in TEdit ans Ende setzen
Hallo,
würde es nicht gehen, wenn Du das http:// nachträglich hinzufügst wenn der User es nicht eingetragen hat. z.B. dann wenn das Editfeld verlassen wird. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 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