Delphi-PRAXiS

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 Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden. (https://www.delphipraxis.net/191964-letztes-leerzeichen-im-sichtbaren-bereich-eines-tedit-finden.html)

braunbaer 8. Mär 2017 09:02

Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Hallo in die Runde.

Ich habe in Firemonkey ein TEdit
Dieses enthält mehr Text als sichtbar ist.
Ich muss nun die Position des letzten Leerzeichens im sichtbaren Bereich finden.
Ab diesem Leerzeichen schneide ich dann den Text aus und füge ihn ein weiteres TEdit ein.

Frage: wie finde ich das letzte Leerzeichen im sichtbaren Bereich eines TEdit.

Bitte um Tipps, wie ich das anstellen kann.

Schon mal danke!

Gebhard

Jumpy 8. Mär 2017 09:55

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Es gibt hier in der DP Funktionen, um festzustellen wie breit ein Text ist (ich glaube da wird mit der richtigen Schrift usw. im Hintergrund auf ein Canvas gemalt oder so). Must du mal suchen, aber keine Ahnung ob das in FM funzt.

Letztlich würde ich dann versuchen die Stelle zu finden, an dem die Länge größer wird als die Edit-Breite und von da ab Rückwärts gehen, bis du ein Leerzeichen findest.

Der schöne Günther 8. Mär 2017 10:50

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Malen muss man doch nicht, reicht nicht schon
Delphi-Quellcode:
Edit1.Canvas.TextWidth(Edit1.Text);
?

haentschman 8. Mär 2017 10:57

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Moin...:P
Zitat:

Letztlich würde ich dann versuchen die Stelle zu finden, an dem die Länge größer wird als die Edit-Breite und von da ab Rückwärts gehen, bis du ein Leerzeichen findest.
Zitat:

Malen muss man doch nicht, reicht nicht schon Edit1.Canvas.TextWidth(Edit1.Text); ?
...wenn du die Visuellen Controls nicht als "Datenspeicher" mißbrauchst, hättest du nicht das Problem. :zwinker: Wenn der "Text" in der Variable / Liste lagert, könntest du mit Copy und Konsorten den entsprechenden Text extrahieren. :thumb:

Jumpy 8. Mär 2017 11:29

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Zitat:

Zitat von haentschman (Beitrag 1363527)
Moin...:P
Zitat:

Letztlich würde ich dann versuchen die Stelle zu finden, an dem die Länge größer wird als die Edit-Breite und von da ab Rückwärts gehen, bis du ein Leerzeichen findest.
Zitat:

Malen muss man doch nicht, reicht nicht schon Edit1.Canvas.TextWidth(Edit1.Text); ?
...wenn du die Visuellen Controls nicht als "Datenspeicher" mißbrauchst, hättest du nicht das Problem. :zwinker: Wenn der "Text" in der Variable / Liste lagert, könntest du mit Copy und Konsorten den entsprechenden Text extrahieren. :thumb:

Bin ja nicht der TE, aber wo steht, dass er das tut?
Es geht ja um die Anzeige. Es wird was in Edit1 dargestellt (egal wo das herkommt), das zu lang ist. Das soll dann an passender Stelle gekappt werden, der Rest in Edit2.

t.roller 8. Mär 2017 12:14

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
http://www.delphibasics.co.uk/RTL.as...=LastDelimiter

Uwe Raabe 8. Mär 2017 12:20

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Zitat:

Zitat von t.roller (Beitrag 1363555)

Trifft nicht ganz (Hervorhebung von mir):
Zitat:

Frage: wie finde ich das letzte Leerzeichen im sichtbaren Bereich eines TEdit.
Außerdem bringt Delphi das mittlerweile selbst mit: System.SysUtils.LastDelimiter

Ydobon 8. Mär 2017 12:36

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Eventuell
Delphi-Quellcode:
var pos: Integer;
    r: TRect;
begin
  Edit1.Perform(EM_GETRECT, 0, @r);
  pos:=Edit1.Perform(EM_CHARFROMPOS, 0, MakelParam(r.Right, 0));
liefert den Index des letzten Zeichens im Text. Dann einfach nur noch herunter zählen.

haentschman 8. Mär 2017 12:56

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
Moin... :P
Zitat:

Ich muss nun die Position des letzten Leerzeichens
...davon habe ich mich auch verleiten lassen. :P
Zitat:

im sichtbaren Bereich finden.
...das gehört da auch noch zu. :?

braunbaer 8. Mär 2017 13:52

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.
 
gelöst!!

konnte es mit einem temporärem TTextLayout und der Funktion PositionAtPoint() lösen.
PositionAtPoint() gibt mit dem 2ten Parameter true die Position, an der geschnitten werden muss.

Danke an alle.
Gruß
Gebhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz