Topic: определить форму

помогите !!

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

Re: определить форму

Привет Sibprogsistem,
Возможно, попробуйте так..
С уважением,
Derek.

Post's attachments

Attachment icon which form.zip 373.39 kb, 160 downloads since 2022-04-04 

Re: определить форму

derek wrote:

Возможно, попробуйте так..

Супер, спасибо!!!

Re: определить форму

Процедура инициализирует переменную-параметр:

procedure CForm(AObject: TObject; var AForm: TAForm);
// определение формы компонента
begin
  AForm := TAForm(TComponent(AObject).Owner);
end;

Подходит для любых событий, кроме событий формы

procedure frmImage_PreviewImage_OnClick (Sender: TObject);
var
  tmpForm:TAForm;
begin
  CForm(Sender,tmpForm);
  ShowMessage(tmpForm.Name);
end;

Вторая полезная функция находит компонент на форме с проверкой или без:

procedure FindC(AForm: TAForm; AName: string; var AComponent: TComponent; ACheck: boolean = True);
// поиск компонента на форме с контролем
begin
  AComponent := AForm.FindComponent(AName);
  // если включен контроль, а компонент не найден
  if ACheck and (AComponent = nil) then // возбуждаем исключение
    RaiseException('На форме ' + AForm.Name + ' не найден компонент ' + AName);
end;

Это позволяет создавать универсальные обработчики, не привязанные к конкретной форме или компоненту:

procedure frmImage_panPreview_OnResize (Sender: TObject);
// изменение размера
var
  tmpPanel: TdbPanel;
  tmpForm:TAForm;
  tmpScrollBox: TScrollBox;
begin
  CForm(Sender,tmpForm);
  tmpPanel := TdbPanel(Sender);
  FindC(tmpForm,'scbPreview',tmpScrollBox,False);
  ...
end;
Визуальное программирование: блог и телеграм-канал.

Re: определить форму

k245 wrote:

Это позволяет создавать универсальные обработчики, не привязанные к конкретной форме или компоненту:

Спасибо