![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравстуйте, у меня есть такой вопрос. Можно ли обратиться к объекту зная лишь имя? Т.е. например на форме находится 3 кнопки. При нажатии на каждую из этих кнопок в глобальную переменную сохраняется имена этих кнопок.
Код:
var
Form1: TForm1;
btnname: string;
implementation
{$R *.dfm}
procedure TForm1.sSpinEdit1Change(Sender: TObject);
var
a: TsButton;
begin
a.Name:= btnname;
sSpinEdit1.Value:= a.Top;
a.Top:= sSpinEdit1.Value;
end;
procedure TForm1.sButton1Click(Sender: TObject);
begin
btnname:= 'sButton1';
end;
procedure TForm1.sButton2Click(Sender: TObject);
begin
btnname:= 'sButton2';
end;
procedure TForm1.sButton3Click(Sender: TObject);
begin
btnname:= 'sButton3';
end;
procedure TForm1.sSpinEdit2Change(Sender: TObject);
var
a:TsButton;
begin
a.Name:= btnname;
sSpinEdit2.Value:= a.left;
a.left:= sSpinEdit2.Value;
end;
end. |
|
#2
|
||||
|
||||
|
Во-первых, можно сохранить не имя, а Sender, переданный в функцию sButton1Click. Это и есть кнопка.
Во-вторых, есть FindComponent |
|
#3
|
|||
|
|||
|
Код:
procedure TForm1.sSpinEdit1Change(Sender: TObject); var MyComponent: TComponent; begin MyComponent:= FindComponent(btnname); TsButton(MyComponent).Top:= sSpinEdit1.Value; end; Последний раз редактировалось BlackMonsta, 23.03.2015 в 22:05. |
|
#4
|
||||
|
||||
|
А ведь в том же сообщении было и куда более адекватное и логичное решение, но его ты решил проигнорировать.
![]() |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Freeman (24.03.2015)
| ||