AGB  ·  Datenschutz  ·  Impressum  







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

Wordwrap umbruch

Ein Thema von EWeiss · begonnen am 19. Nov 2018 · letzter Beitrag vom 20. Nov 2018
Antwort Antwort
Seite 2 von 3     12 3      
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#11

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 14:50
Nur so 'ne Idee zum Weiterforschen:

Ein TMemo nehmen, dessen Breite so angepasst wird, dass es die für die Label.Caption benötigte Breite bekommt. Schrifttyp, -größe ... dem Label anpassen. WordWrap = True.

Nun Label.Caption Memo.Text zuweisen.

Das Memo bricht nun den Text selbst um. Wenn Memo.Lines.Count nun größer 2 wird, dann die ersten beiden Zeilen aus dem Memo nehmen und Ellipsis Character dranhängen, Label.Caption zuweisen.

Dadurch wird dann auch die (je nach Schrifttyp) unterschiedliche Breite einzelner Buchstaben berücksichtigt und man muss da keine eigene Berechnungsroutine finden / entwickeln.

Das Memo muss / kann ja "irgendwo unsichtbar" im Programm "rumhängen".

Zugegeben: Elegant scheint mir das erstmal so noch nicht, aber eventuell kannst Du dadraus ja was machen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 14:57
Jo wäre eine alternative. Danke.
Wenn es mit den Berechnungen zu kompliziert wird genau das wollte ich mir mit dem Label ersparen
das ganze hin und her Splitten, RightTrim, Umbrechen, Font zuweisen usw..

gruss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#13

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:03
Ließe sich da nichts mit DrawText und den entsprechenden Formaten machen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:11
Ließe sich da nichts mit DrawText und den entsprechenden Formaten machen?
Ich verwende ja DrawText GDI+
Delphi-Quellcode:
      gSprSession.GD_DrawTextToCtrlEx(HSprSession, PWideChar(Trim(MainClass.DeviceName)), x, y,
        ParentWidth, bh, gSprSession.GD_ARGB(255, 255, 255, 255), PWideChar(FontName), nil, 13,
        ID, GS_VISIBLE, 0, Ord(StringAlignmentCenter));
Ich möchte aber diese Funktion nicht auf WordWrap erweitern deshalb muss der String vorbereitet werden.
Er wird dann nach setzen aller benötigten Formate mit GdipDrawString gezeichnet.

gruss
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#15

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:15
*nix*

Geändert von Schokohase (20. Nov 2018 um 17:38 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:22
Aber sollte dieses GDI+ DrawString nicht genau alles von Haus aus bieten?

Wrapping, Ellipsis?

Laut Dokumentation soll die das machen können.
Weil ich es nicht möchte..
Zitat:
Ich möchte aber diese Funktion nicht auf WordWrap erweitern deshalb muss der String vorbereitet werden.
Das es von Haus aus geht ist mir bekannt.

Oder warum glaubst du habe ich extra ein Format dafür addiert?
Delphi-Quellcode:
      else if UseStrFormat = GD_Ellipsis then
      begin
        GdipCheck(GdipCreateStringFormat(0, 0, strformat));
        GdipCheck(GdipSetStringFormatFlags(strformat, StringFormatFlagsNoWrap));
        GdipCheck(GdipSetStringFormatAlign(strformat, StringAlignmentNear));
        GdipCheck(GdipSetStringFormatLineAlign(strformat, StringAlignmentNear));
        GdipCheck(GdipSetStringFormatTrimming(strformat, StringTrimmingEllipsisCharacter));
      end
gruss

Geändert von EWeiss (20. Nov 2018 um 15:25 Uhr)
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#17

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:28
*nix*

Geändert von Schokohase (20. Nov 2018 um 17:38 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:32
Zitat:
ich entschuldige mich dafür in aller Form.
Hast du nicht geschrieben
Nicht nötig.. Aber ich sagte ja vorher schon und ja habe ich geschrieben!
Zitat:
Ich möchte aber diese Funktion nicht auf WordWrap erweitern deshalb muss der String vorbereitet werden.
Das Problem ist ganz einfach.
Ich habe mehr als 50 Anwendungen mit meiner Library geschrieben und möchte jetzt nicht nur wegen dieser einzigen Konstellation
die Library anpassen und alle Programme daraufhin umschreiben müssen.

Wenn ich den String vorbereite sollte es auch so ohne jegliche Änderung meiner Funktion möglich sein.

gruss

Geändert von EWeiss (20. Nov 2018 um 15:38 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:36
Du versuchst also wieder auf Biegen und Brechen irgendetwas zu nutzen, weil du denkst, es passt zu deinem Problem und lässt andere Lösungsvorschläge gar nicht zu?

Erstens mal ist das temporäre Erzeugung von einen VCL-TLabel in der von dir gezeigten Methode Quatsch.
Das Label weiß nichts über den Kontext bzw. Parent, auf den du später selber mit der Hand per GDI+ zeichnest.
So hat das Label überhaupt keine Informationen über die verwendete Schrift und nimmt irgendeinen Default für die Font-Property an (wahrscheinlich Tahoma in Größe 8).

Des Weiteren veränderst du so den FAudioSessionInfo.DisplayName.
Das sind aber deine Originaldaten und das ganze umbrechen und kürzen sollte erst an der Stelle erfolgen, wo du deine Textausgabe machst.

Der von mir gezeigte Quelltext ließe sich problemlos auf dein Problem anwenden.
Probiere das Konsolenprojekt doch aus und spiele ein bisschen mit den Funktionsargumenten von WrapText.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

AW: Wordwrap umbruch

  Alt 20. Nov 2018, 15:51
Zitat:
und lässt andere Lösungsvorschläge gar nicht zu?
Sorry unser ureigenes Problem.. wenn es nicht nach deinen willen geht dann bin ich wieder der böse.
Zitat:
Biegen und Brechen irgendetwas zu nutzen
Richtig wenn es funktioniert ist es ausreichend für mich, es muss aber nicht zwangsweise dein Vorschlag sein.
Zitat:
Erstens mal ist das temporäre Erzeugung von einen VCL-TLabel in der von dir gezeigten Methode Quatsch.
Das Label weiß nichts über den Kontext bzw. Parent, auf den du später selber mit der Hand per GDI+ zeichnest.
So hat das Label überhaupt keine Informationen über die verwendete Schrift und nimmt irgendeinen Default für die Font-Property an (wahrscheinlich Tahoma in Größe 8).
Es ist ja so ein Quatsch das es nicht funktioniert so wie du im Anhang sehen kannst solange wie 2 Zeilen nicht überschritten werden.

Zitat:
Des Weiteren veränderst du so den FAudioSessionInfo.DisplayName.
Das ist der sinn der ganzen Sache.
Zitat:
Das sind aber deine Originaldaten und das ganze umbrechen und kürzen sollte erst an der Stelle erfolgen, wo du deine Textausgabe machst.
Wird an der stelle erledigt die ich für richtig halte.
Da du keine Ahnung hast welche nachfolgende Probleme dadurch entstehen können.
Zum Beispiel meine ganzen anderen Programme deshalb umzuschreiben.
Zitat:
Der von mir gezeigte Quelltext ließe sich problemlos auf dein Problem anwenden.
Probiere das Konsolenprojekt doch aus und spiele ein bisschen mit den Funktionsargumenten von WrapText.
Danke Nein!
Ich werde den String auf meine weise Splitten und weiter bearbeiten.
Aber vielleicht hilft dein Vorschlag jemand andern.

Habe ja schon 3 Beiträge vorher geschrieben das ich das mit dem Label verwerfen werde da es nicht den zweck erfüllt den ich mir erhofft habe.

Zitat:
Werde den String splitten und die länge sowie den Umbruch von Hand berechnen.
Der Label hat sich dann erledigt.
Oder die vorgeschlagene Variante von @Delphi.Narium versuchen.

OK!
Danke Thema ist erledigt werde die für mich praktikable Lösung erarbeiten ohne meine Library zu verändern.
Mit dem Label geht es nicht wenn mehr als 2 Zeilen ins Spiel kommen und das war meine Frage.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:54 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:08 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