Results 1 to 6 of 6

Thread: runtime componenten cre?½ren

  1. #1

    runtime componenten cre?½ren

    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:

    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;
    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 ;-)

    Alvast bedankt!
    Last edited by bava; 04-Feb-03 at 14:27.

  2. #2
    TCrapCodeProducer JackBigMac's Avatar
    Join Date
    May 2002
    Location
    Rotterdam
    Posts
    1,293
    Code:
    procedure MyForm.Create(Sender: TObject)
    var
      i: integer;
    begin
      for i := 0 to table.EOF do //voor iedere keer dat een veld voorkomt
      begin
        if i <= 10 then
          myPanelArray[i] := TMyPanelObject.Create;    
        table.Next; //Om een oneindige loop te voorkomen.
      end;
    end;
    It is in change that we find purpose.

  3. #3
    OK, die was ik vergeten mee te kopiëren ;-)

    Maar geen idee wat ik fout doe?

  4. #4
    TCrapCodeProducer JackBigMac's Avatar
    Join Date
    May 2002
    Location
    Rotterdam
    Posts
    1,293
    Code:
    (myPanelArray[i] as TMyPanelObject).Create;
    Je roept hier myPanelArray[i] aan, terwijl deze nog gecreëerd moet worden, dus:

    Code:
    myPanelArray[i] := TMyPanelObject.Create;
    Het is hier misschien ook handiger om een TObjectList of een TCollection te gebruiken om je panelobjecten in te bewaren.
    It is in change that we find purpose.

  5. #5
    Dankjewel: had ik even over het hoofd gezien. Nu werkt ie wel!

    Bedankt!

  6. #6
    En ik zou netheidshalve ook de regel

    constructor Create(MyPanelOwner: TComponent);

    willen vervangen door:

    constructor Create(AOwner: TComponent); override;
    1+1=b

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Runtime componenten niet zichtbaar
    By pelleke in forum Algemeen
    Replies: 10
    Last Post: 07-Jan-05, 00:54
  2. RaveReport Runtime, componenten doorlopen.
    By Dees in forum Algemeen
    Replies: 6
    Last Post: 20-Jul-04, 19:32
  3. Componenten maken in runtime
    By Anton Sr. in forum Algemeen
    Replies: 15
    Last Post: 05-Jul-04, 21:54
  4. Runtime aanmaken componenten...?
    By fscharff in forum Algemeen
    Replies: 2
    Last Post: 25-Jul-03, 03:16
  5. componenten runtime creeeren
    By jakees in forum Algemeen
    Replies: 4
    Last Post: 26-Mar-03, 11:28

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •