Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как узнать на что нажали


Автор: Кощей 22.6.2009, 17:25
У меня динамически создаются несколько кнопок. Создаются по описанию из  инишника. Можно как нибудь узнать к примеру какая из кнопок была нажата и вызвыла эту процедуру?

Автор: THandle 22.6.2009, 17:55
Кощей, узнавай в OnClick через Sender. Можно через свойство Name, можно Tag каждой свой поставить. 

Что то типа:
Код


procedure TForm2.ButtonClick(Sender: TObject);
begin
  if Sender is TComponent then
    if (Sender as TComponent).Name = 'Button1' then
      ShowMessage('Нажата Button1');
end;


Вообще различных примеров на форуме навалом. smile

Автор: Кощей 22.6.2009, 17:59
Прост не знал как в поиск забить, спасибо огромное

Автор: Кощей 22.6.2009, 19:04
А как выполнить действие над компонентом если его название имеется только в виде строки?

Автор: Данкинг 22.6.2009, 19:24
Цитата(Кощей @  22.6.2009,  20:04 Найти цитируемый пост)
А как выполнить действие над компонентом если его название имеется только в виде строки? 

1. Одна тема - один вопрос.
2. Не понял, чего ты хочешь. smile 

Автор: Кощей 22.6.2009, 19:56
нужно поставить visible:= true для компонента....создается так же динамически, и имя его генерируется так же...но не хочется загонять в массив...

т.е.  к примеру 

Код

With TImage.Create(Self) do
  begin
    Name:= NameBtn;
    Parent:= Panel;
    Picture.LoadFromFile(AddressBtnFile);
    Top:= 0;
    Left:= LeftBtn;
    Height:= 32;
    Width:= 32;
    Proportional:= true;
    Visible:= false;
 end;
 


, и нужно  в одной процедуре показать эту картинку....

Автор: Rohoss 22.6.2009, 20:12
Надо перебирать все компоненты владельца, что то вроде такого
Код

var
  I: Integer;
begin
  for I := 0 to Self.ComponentCount - 1 do
  begin
    if (Self.Components[I].Name = 'MyComponent') then
    begin
     (Self.Components[I] as TWinControl).Visible = True;
    end;
  end;
end;

Автор: Кощей 22.6.2009, 20:16
спс...чет тормознулся я...

тольке не Вин контрол а TControl

Автор: Keeper89 22.6.2009, 20:43
Цитата(Кощей @  22.6.2009,  21:16 Найти цитируемый пост)
тольке не Вин контрол а TControl

Если известно, что за компонент, проще вообще TButton.

Автор: Кощей 23.6.2009, 15:30
Ну да...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)