Topic: Как определить кнопку, по корой открыли форму?

Здравствуйте! Есть такая простая задача: например есть 4 кнопки. При нажатии на каждую открывается одна и та же форма редактирования записи БД. Как на этой форме редактирования узнать, по какой кнопке она открыта?

Re: Как определить кнопку, по корой открыли форму?

Приветствую,


можно так, где Button1 и Button2 кнопки для редактирования


procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
    Form2.Tag:=1;
end;

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);
begin
    Form2.Tag:=2;
end;

procedure Form2_OnShow (Sender: string; Action: string);
begin
    if Action='ShowRecord' then
    begin
       if Form2.Tag=1 then ShowMessage('Button1');
       if Form2.Tag=2 then ShowMessage('Button2');
    end;
end;
Dmitry.

Re: Как определить кнопку, по корой открыли форму?

А вот такой вариант чем плох, с одинаковой процедурой для обеих кнопок:

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
begin
ShowMessage(Sender);
end;

Я таким путем пошла, все работало smile

Re: Как определить кнопку, по корой открыли форму?

lenochka.detka
Действительно, так проще, спасибо )

Dmitry.

5 (edited by levrussia174 2024-04-16 15:39:49)

Re: Как определить кнопку, по корой открыли форму?

Здравствуйте! Как сделать определение нажатие нескольких кнопок из одной формы, которые вызывают одну и туже форму, но при нажатии на кнопку "Выбрать" в соответствии на какую кнопку изначально нажали в такой edit перенесётся выбранное значение?

Обращаюсь, так как перепробовал разные варианты условий, так и не получил правильного результата

С одной кнопкой и определение формы работает, но с 2 кнопками, теперь вопрос...

Проект прилагаю.

Post's attachments

Attachment icon gold3.rar 462.52 kb, 20 downloads since 2024-04-16 

Re: Как определить кнопку, по корой открыли форму?

У кнопок добавляете обработчик, в котором в тег формы записываете нажимаемую кнопку:

procedure frm_add_new_category_bt1_select_OnClick (Sender: TObject; var Cancel: boolean);
begin
  frm_select_slovar.Tag := ObjectToInt(Sender);
end;

А потом вытаскиваете кнопку и смотрите, что за кнопка. И меняете логику работы:

procedure frm_select_slovar_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
  btn: TdbButton;
begin
  if frm_select_slovar.Tag <> 0 then
  begin
    btn := TdbButton( frm_select_slovar.Tag );
    ShowMessage(btn.Name); // какую кнопку нажали
    frm_select_slovar.Tag := 0;
  end;
  //
...
end;
Post's attachments

Attachment icon gold3.rar 1.03 mb, 13 downloads since 2024-04-21 

Визуальное программирование: блог и телеграм-канал.