![]() |
TLabel: Wieso verschindet der Text?
Moin,
ich habe ein grossgezogenes label auf meiner form und füge so text hinzu(per button):
Delphi-Quellcode:
Layout ist "tlBottom"...
Label1.Caption := Label1.Caption + Edit1.Text + #13#10;
so wenn das label nun voll ist, beginnt der text bei jedem klick von unten zu verschinden...wieso ist das so? |
Re: TLabel: Wieso verschindet der Text?
Weil dein Label versucht, den neu hinzugefügten Text anzuzeigen, und weil du nicht "übers Blattrand schreiben" kannst, verschwindet alles, was nicht innerhalb der Boundaries des Labels liegt. Einfache Lösung: AutoSize := true ;)
|
Re: TLabel: Wieso verschindet der Text?
vermutlich weil du immer einen zeilenwechsel anhängst
|
Re: TLabel: Wieso verschindet der Text?
ne neue zeile brauch ich aber.
@dax: ich muss das ding wie ein memo verwenden können, daher autosize muss false sein |
Re: TLabel: Wieso verschindet der Text?
Wie ein Memo?
Labels können aber nicht scrollen. Du könntest ein Memo nehmen, Hintergrund auf clBtnFace stellen, Rand ausblenden, ReadOnly auf True setzen und das Caret ausblenden (Suchfunktion) Dann würde es aussehen, als wäre es ein Label, ist aber ein Memo. |
Re: TLabel: Wieso verschindet der Text?
ich brauch aber ein control das kein caret hat :\
|
Re: TLabel: Wieso verschindet der Text?
Nimm doch eine ScrollBox und setz ein AutoSize(true)-Label rein ;)
|
Re: TLabel: Wieso verschindet der Text?
moin dax,
wenn verkleinert sich das label trotzdem :\ |
Re: TLabel: Wieso verschindet der Text?
Hab auf die Schnelle was gebastelt:
Delphi-Quellcode:
Macht genau das, was Du willst.
unit main;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, extctrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; PaintBox1: TPaintBox; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure PaintBox1Paint(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } Txt: String; Procedure PaintTxt; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Txt := Txt+#13#10+Edit1.Text; Label1.Caption := Txt; PaintTxt; end; procedure TForm1.FormCreate(Sender: TObject); begin Txt := 'Test'; end; Procedure TForm1.PaintTxt; Var TxtRect: TRect; pbRect: TRect; Begin pbRect := PaintBox1.ClientRect; TxtRect := pbRect; DrawText(PaintBox1.Canvas.Handle,PChar(Txt),Length(Txt),TxtRect,DT_CALCRECT); TxtRect.Top := pbRect.Bottom-TxtRect.Bottom; TxtRect.Bottom := pbRect.Bottom; DrawText(PaintBox1.Canvas.Handle,PChar(Txt),Length(Txt),TxtRect,DT_LEFT); End; procedure TForm1.PaintBox1Paint(Sender: TObject); begin PaintTxt; end; end. PaintBox, Edit und Button aufs Form. Gruß, teebee |
Re: TLabel: Wieso verschindet der Text?
Moin teebee,
das funkt ja super :) hast du vielleicht noch ne idee wie ich den hintergrund der paintbox komplett weiss mache? Und wie ich eine Scrollbar an das ding packen kann? :) danke btw |
Re: TLabel: Wieso verschindet der Text?
Also die Hintergrundfarbe ist nicht so das Problem:
Delphi-Quellcode:
Die Sache mit der Scrollbar ist allerdings nicht so trivial, mal schauen, ob ich da noch was basteln kann...
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin PaintBox1.Canvas.Brush.Color := clWhite; PaintBox1.Canvas.FillRect(PaintBox1.ClientRect); PaintTxt; end; Eine Scrollbar hatte ich gar nicht auf der Rechnung, weil Du mit einem Label experimentiert hattest, und das hat sowas ja nicht. Naja, mal schauen. |
Re: TLabel: Wieso verschindet der Text?
das ganze teil in ne scrollbox packen sollte doch ohne probleme ghehen, oder?
EDIT: man muss dann nur immer aktualisieren. |
Re: TLabel: Wieso verschindet der Text?
Mit etwas Frickelei geht es übrigens doch mit einer ScrollBox:
Eine Scrollbox aufs Form, darin ein Label mit Align := alBottom und AutoSize auf True. Das Label braucht kein spezielles Layout.
Delphi-Quellcode:
Warum einfach, wenns auch kompliziert geht...
procedure TForm1.Button1Click(Sender: TObject);
begin Txt := Txt+#13#10+Edit1.Text; Label1.Caption := Txt; ScrollBox1.VertScrollBar.Position := Label1.Height; end; Farbe sowohl im Label als auch in der Scrollbox einstellen, fertig. Gruß, teebee |
Re: TLabel: Wieso verschindet der Text?
Wow,
vielen Dank für die Mühe :) |
Re: TLabel: Wieso verschindet der Text?
Liste der Anhänge anzeigen (Anzahl: 1)
Mist, alles umsonst :wink: . Nein, zum Glück doch nicht, denn ich möchte nicht wissen, wieviel Ressourcen die Paintbox verbraucht, wenn man etwas Text eingegeben hat, da sie ja immer den ganzen Text enthält. Bei meiner Version zeichne ich nur den benötigten Ausschnitt, außerdem auf ein Offscreenbitmap. Ich hoffe, ich kann dir damit helfen.
|
Re: TLabel: Wieso verschindet der Text?
Die Paintbox enthält nicht den ganzen Text, Windows clippt automatisch, d.h. kein zusätzlicher Resourcenverbrauch. Aber mit Label+Scrollbox geht es ja eh besser.
Gruß, teebee |
Re: TLabel: Wieso verschindet der Text?
Hups, ich habe gedacht, dein Vorschlag wäre für Paintbox + Scrollbox :wink: . Aber da das nächste Ziel wohl farbiger Hintergrund heißt, wird wohl eine Paintbox benötigt werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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