![]() |
function für Zeilenumbruch im Label!?
Hallo,
Ich arbeite gerade an einem Projekt, dass dem "Wahl-O-Mat" der bpb entsprechen soll. Ein wenig Kopfzerbrechen bereitet mir noch ein kleines visuelles Problem. Da die Thesen in einem Kasten angezeigt werden, möchte ich gerne, dass diese, wenn sie die Grenze des Kastens überschreiten würden, stattdessen einen Zeilenumbruch erhalten. Das kann man sich so vorstellen:
Code:
Also sucht sich die procedure das letzte leerzeichen vor der überschreitung der Grenze und fügt dort einen Zeilenumbruch ein.
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für den Kasten!| | | |___________________________________|
Code:
Soweit so gut... meine procedur habe ich geschrieben, und sie funktioniert auch so weit, nur mit 2 fehlern:
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für den | |Kasten! | |___________________________________| 1. Es wird jeweils der Buchstabe vor dem Leerzeichen nicht angezeigt! 2. Es wird jeweils der erste Buchstabe der neuen Zeile nicht angezeigt! Das sieht dann so aus:
Code:
Ich habe keine ahnung wieso :( Kann mir da bitte einer auf die Sprünge helfen ?
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für de | |asten! | |___________________________________| Hier meine procedur:
Delphi-Quellcode:
Im Programm wird sie so eingegliedert:
procedure umbruch(aLabel : TLabel);
var sCaption : String; i,j,maxwidth : Integer; Begin sCaption := aLabel.caption; maxwidth := 55; if (sCaption[maxwidth]) = ' ' then begin setlength(sCaption, length(sCaption)+1); for i := length(sCaption)-1 to maxwidth do sCaption[i] := sCaption[i-1]; sCaption[maxwidth] := #13; sCaption[maxwidth+1] := #10; end; if (sCaption[maxwidth]) <> ' ' then begin j := maxwidth; while sCaption[j] <> ' ' do dec(j); setlength(sCaption, length(sCaption)+1); for i := length(sCaption) to j do sCaption[i] := sCaption[i-1]; sCaption[j] := #13; sCaption[j+1] := #10; end; aLabel.caption := sCaption; End;
Delphi-Quellcode:
Danke schonmal für die Hilfe, is sicher ein banaler Fehler :)
if (Label1.GetTextLen) > 55 then umbruch(Label1); // 55 ist die Grenze, da mehr als 55 Chars sie überschreitung würden
gruß fabiO |
Re: function für Zeilenumbruch im Label!?
setze Autosize auf FALSE und WordWrap auf TRUE, dann macht das Label alles ganz automatisch
|
Re: function für Zeilenumbruch im Label!?
Ja, aber mein Label hat vorher keine size, da es erst im laufe des Programm mit verschiedenen Inhalten gefüllt wird, funktioniert es dann auch ?
|
Re: function für Zeilenumbruch im Label!?
Mm sobald es existiert müsste man diese Werte doch einstellen können oder irre ich mich? Label.Autosize (o.ä. kA wie des ausschaut) sollte es ja dann geben. Die Eigenschaften kann man ja auch während der Laufzeit einstellen.
Bin mir unsicher, aber ein Versuch ist es Wert :mrgreen: |
Re: function für Zeilenumbruch im Label!?
deshalb ja: AutoSize = false und die gewünschte Größe einstellen. Dann Ändert es seine Größe nicht mehr, wenn eine Caption zugewiesen wird.
|
Re: function für Zeilenumbruch im Label!?
Zitat:
|
Re: function für Zeilenumbruch im Label!?
Ich hab grad es mal probiert...
beim ersten versehen des Labels mit einem Inhalt
Delphi-Quellcode:
So aba nun schreibt er es so:Label1.Width := 475; // würde der Grenze des Fensters entsprechen Label1.AutoSize := false; Label1.WordWrap := true; Label1.Caption := A[x]; // der erste Wert
Code:
d.h. er füllt den String bis zur Grenze und verschluckt den Rest!
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für den | | | |___________________________________| mache ich was falsch oder so ? |
Re: function für Zeilenumbruch im Label!?
wie groß ist label1.Height?
|
Re: function für Zeilenumbruch im Label!?
yo, daran lags ;))
Danke für die Hilfe... Aber nur fürs Verständniss, warum funktioniert es nicht mit meiner procedur ? |
Re: function für Zeilenumbruch im Label!?
habs nur überflogen, aber ich glaube du schaffst nur Platz für ein Zeichen, fügst aber 2 Zeichen (#13#10) ein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 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