AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

Ein Thema von braunbaer · begonnen am 8. Mär 2017 · letzter Beitrag vom 8. Mär 2017
Antwort Antwort
braunbaer

Registriert seit: 15. Okt 2008
Ort: Vorarlberg
114 Beiträge
 
Delphi 11 Alexandria
 
#1

Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 09:02
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
Gebhard Blank
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 09:55
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.
Ralph
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 10:50
Malen muss man doch nicht, reicht nicht schon Edit1.Canvas.TextWidth(Edit1.Text); ?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#4

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 10:57
Moin...
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. Wenn der "Text" in der Variable / Liste lagert, könntest du mit Copy und Konsorten den entsprechenden Text extrahieren.

Geändert von haentschman ( 8. Mär 2017 um 10:59 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 11:29
Moin...
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. Wenn der "Text" in der Variable / Liste lagert, könntest du mit Copy und Konsorten den entsprechenden Text extrahieren.
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.
Ralph
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#6

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 12:14
http://www.delphibasics.co.uk/RTL.as...=LastDelimiter
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 12:20
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
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 12:36
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#9

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 12:56
Moin...
Zitat:
Ich muss nun die Position des letzten Leerzeichens
...davon habe ich mich auch verleiten lassen.
Zitat:
im sichtbaren Bereich finden.
...das gehört da auch noch zu.
  Mit Zitat antworten Zitat
braunbaer

Registriert seit: 15. Okt 2008
Ort: Vorarlberg
114 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Letztes Leerzeichen im sichtbaren Bereich eines TEdit finden.

  Alt 8. Mär 2017, 13:52
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
Gebhard Blank
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:03 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