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:
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für den Kasten!|
| |
|___________________________________|
Also sucht sich die procedure das letzte leerzeichen vor der überschreitung der Grenze und fügt dort einen Zeilenumbruch ein.
Code:
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für den |
|Kasten! |
|___________________________________|
Soweit so gut... meine procedur habe ich geschrieben, und sie funktioniert auch so weit, nur mit 2 fehlern:
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:
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für de |
|asten! |
|___________________________________|
Ich habe keine ahnung wieso
Kann mir da bitte einer auf die Sprünge helfen ?
Hier meine procedur:
Delphi-Quellcode:
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;
Im Programm wird sie so eingegliedert:
if (Label1.GetTextLen) > 55 then umbruch(Label1); // 55 ist die Grenze, da mehr als 55 Chars sie überschreitung würden
Danke schonmal für die Hilfe, is sicher ein banaler Fehler
gruß fabiO