Цитата:
|
Сообщение от Страдалецъ
Либо объявляейте массив кнопок глобально, либо через перебор компонентов родителя кнопок
|
и действительно, без массива - никак, т. к. поутру оказалось, что все кнопки (хоть и с разными .Caption) являются клонами одного экземпляра... Добрался я и до .Caption, и до .Name (стоило лишь декларацию Sbutton1 : TSoundButton; сделать не локальной [в процедуре], а глобальной [перед implementation]), но ListBox1 отображал: Sbutton3(Наме) и Util(Кэпшн) на какую кнопку не ткни.... Хорошо - объявляю
Код:
var
Form1: TForm1;
But: Array of TSoundButton;
....
локально объявлять бессмысленно - исчезнет по end процедуры, но
Код:
Procedure CreateButtons(DirName: string);
begin
Sbutton1:= TSoundButton.Create(Form1);//ñîçäà¸ì êíîïêó íà ôîðìå
with Sbutton1 do
begin
Name:= 'SButton' + inttostr(ButCount);
.....
parent:=form1.ScrollBox1;
Sbutton1.OnClick := Form1.SButtonClick;
But[ButCount]:= Sbutton1;
//form1.ListBox1.Items.Add(Sbutton1.Name);
end;
Top_:= Top_ + 30;
Inc (ButCount);
end;
при компилировании вызывает ошибку EAccessViolation...
И в чём тут соль???
З. Ы. А если не секрет: как перебираются компоненты родителя кнопок?
спапибо