![]() |
Eigene Komponente: Label auf TCustomPanel platzieren
Hallo liebe Gemeinde ;-),
ich habe momentan ein Problem beim Erstellen eines Labels innerhalb meiner, von mir erstellen, Komponente. Das Label ist einfach nicht zu sehen. Kann bitte mir einer einen kurzen Denkanstoß geben? Hier der verkürzte Quelltext:
Delphi-Quellcode:
unit Ctrl_ListItem;
interface uses SysUtils, Classes, Controls, ExtCtrls, StdCtrls, Graphics,dialogs; type TCtrl_ListItem = class(TWinControl) private FUrl: string; FDescription: string; procedure SetLabel_Url(const Value: string); procedure SetLabel_Description(const Value: string); function ReadLabel_Url: string; function ReadLabel_Description: string; protected Label_Url: TLabel; Label_Description: TLabel; public constructor Create(AOwner: TComponent); //override; published property Url: string read FUrl write SetLabel_Url; property Description: string read FDescription write SetLabel_Description; end; procedure Register; implementation procedure Register; begin RegisterComponents('Standard', [TCtrl_ListItem]); end; { TCtrl_ListItem } constructor TCtrl_ListItem.Create(AOwner: TComponent); begin inherited Create(AOwner); // csAcceptsControls ist gesetzt //ControlStyle := [csAcceptsControls, csCaptureMouse, csClickEvents, // csSetCaption, csOpaque, csDoubleClicks, csReplicatable]; self.Label_Url := TLabel.Create(self.Owner); //NOTWENDIG??????????? self.Label_Description := TLabel.Create(self); Self.Align := alTop; self.Color := clCream; self.Font.Color := clCream; self.Label_Url.ParentColor := false; self.Label_Url.ParentFont := false; self.Label_Url.Top := 8; self.Label_Url.Left := 8; self.Label_Url.Font.Color := clBlue; self.Label_Url.Font.Style := [fsBold]; self.Label_Url.Font.Size := 10; self.Label_Url.Cursor := crHandPoint; self.Label_Description.ParentColor := false; self.Label_Description.ParentFont := false; self.Label_Description.Top := 24; self.Label_Description.Left := 8; self.Label_Description.Font.Color := clblack; self.Label_Description.Font.Style := [fsBold]; self.Label_Description.Font.Size := 8; self.Label_Description.Height := 33; self.Label_Description.Width := self.Width - 8; self.Label_Description.Anchors := [akLeft, akTop, akRight]; self.Label_Url.BringToFront; self.Label_Description.BringToFront; Invalidate; end; function TCtrl_ListItem.ReadLabel_Description: string; begin result := FDescription; end; function TCtrl_ListItem.ReadLabel_Url: string; begin result := FUrl; end; procedure TCtrl_ListItem.SetLabel_Description(const Value: string); begin self.FDescription := Value; self.Label_Description.Caption := Self.FDescription; Invalidate; end; procedure TCtrl_ListItem.SetLabel_Url(const Value: string); begin self.FUrl := Value; self.Label_Url.Caption := Self.FUrl; Invalidate; end; end. Danke. Gruß und noch einen angenehmen 3. Advent :feuerchen: |
AW: Eigene Komponente: Label auf TCustomPanel platzieren
Setz einmal den Parent der Labels auf self.
|
AW: Eigene Komponente: Label auf TCustomPanel platzieren
Ja, danke DeddyH. Dies war ausschlaggebend für das Darstellen. Super!
(Habe noch bei der Constructor-Deklaration ein override hinzugefügt. :xmas: ) |
AW: Eigene Komponente: Label auf TCustomPanel platzieren
BringToFront und Invalidate sollten im Konstruktor nicht aufgerufen werden.
Der Aufruf von Invalidate ist auch an anderer Stelle unnötig, weil ein Label bei Änderung der Caption schon selbst dafür sorgt, dass es neu gezeichnet wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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