1 (edited by k245 2022-07-28 08:49:56)

Topic: Ошибка при создании формы класса TAForm

TAForm - это класс форм, которые создаются в визуальном редакторе. У класса есть конструктор Create, что предполагает возможность программного создания таких форм.


procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
  CreateForm;
end;

procedure CreateForm;
var
  Form:TAForm;
begin
  Form := TAForm.Create(Application);
  Form.ShowModal;
end;

begin
end.

При компиляции ошибки нет, но стоит нажать кнопку для создания формы, получаем ошибку:


http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8893&download=0

Post's attachments

Attachment icon изображение_2022-07-28_114922739.png 9.3 kb, 57 downloads since 2022-07-28 

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

Re: Ошибка при создании формы класса TAForm

This works.

procedure createf (Sender: TObject; var Cancel: boolean);
var
 frm:TForm;
begin
 //   Frm := TForm.Create(Form1);   // or  
   Frm := TForm.Create(Application);
  Frm.ShowModal;
end;
On a clear disk you can seek forever

Re: Ошибка при создании формы класса TAForm

I agree, you can create instances of the TForm class, but this does not fix the error. Perhaps the value of the TAForm class is exaggerated, and it is not really needed  smile

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

Re: Ошибка при создании формы класса TAForm

Насколько я понимаю, TAForm - это главное окно приложения (типа TMainForm) и может быть только в одном экземпляре.

5 (edited by k245 2022-07-29 07:04:22)

Re: Ошибка при создании формы класса TAForm

Главная форма - экземпляр класса TfrmMaindbCore (1)
Все остальные формы, созданные в редакторе - TAForm (2)
Кроме них имеется огромный зоопарк других форм и диковинных компонентов...
http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=8901&download=0

Post's attachments

Attachment icon изображение_2022-07-29_095959623.png 56.49 kb, 52 downloads since 2022-07-29 

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

Re: Ошибка при создании формы класса TAForm

А у TAForm вообще есть принципиальные отличия от TForm? Свойства, методы?

Re: Ошибка при создании формы класса TAForm

Есть дополнительные свойства (служебные smile ), но, что гораздо важнее, есть поддержка обработки событий. Возможно, она есть и у TForm, но в документации это не указано, а на деле я ещё не проверял.

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

Re: Ошибка при создании формы класса TAForm

k245 wrote:

Есть дополнительные свойства (служебные smile ), но, что гораздо важнее, есть поддержка обработки событий.

А какие именно?

Re: Ошибка при создании формы класса TAForm

vovka3003 wrote:
k245 wrote:

Есть дополнительные свойства (служебные smile ), но, что гораздо важнее, есть поддержка обработки событий.

А какие именно?

Свойства:
- MinimizeToTray
- ShowOnTaskbar


Обработчики событий:
- OnDropFiles


Но я намёк понял: разница между классами TAForm и TForm не настолько большая, чтобы печалиться о невозможности создания экземпляра TAForm  smile

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

10 (edited by vovka3003 2022-07-30 09:34:05)

Re: Ошибка при создании формы класса TAForm

Дело даже не в разнице... Просто свойства и методы TAForm и TForm прикручены выборочно и через жопу.
Например приведение экземпляра TForm к TAForm в проверке валидности кода происходит по тихому и без ошибок, но в рантайме форма после приведения остается классом TForm. Несмотря на это она так же без ошибок принимает свойства MinimizeToTray и ShowOnTaskbar, но фактически ничего не происходит. А OnDropFiles у "виртуального" (и даже стокового) TAForm вообще отсутствует...

Сахар, мед, говно и пчелы... Из возможных вариантов - попробовать послать окну сообщение "тем что есть" из виндовых объявленный функций.