![]() |
TCollection - objekte anzeigen
Hi,
ich hab mir folgende TEST-Kompo geschrieben.
Delphi-Quellcode:
Wenn ich jetzt während der Runtime refresh aufrufe werden alle Labels angezeigt. Was muss ich tun damit diese bereits bei der DesignTime zu sehen sind?
unit ScrollBox1;
interface uses SysUtils, Classes, Controls, Forms, Stdctrls; type TItem = class(TCollectionItem) private fCaption: TCaption; published property Caption: TCaption read fCaption write fCaption; end; type TScrollBoxtest = class(TScrollBox) private fItems: TCollection; protected procedure setitems(value: Tcollection); public procedure Refresh; published constructor Create(Aowner: tComponent); override; destructor Destroy; override; property items: tcollection read fitems write setitems; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TScrollBoxtest]); end; constructor tScrollboxtest.Create(Aowner: TComponent); begin inherited Create(Aowner); fitems := TCollection.Create(titem); end; destructor tscrollboxtest.Destroy; begin fItems.Free; inherited destroy; end; procedure tscrollboxtest.Refresh; var i: Integer; lbl: TLabel; begin for i := ComponentCount -1 downto 0 do Components[i].Free; for i := 0 to fItems.Count -1 do begin lbl := TLabel.Create(Self); lbl.Align := altop; lbl.Caption := (fitems.items[i] as titem).Caption; lbl.Refresh; lbl.Parent := self; lbl.Visible := true; end; end; procedure tscrollboxtest.setitems(value: TCollection); begin fitems.Assign(value); refresh; end; end. |
Re: TCollection - objekte anzeigen
Ich habe jetzt einen weitere Typen definiert und die prozedur Notify überschrieben:
Delphi-Quellcode:
Doch die Labels werden nicht angezeigt. Und ich weiß auch warum so wohl der Setter meiner Basisklasse sowie das Notify-Ereignis werden nie aufgerufen. Warum?
type
Titemcollection = class(tcollection) protected procedure Notify(Item: TCollectionItem; Action: TCollectionNotification); virtual; end; ... ... procedure titemcollection.Notify(Item: TCollectionItem; Action: TCollectionNotification); begin inherited Notify(item, action); (owner as Tscrollboxtest).Refresh; end; |
Re: TCollection - objekte anzeigen
Jetzt in jeder Add, Delete, etc. Routine Refresh aufrufen finde ich irgendwie umständlich. Laut Delphi-hilfe muss ich nur EndUpdate überschreiben. Aber diese Routine wird nie aufgerufen und ich weiß nicht warum. Bin am verzweifeln...
|
Re: TCollection - objekte anzeigen
Hallo Andreas,
kannst du erklären, warum du die Komponente TScrollBox um FItems erweitern willst? Freundliche Grüße |
Re: TCollection - objekte anzeigen
Zitat:
|
Re: TCollection - objekte anzeigen
Weiß denn keiner wie ich das Problem behebe?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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