AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCollection - objekte anzeigen

Ein Thema von Andreas L. · begonnen am 10. Feb 2008 · letzter Beitrag vom 11. Feb 2008
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

TCollection - objekte anzeigen

  Alt 10. Feb 2008, 14:45
Hi,

ich hab mir folgende TEST-Kompo geschrieben.

Delphi-Quellcode:
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.
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?
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#2

Re: TCollection - objekte anzeigen

  Alt 10. Feb 2008, 15:25
Ich habe jetzt einen weitere Typen definiert und die prozedur Notify überschrieben:

Delphi-Quellcode:
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;
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?
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: TCollection - objekte anzeigen

  Alt 10. Feb 2008, 19:48
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...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TCollection - objekte anzeigen

  Alt 10. Feb 2008, 20:22
Hallo Andreas,

kannst du erklären, warum du die Komponente TScrollBox um FItems erweitern willst?

Freundliche Grüße
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: TCollection - objekte anzeigen

  Alt 10. Feb 2008, 21:27
Zitat von marabu:
Hallo Andreas,

kannst du erklären, warum du die Komponente TScrollBox um FItems erweitern willst?

Freundliche Grüße
Ich möchte damit eine ListBox ähnliche Komponente bauen. In fItems sollen die Items, welche über den OI hinzugefügt werden können, gespeichert werden.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#6

Re: TCollection - objekte anzeigen

  Alt 11. Feb 2008, 17:24
Weiß denn keiner wie ich das Problem behebe?
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:28 Uhr.
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