AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TEdit Cursorposition verwenden

Ein Thema von tcoman · begonnen am 27. Jul 2016 · letzter Beitrag vom 3. Aug 2016
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#1

AW: TEdit Cursorposition verwenden

  Alt 1. Aug 2016, 20:13
Wie schon gesagt, ist weder SelStart noch SelLength relevant, sondern man muss lediglich SelText setzen.

Zitat:
Das TEdit Feld ist leer.
Nun schreibe ich etwas da hinein, zB. "und ist Drei".
Das TEdit Feld hat den Focus und man sieht den TextCursor am
Ende des Textes blinken.

Jetzt setze ich mit dem Mauszeiger den TextCursor vor dem i
von "ist". Wenn ich nun mit dem Mauszeiger in die TListBox
auf die Zeile "Zwei " klicke, moechte ich, dass dieser Text
in das TEdit Feld an der Position vor dem i eingesetzt wird.
Es muesste jetzt dort "und Zwei ist Drei" stehen.
Genau dies erreichts du mit einem simplen:

Delphi-Quellcode:
procedure TPEnhInpText.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Edit1.SelText := ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#2

AW: TEdit Cursorposition verwenden

  Alt 2. Aug 2016, 09:31
Will er selber ein INSERT machen, dann wäre SelStart schon relevant. (Inhalt auslesen, einfügen und wieder zuweisen)
Mit SelText kann man den selektierten Text an der Cursorposition ersetzen, also vorher noch ein SelLength:=0, da man sonst eventuell ersetzt und nicht einfügt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#3

AW: TEdit Cursorposition verwenden

  Alt 2. Aug 2016, 09:39
Will er selber ein INSERT machen, dann wäre SelStart schon relevant. (Inhalt auslesen, einfügen und wieder zuweisen)
Mit SelText kann man den selektierten Text an der Cursorposition ersetzen, also vorher noch ein SelLength:=0, da man sonst eventuell ersetzt und nicht einfügt.
So wie er das Vorgehen im ersten Post beschrieben hat (Caret im Edit an Einfügeposition setzen, dann auf ListBox klicken), muss nichts weiter geschehen. Das Standardverhalten beim Schreiben von TEdit.SelText ohne selektierten Text ist das Einfügen an die Caret-Position, was genau dem gewünschten Verhalten entspricht.

Sollte allerdings ein Text im Edit markiert sein, wird dieser ersetzt - ich vermute, das ist dann aber auch so erwünscht.

Diese ganze Rumrechnerei und der Code in EditMouseDown und EditKeyUp sind vollkommen überflüssig und lenken nur von der eigentlich sehr simplen Lösung ab.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
tcoman
(Gast)

n/a Beiträge
 
#4

AW: TEdit Cursorposition verwenden

  Alt 2. Aug 2016, 16:11

Genau dies erreichts du mit einem simplen:

Delphi-Quellcode:
procedure TPEnhInpText.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Edit1.SelText := ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
Genau das konnte ich selber nicht finden, weil mir die
Methode des Edit1.SelText nicht bewusst war. Haette die
Methode Edit1.AddText oder Edit1.InsText geheissen, waere
es leichter gewesen dahinter zu kommen.

@Himitsu:
Hast recht, vieles im FormCreate() ist reduntant, weil es ja die
DFM Datei gibt. Aber so wichtige Einstellungen wie
ListBox1.MultiSelect:=False habe ich gerne greifbar
hinzugefuegt, auch wenn die Default Einstellung in D2005
schon False ist. Ob das bei einer anderen/neueren Version
von Delphi ebenso ist... und dann geht das Gesuche los,
wenn das neu compilierte Programm ein Fehlverhalten zeigt.

Upload der nun funktionierenden Version meines Beispieles
folgt. Vielen Dank an alle...

Werden laut Himitsu es aber so machen:

Delphi-Quellcode:
procedure TPEnhInpText.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Edit1.SelLength:=0;
  Edit1.SelText := ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
MfG,
Terence
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#5

AW: TEdit Cursorposition verwenden

  Alt 2. Aug 2016, 16:24
Man könnte aber auch OnClick verwenden
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
tcoman
(Gast)

n/a Beiträge
 
#6

AW: TEdit Cursorposition verwenden

  Alt 3. Aug 2016, 14:54
Man könnte aber auch OnClick verwenden
Bei OnClick in der ListBox wird jedesmal die selektierte Zeile
ins TEdit Feld kopiert. Auch beim benutzen der Arrow Keys.

Habe ich alles schon durchprobiert, Danke Himitsu.

MfG,
Terence
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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