Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umbruch im Label-> Pfad(1 langer string ohne leerzeichen) (https://www.delphipraxis.net/144189-umbruch-im-label-pfad-1-langer-string-ohne-leerzeichen.html)

alphanumeric 2. Dez 2009 07:32


Umbruch im Label-> Pfad(1 langer string ohne leerzeichen)
 
Hallo alle miteinander,

heut bin ich erneut auf ein Problem gestoßen und nachdem ich meine Foren-Suchskills ausgeschöpft hatte, wollte ich nun einfach nachfragen. Also folgendes:

effektiv befülle ich mein Label während der Laufzeit. Der Text der hineinkommt ist relativ variabel, weshalb ich dort nicht mit #13#10 arbeiten kann. WordWrap und AutoSize sind bereits umgestellt, habe sogar testweise versucht die Constraints hart reinzuhacken, brachte mich aber auch nicht weiter. Mein letzter Versuch gallt dem, den ganzen Wordwrap und Autosize Stuff einfach mal programmatisch zu setzen..immernoch nichts. Hier also mein Code:


Delphi-Quellcode:
    Falschen Code reinkopiert...Fail Number Three - heut is echt nicht mein Tag!

        _RaveSystem.OutputFileName := IncludeTrailingBackslash(GetWindowsTempFolder)+_pdfname+'.pdf';
        _raveProject.ExecuteReport('Kundenauftrag.rav');//_RaveSystem.Execute;
        _raveProject.Execute;
        label7.Caption := _raveSystem.OutputFileName;
Meine Frage nun: kann ich den String, der hier ein Pfad ist, irgendwie ohne sLinebreak umbrechen, sodass dieser zweizeilig in meinem Label angezeigt wird?(Oder wenn nötig 3 Zeilig?) Oder geht das ganze nur mit Leerzeichen dazwischen?


Gruß
alphanum


Edit: ups, falsche Kat(bitte in die richtige für D2009 verschieben, danke!)

Edit2: und Titel auch kräftig verbummelt - so jetz aber!

himitsu 2. Dez 2009 07:41

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
Du könntest irgendwie versuchen die Line-Break-Funktion zu ersetzen ... ansonsten geht (standardmäßig) das nur mit Leerzeichen.

Ich kenn jetzt leider den Code nicht, aber es gibt ja verschiedene Leerzeichen und in D2009 sollte es dank Unicode mäglich sein.

das einfache #32 (dürfte n-width sein)
n-width
m-width
0-width

und vorallem das 0-width wäre interessant, denn dieses ist sonst nicht sichtbar, aber es müßte sich dort umbrechen lassen, falls die Standard-Line-Break-Funktion diese mit beachtet.



PS: ich nutze bei zu langen Pfaden gern mal dieses "Ellipsis" ... dann ist es zwar auch nur einzeilig, aber man kann dafür eine pasende Pfadkürzung einstellen.


[add]
Delphi-Quellcode:
TCustomLabel = class(TGraphicControl)
protected
  procedure DoDrawText(var Rect: TRect; Flags: Longint); dynamic;
DoDrawText wird zum Zeichnen und zur Berechnung der Größe verwendet ... wenn du dieses überschreibst, dann sollte sich was machen lassen.

und es werden standardmäßig nur Leerzeichen und Tabulatoren beachtet.

alphanumeric 2. Dez 2009 07:48

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
die Pfadkürzung wollt ich sowieso auch nutzen, habs jetzt grad mal über nen Memo das ich so angemalt hab wie die Form ausschaut gemacht. Ellipsis kürzt also Pfade? Zudem wäre auch noch interessant ob man den Windows Temp Folder auch in Lang kriegen kann, sprich ohne ~ Abkürzungen. Das ganze find ich online meißt nur als Funktion A zum einbauen, Funktion B zum einbauen - is mir alles zuviel, gibts da ne kurze, schnelle alternative um den Windows Temp ordner eben als langen pfad zu kriegen?

himitsu 2. Dez 2009 07:52

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
Für ~ siehe Delphi-Referenz durchsuchenExpandFileName bzw. MSDN-Library durchsuchenGetFullPathName.

ja, da kann man auch sagen wo gekürz wird.

EndEllipsis ist blöd
aber wenn ich es grad richtig im Kopf hab, dann gibt es noch PathEllipsis (dürfte mitten im Pfad was rausnehmen)
und notfalls WordEllipsis
oder irgendwie so

alphanumeric 2. Dez 2009 09:27

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
so, also expandfilename bringt mir nichts, da ich nen von Windows aus verkürzten pfad habe.
Sprich der sieht so aus:

C:\DOCUME~1\ usw.
kann das jetz grad ned auswendig.

Die andere Funktion blick ich nicht: ich krieg ganze zeit Typumwandlungsfehler - Zumindest wenn ich mich codetechnisch halbwegs nach dem richte, was in der C Doku ist.


Edit: Dummheit korrigiert ! :P

himitsu 2. Dez 2009 09:33

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
Tschuldschung
ExpandFileName kapselt GetFullPathName, wäre also egal was man nimmt.

Blöd nur, wenn man nicht nochmal nachsieht ... diese machen aus einem relativen Pfad einen "vollen" Absoluten.

MSDN-Library durchsuchenGetLongPathName wäre das Richtige :angel:

und falls man nicht weiß, wie es geht > Hier im Forum suchenGetLongPathName

alphanumeric 2. Dez 2009 09:49

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
Wären diese ganzen PWideChars ned - der meckert da in jeder funktion rum, ich will ja den Pfad da direkt reingeben - alles inkompatibel. Bin jetzt soweit, dass ich auf Torry's Delphi krams die Deklaration mal hergeholt hat, aber funktionieren will das ganze Typenspektakel immernoch nicht :wall:

himitsu 2. Dez 2009 09:56

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
Mach einfach nur PChar und nutze String, sowie nur die Funktionen ohne A bzw. W am Ende.

alphanumeric 3. Dez 2009 07:38

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
Also, ich hab die Funktion so deklariert und definiert wies auf torry's delphi site steht. Ding is nur: ich hab die parameter zwar als Pchar angegeben, er will unten, wenns dann praktisch wird, trotzdem jeweils pwidechars. ne ahnung was das sein könnte? was mach ich falsch? :spin2:

himitsu 3. Dez 2009 09:47

Re: Umbruch im Label-> Pfad(1 langer string ohne leerzeic
 
PChar ist mehr ein "virtueller" Typ

bis D2007: PChar = PAnsiChar
ab D2009: PChar = PWideChar

PChar paßt sich also jeweils an und der Editor zeigt den Tatsächlichen Typen, welcher verwendet wird, da PChar nur eine Umleitung und kein eigenständiger Typ ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 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