Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponente will sich nicht neu zeichnen (https://www.delphipraxis.net/4862-komponente-will-sich-nicht-neu-zeichnen.html)

phlux 15. Mai 2003 09:37

Okay danke für den Hinweis :thumb: dem werd ich mal nachgehen!!

APP 15. Mai 2003 11:05

Hallo,
wieder mal ganz kurz:
Ich Denke Du müßtest in Deiner Komponente eigene TString Klasse ableiten und benutzen, dort die Methode TSring.Add "Overriden" (ist virtuell) und dort die TControlTabs.Paint Methode ausführen...

Jens Schumann 15. Mai 2003 11:53

Hallo,
du musst im private Abschnitt deiner Komponente einen EventHandler für das OnChange Event von TStringList schreiben.
z.B.

Delphi-Quellcode:
private
  ...
  procedure ItemsChange(Sender : TObject);
  ...
Deinen constructor musst dann wie folgt erweitern:
Delphi-Quellcode:
constructor TControlTabs.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := [csCaptureMouse, csClickEvents, csOpaque, csReplicatable, csMenuEvents];
  Align := alTop;
  Height := 24;
  FButtonGap := 3;
  FButtonHeight := 20;
  FIndent := 3;
  FItems := TStringList.Create;

  FItems.OnChange:=ItemsChange;

  fButtonColor := clSkyBlue;
  SetLength(FButtons, 0);
  FBackgroundColor := clSilver;
end;
ItemsChange könnte dann so aussehen:
Delphi-Quellcode:
procedure TControlTabs.ItemsChange(Sender : TObject);
begin
  Paint; oder Invalidate; aufrufen
end;
Jetzt wird ItemsChange aufgerufen, wenn Du ControlTabs1.Items.Add('Test'); verwendest.

phlux 15. Mai 2003 11:53

Hi App!
Ich veroflge auch grade den gedanken die klasse TStrings abzuleiten und dann die Methode Add zu "overriden", jedoch weiß ich jetzt nicht wie ich dann auf die Methode Paint zurückgreifen soll (TStrings hat kein Owner oder Parent). Ich wollte mir jetzt damit behelfen dem constructor noch eine Komponente (in dem Falle ein TControlTabs) zu übergeben, damit ich auf die Methode Paint zurückgreifen kann. Oder gibt es eine andere Möglichkeit???

[edit]Oder ich versuchs nach der Methode von Jens, die scheint einfacher zu sein ;)[/edit]

phlux 15. Mai 2003 12:14

:hello: Danke euch beiden, es klappt :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr.
Seite 2 von 2     12   

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