AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TMyLabel - Refresh-Problem

Ein Thema von scrat1979 · begonnen am 13. Feb 2007 · letzter Beitrag vom 14. Feb 2007
 
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#1

TMyLabel - Refresh-Problem

  Alt 13. Feb 2007, 22:51
Hallo zusammen,

Ich habe kein kleines Problem mit einer (Zu Lernzwecken!) erstellten Komponente. Dass es auch einfacher mit einer von TLabel abgeleiteten Komponente geht, ist klar, nur möchte ich eben ein paar Dinge ausprobieren und dabei ist mir die Idee mit dieser einfachen grafischen Komponente gekommen. Das Erstellen und Anzeigen der Komponente funktioniert einwandfrei. Wird aber nun z.B. das Formular verkleinert und die Komponente etws verdeckt, dann "verschmiert" die Komponente beim erneuten vergrössern des Formulares. Ein "Repaint", "Update" etc. in der Paint-Routine hat nichts gebracht. Hoffe Ihr könnt mir weiterhelfen.

Delphi-Quellcode:
type
  TMyLabel = class(TCustomControl)
  private
    { Private-Deklarationen }
    FText : String;
    procedure SetFText(Value : String);

  protected
    { Protected-Deklarationen }
    procedure Paint; override;

  public
    { Public-Deklarationen }
    constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;
  published
    property Text : String read FText write SetFText;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

constructor TMyLabel.Create(AOwner: TComponent);
begin
  inherited;
end;

destructor TMyLabel.destroy;
Begin
  inherited;
End;

procedure TMyLabel.SetFText(Value: string);
begin
  FText := Value;
  Invalidate;
end;

procedure TMyLabel.Paint;
begin
 
  inherited;

  // Falls in der IDE, dann getrichelten Rahmen anzeigen
  if csDesigning in ComponentState then
  begin
 
    Canvas.Brush.style := bsClear;
    Canvas.Pen.style := psDashDot;
    Canvas.Rectangle(0,0,width,height);

 
    canvas.TextOut((width - Canvas.TextWidth(FText)) div 2,(height - Canvas.TextHeight(FText)) div 2,FText);

    exit;
  end;

   // Zur Laufzeit einen Rahmen + Text in der Mitte anzeigen
   With Canvas do Begin;
    Canvas.Brush.Style := bsClear;
    Rectangle(Canvas.ClipRect);
    TextOut((width - Canvas.TextWidth(FText)) div 2,(height - Canvas.TextHeight(FText)) div 2,FText);
  End;

end;
SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:41 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