Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Програмное нажатие кнопки. [D7, XP]


vegarulez ©   (2011-04-22 11:01:00) 

Привет всем Мастерам!
Комрады подскажите почему sender в первом случае передаётся а во втором нет. И второй момент почему они как бы не тождественны, или как первый случай кода минимизировать и сделать как второй?

1.
  for j:=0 to P_BT.ComponentCount-1 do
  begin
    if P_BT.Components[j] is TPNGButton then
      with (P_BT.Components[j] as TPNGButton) do
       BEGIN
       if name='BT_31' then
        btclick(P_BT.Components[j] as TPNGButton);
       END;
  end;


2.

  btclick(TPNGButton(FindComponent('BT_31')) as TPNGButton)

P.s. Ибо первый работает корректно - второй нет.


OW   (2011-04-22 13:40:00) [1]

зачем писать
if Obj is TType then
  (Obj as TType).Method
?

Уже проверили, Obj is TType = true, далее можно смело TType(Obj).Method
и короче писать и быстрее выполняется


HF-Trade   (2011-04-22 13:30:00) [2]

A)

Var
MyBtn: TObject;
Begin
MyBtn := FindComponent('BT_31');
IF MyBtn <> nil Then
 IF (MyBtn is TPNGButton) Then
  (MyBtn as TPNGButton).Click; // (MyBtn as TPNGButton).OnClick(Sender);
 
B)

IF (Sender is TPNGButton) Then
(Sender as TPNGButton).Click;

C)

IF (Sender is TPNGButton) Then
(Sender as TPNGButton).OnClick(Sender);


OW   (2011-04-22 13:03:00) [3]

не понятны манипуляции.
btclick( - что это? не знаю такое

как бы я написал (на скока понял)

procedure TForm1.btn1Click(Sender: TObject); // & btn2Click
begin
 if sender is TButton then
   mmo1.Lines.Add( TButton(Sender).Caption );
end;

procedure TForm1.btn3Click(Sender: TObject);
var
 i:Integer;
begin
 for i:=0 to ComponentCount-1 do
 begin
   if Components[i] is TButton then
    if TButton(Components[i]).Name = 'btn2' then
    begin
      TButton(Components[i]).Click;
      TButton(Components[i]).OnClick(Sender);
    end;  
 end;
end;

procedure TForm1.btn4Click(Sender: TObject);
var
 B: TComponent;
begin
 B := FindComponent('btn1');
 if B nil then
   if B is TButton then
   begin
     TButton(B).Click;
     TButton(B).OnClick(Sender);
   end;
end;


clickmaker   (2011-04-22 11:08:00) [4]

> а во втором нет

значит FindComponent('BT_31') = nil

вообще, у TButton есть метод Click


Наверх

Титульная страница Поиск, карта сайта Написать письмо