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
Antwort Antwort
Seite 1 von 2  1 2      
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, 20: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
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#2

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:28
setze Autosize auf FALSE und WordWrap auf TRUE, dann macht das Label alles ganz automatisch
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
fabiO

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

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:33
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:35
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
mfg zecke
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#5

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:38
deshalb ja: AutoSize = false und die gewünschte Größe einstellen. Dann Ändert es seine Größe nicht mehr, wenn eine Caption zugewiesen wird.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#6

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:38
Zitat von fabiO:
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 ?
Ja.
  Mit Zitat antworten Zitat
fabiO

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

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:41
Ich hab grad es mal probiert...
beim ersten versehen des Labels mit einem Inhalt

Delphi-Quellcode:
  
  Label1.Width := 475; // würde der Grenze des Fensters entsprechen
  Label1.AutoSize := false;
  Label1.WordWrap := true;
  Label1.Caption := A[x]; // der erste Wert
So aba nun schreibt er es so:

Code:
|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
|Dieser Satz wäre zu groß für den  |
|                                   |
|___________________________________|
d.h. er füllt den String bis zur Grenze und verschluckt den Rest!
mache ich was falsch oder so ?
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#8

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:45
wie groß ist label1.Height?
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
fabiO

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

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:48
yo, daran lags )

Danke für die Hilfe...

Aber nur fürs Verständniss, warum funktioniert es nicht mit meiner procedur ?
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#10

Re: function für Zeilenumbruch im Label!?

  Alt 17. Dez 2005, 20:54
habs nur überflogen, aber ich glaube du schaffst nur Platz für ein Zeichen, fügst aber 2 Zeichen (#13#10) ein.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:00 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