Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 008

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте!
Помогите пожалуйста, иначе меня уже клинит... Посмотрите код(пожалуйста) и скажите что я делаю не так. Просто решил создать не модальную форму, и не получилось, выводит ошибку... Принимаю всё, от ссылок, до книжек и поучительных лекций... Ребят, если вы мне не поможете в ближайшие 24часа, то я уйду из мира сего, меня реально уже кроет...

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes,
  7. Graphics, Controls, Forms, Dialogs, StdCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. Button1: TButton;
  12. procedure Button1Click(Sender: TObject);
  13. private
  14. { Private declarations }
  15. public
  16. { Public declarations }
  17. end;
  18.  
  19. TModeless = class(TForm)
  20. Modeless : TModeless;
  21. procedure FormClose(Sender: TObject; var Action: TCloseAction);
  22. procedure FormCreate(Sender: TObject);
  23. private
  24. { Private declarations }
  25. public
  26. { Public declarations }
  27. end;
  28.  
  29. var
  30. Form1: TForm1;
  31. ModalForm : TModalForm;
  32.  
  33. implementation
  34. {$R *.dfm}
  35.  
  36. procedure TModeless.FormClose(Sender: TObject; var Action: TCloseAction);
  37. BEGIN
  38.  
  39. end;
  40.  
  41. procedure TModeless.FormCreate(Sender: TObject);
  42. begin
  43.  
  44. end;
  45.  
  46. procedure TForm1.Button1Click(Sender: TObject);
  47. Begin
  48. if not Assigned(Modeless) then begin
  49. Modeless := TModeless.Create(Application);
  50. Modeless.Show
  51. end;
  52. end;
  53. end.


padonak Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: padonak (статус: Посетитель)
Вопрос отправлен: 9 апреля 2010, 22:47
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Паровоз

Здравствуйте, padonak!

"что я делаю не так"

Да все. Новая форма создается при помощи меню File/New/Form

Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 9 апреля 2010, 23:34

Ответ #2. Отвечает эксперт: Вадим К

Здравствуйте, padonak!
Видете в своем коде строку {$R *.dfm}, которую среда сгенерировала? это подключаются ресурсы формы (фактически форма). А объявив ещё одну форму в файле, Вы не позаботились о создании для нее дополнительного файла dfm, фактически обманули компоновщик. Вот теперь он и ругается. Правда в коде ещё есть одна не объявленная переменная-поле - Modeless. При чем тип ее совпадает с классом, в котором она находиться... а обращаетесь к ней с другого класса... Наверно нужно просто выспаться и почитать в списке статей мою статью о формах - все станет яснее.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 9 апреля 2010, 23:42


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 10 апреля 2010, 22:23; участников в обсуждении: 3.
padonak

padonak (статус: Посетитель), 10 апреля 2010, 12:58 [#1]:

Вадим К, если не трудно, то можете дать ссылку на статью?
padonak

padonak (статус: Посетитель), 10 апреля 2010, 13:04 [#2]:

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

Паровоз (статус: 10-ый класс), 10 апреля 2010, 15:01 [#3]:

"подключать готовые формы не "катит"... "

Как это не катит?
uses Unit2;
 
var
  f1,f2:TForm2;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  f1:=TForm2.Create(nil);
  f1.Show;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  f2:=TForm2.Create(nil);
  f2.Show;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  f1.Free;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  f2.Free;
end;
Вадим К

Вадим К (статус: Академик), 10 апреля 2010, 22:23 [#4]:

Статью о формах можно найти тут О формах
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:00
Выполнено за 0.04 сек.