![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Главное отличие использование метода CreateNew вместо Create. Конструктор
Код:
constructor TMyForm.CreateNew(AOwner: TComponent);
var
NonClientMetrics: TNonClientMetrics;
begin
inherited CreateNew(AOwner);
NonClientMetrics.cbSize := sizeof(NonClientMetrics);
if SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0) then
Font.Handle := CreateFontIndirect(NonClientMetrics.lfMessageFont);
end; |
|
#17
|
|||
|
|||
|
Доброго всем времени суток!
Допустим, что имеем: Код:
type
TSoundButton = class(TButton)
.....
Procedure CreateButtons(DirName: string);
var
Sbutton1 : TSoundButton;
begin
Sbutton1:= TSoundButton.Create(Form1);//ñîçäà¸ì êíîïêó íà ôîðìå
with Sbutton1 do
begin
Name:= 'SButton' + inttostr(ButCount);
Height:= 25;
Width:= 170;
Left := 8;
Top := Top_;
Caption := DirName;
Enabled:= true;
Visible := true;
parent:=form1.ScrollBox1;
Sbutton1.OnClick := Form1.SButtonClick;
form1.ListBox1.Items.Add(Sbutton1.Name);
end;
Top_:= Top_ + 30;
Inc (ButCount);
end;
procedure TForm1.SButtonClick(Sender: TObject);
....Так вот и сам вопрос: как мне из обработчика события Sbutton1.OnClick добраться(использовать) до св-ва Caption := DirName; RunTime созданной Sbutton? Заранее благодарен |
|
#18
|
||||
|
||||
|
Создай свой топик, не какай в чужих!!!
|
|
#19
|
||||
|
||||
|
Либо объявляейте массив кнопок глобально, либо через перебор компонентов родителя кнопок
|
|
#20
|
|||
|
|||
|
Цитата:
Код:
var Form1: TForm1; But: Array of TSoundButton; .... Код:
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;И в чём тут соль??? З. Ы. А если не секрет: как перебираются компоненты родителя кнопок? спапибо |
|
#21
|
|||
|
|||
|
Цитата:
Последний раз редактировалось UFO 007, 10.07.2011 в 21:54. |
|
#22
|
||||
|
||||
|
Цитата:
Цитата:
Последний раз редактировалось angvelem, 10.07.2011 в 22:06. |
|
#23
|
||||
|
||||
|
Этот код:
Код:
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;Код:
...
ButCount := 0; // где то на старте
Procedure CreateButtons(DirName: string);
begin
SetLength(But, ButCount + 1);
But[ButCount] := TSoundButton.Create(Form1);//ñîçäà¸ì êíîïêó íà ôîðìå
with But[ButCount] do
begin
Name:= 'SButton' + inttostr(ButCount + 1);
.....
parent:=form1.ScrollBox1;
Sbutton1.OnClick := Form1.SButtonClick;
// But[ButCount]:= Sbutton1;
//form1.ListBox1.Items.Add(Sbutton1.Name);
end;
inc(Top_, 30);
inc(ButCount);
end; |
|
#24
|
|||
|
|||
|
Что-то я не догнал, что надо сделать...
Код:
procedure TForm1.SButtonClick(Sender: TObject); begin Showmessage((Sender as TSoundButton).Caption); end; Так что ли? |
|
#25
|
|||
|
|||
|
Ребят, я конечно извиняюсь, но все мы {angvelem, сорри - Вас это не каксается} проглядели одну элементарную вещь: размер массива - [0..Max_Path] и EAccessViolation кончилась... А вот как теперь узнать "номер" нажатой кноки и через него, как через индекс, обратиться к массиву и вытащить нужные данные?
Спасибо Последний раз редактировалось UFO 007, 11.07.2011 в 10:03. |
|
#26
|
|||
|
|||
|
Цитата:
|
|
#27
|
||||
|
||||
|
Цитата:
|
|
#28
|
||||
|
||||
|
Цитата:
Последний раз редактировалось angvelem, 12.07.2011 в 00:24. |
|
#29
|
|||
|
|||
|
Скорее всего я опять не понял, но...
|
|
#30
|
||||
|
||||
|
Цитата:
|