2009-08-04 3 views
2

Прошу прощения, если вопрос выглядит глупо, но кажется, что я не могу правильно использовать свою голову в последние часы.Как добавить кнопки, созданные во время выполнения в массив?

У меня есть запись,

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

переменная

Main:Array of TMain; 

и функции:

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; 

Позволяет сосредоточиться на петле «для I: = 0 до MainBtns + subMainBtns - 1'.Я хотел бы добавить кнопку, созданную ниже, к массиву, созданному над именем «Main: Array of Tmain».

Он должен выглядеть следующим образом:

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

Howeve, этот код может даже не быть скомпилирован, поэтому я прошу выполнимо способ сделать то, что я пытаюсь сделать.

спасибо.

ответ

3

Во-первых, «это» - это C++, а не Pascal. Версия Delphi - «Я». Во-вторых, вы не можете ссылаться на выделенный объект по имени. Вам лучше не использовать with. Попробуйте что-то вроде этого:

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

Хм я нашел гораздо более эффективный способ добиться этого, но я ценю ваш ответ. Принято. :) –

+0

OK. Так что твой лучший способ, просто из любопытства? –

Смежные вопросы