Помогите пожалуйста решать проблему. В проекте имеется два форма. Первая - главная, там создал меню. В меню Файл первой операции надо запускать форму, но у меня никак не получится. Проект прилагаю.
Подумайте внимательно что вы делаете в первом юните на строчке 36.
self
в том случае это первая форма, вам так и пишет что она уже показана. А вам надо создать новый экземпляр второй формы и показывать уже его. И зачем вы создали переменную с типом интерфейсом оставив её nil
?
В этом случае откроется просто новая пустая форма. А форма же имеется в проекте, но не запускается. Доработанную проект прилагаю. Project5.rar (19,1 КБ)
Ну разумеется, вы создаётся объект пустой формы и получаете пустую форму. Создавайте объект вашей формы из второго юнита.
Он там создан (второй юнит). В проекте приложен. Может какой то другой вариант?
Во втором юните он описан, а создание объекта это прописывание new
для типа.
Ну в общем, у меня не получается. Вот строка меню: procedure Form1.toolStripMenuItem4_Click(sender: Object; e: EventArgs); begin var Form2 := new Form(); Form2.Show(); end; Это процедура в Unit1.pas, а форма с именем Form2 находится в Unit2.pas. Можете подскажите строку программы?
Подключите второй юнит к первому через uses
.
Кстати на форуме можно и желательно выделять код так:
```
procedure Form1.toolStripMenuItem4_Click(sender: Object; e: EventArgs);
begin
var Form2 := new Form();
Form2.Show();
end;
```
Тогда получается так:
procedure Form1.toolStripMenuItem4_Click(sender: Object; e: EventArgs);
begin
var Form2 := new Form();
Form2.Show();
end;
Знак ` находится в англ. раскладке за русским ё.
Да, наконец-то получилось. СПАСИБО, огромная Sun_Serega. В строке ’’’ uses System, System.Drawing, System.Windows.Forms;’’‘ добавил Unit2, а в самом процедуре ’’’ procedure Form1.toolStripMenuItem4_Click(sender: Object; e: EventArgs); begin var Form2 := new Unit2.Form2; Form2.Show(); end; ’’' Все пошло! Будем на связи в ФОРУМЕ.
Можно объеденить создание и запуск второй формы в 1 строчку:
(new Unit2.Form2).Show;
или
(new Unit2.Form2).Show(self);
чтоб это была дочерняя форма к основной.
Но если вам как то надо будет потом использовать эту форму из первой - лучше добавить в класс первой формы переменную типа Unit2.Form2
и её уже запускать и создавать.