2009-08-04 4 views
2

Je suis désolé si la question semble stupide, mais il semble que je ne peux pas utiliser correctement ma tête dans les dernières heures.Comment ajouter des boutons créés lors de l'exécution dans un tableau?

j'ai une fiche,

type 
    TMain = record 
    Sub:Array of TSubMain; //another record 
    Button:TsSpeedButton; //this is what we need! 
    end; 

une variable

Main:Array of TMain; 

et la fonction:

procedure TFrameSkilLView.CreateButtons(MainBtns,SubMainBtns:byte;title:Array of string); 
var i,t,l,w,h:word; 
section:string; 
begin 
    l := 41; t:= 57; w := 58; h := 25; 
    section := 'TOOLBTN_SKILLS_MAIN'; 
    for i := 0 to MainBtns + subMainBtns - 1 do 
    with TsSpeedButton.Create(nil) do begin 
    Width := w; Height := h; Top := t; Left := l; 
    if(i = 0) then SkinData.SkinSection := section + '_C' else skindata.SkinSection := section; 
    caption := title[i]; 
    Parent := Self; 
    inc(l,w+4); 
    if(i = MainBtns - 1) then begin 
     l := 52; t := 83; w := 64; h := 28; 
     section := 'TOOLBTN_SKILLS_SUBMAIN'; 
    end; 
    end; 
end; 

permet de se concentrer sur la boucle « pour i: = 0 à MainBtns + subMainBtns - Je voudrais ajouter le bouton créé ci-dessous au tableau créé ci-dessus nommé 'Main: Array of Tmain'.

Il devrait ressembler à ceci:

for i:=0 to X do 
with TsSpeedButton.Create(nil) do begin 
Main[i] := this; //where this is the created sSpeedButton. 

ute, ce code ne peut pas être même compilé, donc je demande un moyen faisable d'accomplir ce que je suis en train de faire.

Merci.

Répondre

3

Tout d'abord, "this" est C++, pas Pascal. La version Delphi est "Self". Deuxièmement, vous ne pouvez pas faire référence à l'objet with-ed par son nom. Vous feriez mieux de ne pas utiliser with du tout. Essayez quelque chose comme ceci:

for i:=0 to X do 
begin 
    tempButton := TsSpeedButton.Create(nil); 
    Main[i] := tempButton; 
    //whatever else 
end; 
+0

Hmm J'ai trouvé un moyen beaucoup plus efficace d'accomplir cela, mais j'apprécie votre réponse.Accepté. :) –

+0

OK. Alors, quel est votre meilleur moyen, juste par curiosité? –

Questions connexes