Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TLabel: Wieso verschindet der Text? (https://www.delphipraxis.net/43346-tlabel-wieso-verschindet-der-text.html)

Pseudemys Nelsoni 2. Apr 2005 12:36


TLabel: Wieso verschindet der Text?
 
Moin,

ich habe ein grossgezogenes label auf meiner form und füge so text hinzu(per button):

Delphi-Quellcode:
  Label1.Caption := Label1.Caption + Edit1.Text + #13#10;
Layout ist "tlBottom"...

so wenn das label nun voll ist, beginnt der text bei jedem klick von unten zu verschinden...wieso ist das so?

Dax 2. Apr 2005 12:38

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 ;)

bttb930 2. Apr 2005 12:39

Re: TLabel: Wieso verschindet der Text?
 
vermutlich weil du immer einen zeilenwechsel anhängst

Pseudemys Nelsoni 2. Apr 2005 13:06

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

Torpedo 2. Apr 2005 13:10

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.

Pseudemys Nelsoni 2. Apr 2005 13:11

Re: TLabel: Wieso verschindet der Text?
 
ich brauch aber ein control das kein caret hat :\

Dax 2. Apr 2005 13:20

Re: TLabel: Wieso verschindet der Text?
 
Nimm doch eine ScrollBox und setz ein AutoSize(true)-Label rein ;)

Pseudemys Nelsoni 2. Apr 2005 13:25

Re: TLabel: Wieso verschindet der Text?
 
moin dax,

wenn verkleinert sich das label trotzdem :\

teebee 2. Apr 2005 13:41

Re: TLabel: Wieso verschindet der Text?
 
Hab auf die Schnelle was gebastelt:
Delphi-Quellcode:
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.
Macht genau das, was Du willst.
PaintBox, Edit und Button aufs Form.

Gruß, teebee

Pseudemys Nelsoni 2. Apr 2005 13:52

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

teebee 2. Apr 2005 14:09

Re: TLabel: Wieso verschindet der Text?
 
Also die Hintergrundfarbe ist nicht so das Problem:
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
 PaintBox1.Canvas.Brush.Color := clWhite;
 PaintBox1.Canvas.FillRect(PaintBox1.ClientRect);
 PaintTxt;
end;
Die Sache mit der Scrollbar ist allerdings nicht so trivial, mal schauen, ob ich da noch was basteln kann...
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.

DGL-luke 2. Apr 2005 14:20

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.

teebee 2. Apr 2005 14:23

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:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Txt := Txt+#13#10+Edit1.Text;
 Label1.Caption := Txt;
 ScrollBox1.VertScrollBar.Position := Label1.Height;
end;
Warum einfach, wenns auch kompliziert geht...
Farbe sowohl im Label als auch in der Scrollbox einstellen, fertig.

Gruß, teebee

Pseudemys Nelsoni 2. Apr 2005 14:32

Re: TLabel: Wieso verschindet der Text?
 
Wow,

vielen Dank für die Mühe :)

Khabarakh 2. Apr 2005 15:01

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.

teebee 2. Apr 2005 15:11

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

Khabarakh 2. Apr 2005 15:19

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