Hallo daar,
Heb een moeilijk vraagje in die zin dat ik het moeilijk geformuleerd krijg ;-)
Wat ik wil doen is het volgende: iedere keer als een bepaalde waarde voorkomt in een tabel, wil ik een object creëren ( nee, het is geen database vraag ;-).
Dit object is er eentje dat ik zelf gedefinieerd heb. In de constructor van het object, creëer ik een TPanel dat op mijn form moet getoond worden. Maw iedere keer als de waarde voorkomt in de tabel, wil ik een TPanel op mijn form ( er gebeuren nog andere dingen in mijn object maar die zijn hier niet relevant ).
Mijn probleem: een variabele moet je declareren voor je'm kan gebruiken in Delphi maar aangezien ik vooraf niet weet hoeveel er gaan nodig zijn kan ik ze ook niet declareren.
Daarom dacht ik een array te maken van mijn zelf gedefinieerd object en dan iedere keer er eentje aan te maken via het array ( ben je nog mee? ). Dit doe ik bij de OnCreate van mijn form.
Zo ziet het er een beetje uit:
Zoals je al kan raden werkt het niet: ik krijg een access violation. Kan iemand me ff zeggen wat ik fout doe? Waarschijnlijk ongeveer alles ;-)Code://mijn object TMyPanelObject = class private panelItem: TPanel public constructor Create(MyPanelOwner: TComponent); end; implementation constructor TMyPanelObject.Create(MyPanelOwner: TComponent); begin panelItem := TPanel.Create(Application); panelItem.Height := 100; panelItem.Width := 100; panelItem.Parent := MyPanelOwner as TWinControl; end; //in mijn form var {het array van mijn object, in de veronderstelling dat het max. 10 keer voorkomt in de tabel } myPanelArray: array[1..10] of TMyPanelObject; procedure TMyForm.Create(Sender: TObject) var i: integer; begin for i := 0 to table.EOF do //voor iedere keer dat een veld voorkomt begin (myPanelArray[i] as TMyPanelObject).Create(MyForm); end; end;
Alvast bedankt!
Bookmarks