AGB  ·  Datenschutz  ·  Impressum  







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

function für Zeilenumbruch im Label!?

Ein Thema von fabiO · begonnen am 17. Dez 2005 · letzter Beitrag vom 17. Dez 2005
 
fabiO

Registriert seit: 5. Dez 2004
Ort: Jena
41 Beiträge
 
Delphi 6 Personal
 
#1

function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 19:25
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
  Mit Zitat antworten Zitat
 


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 07:31 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