Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.03.2015, 21:42
BlackMonsta BlackMonsta вне форума
Новичок
 
Регистрация: 22.12.2013
Сообщения: 67
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Обращение к объекту зная имя

Здравстуйте, у меня есть такой вопрос. Можно ли обратиться к объекту зная лишь имя? Т.е. например на форме находится 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.
Вот допустим к примеру такая программа. Глобальная переменная btnname куда записывается имя кнопки которая была нажата. И допустим я хочу с помощью SpinEdit изменить ее расположение зная лишь имя объекта который записан в btnname
Ответить с цитированием
  #2  
Старый 23.03.2015, 21:45
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Во-первых, можно сохранить не имя, а Sender, переданный в функцию sButton1Click. Это и есть кнопка.
Во-вторых, есть FindComponent
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 23.03.2015, 21:54
BlackMonsta BlackMonsta вне форума
Новичок
 
Регистрация: 22.12.2013
Сообщения: 67
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
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  
Старый 24.03.2015, 20:07
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А ведь в том же сообщении было и куда более адекватное и логичное решение, но его ты решил проигнорировать.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
Freeman (24.03.2015)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025