Страница 1 из 2

ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 12:03:54
maser
Здравствуйте все!

Решил вспомнить паскаль, который использовал еще в студенческие годы. Нашел систему lazarus под свою ubuntu, чему был очень рад (раньше думал, что кроме delphi ничего нет), но вот проблемка всплыла с самого начала практического конструирования приложения:
создал форму, в ней меню, кноперки и .т.д. Затем создал вторую форму, связал её с первой, прописав её в uses. В первой форме на событие одной кноперки прописал unit2.showmodal; . После этого запустил и увидел сообщение ...Error: Identifier not found "showmodal". на unit2.show такая же реакция.

Уже голову сломал в поиске граблей.
Может что-то в uses прописать надо?

Помогите пожалуйста! :cry:

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 12:18:14
dunin
А зачем юнит показывать? Может лучше форму показать? :roll:
Form2.Show;

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 12:26:56
maser
показывал - такая же беда.

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 12:45:53
Nik
А можно увидеть фрагмент вашего кода?

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 12:56:15
maser
можно конечно, только там кода особого пока нет. Все стандартно. Прога дома лежит, а я на работе целый день. Могу по памяти кое-что написать:

Вот процедура стандартная, в которой затык произошел:

Код: Выделить всё
Procedure TForm1.не помню (Sender: TObject)
begin
unit2.showmodal;
end;
end.


unit2 вообще пустая форма

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 12:59:56
Nik
Выше уже сказали, что нельзя показать юнит!

Должно быть что-то вроде:

Код: Выделить всё
Form2.ShowModal;


Причём убедитесь, что форма предварительно создана (обычно метод для создания формы автоматически добавляется в исходный код проекта), а unit2 прописан в секции uses модуля unit1, их которого вы обращаетесь ко второй форме.

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 13:16:18
maser
с Form2 пробовал. В uses unit 1 прописан, а вот метод создания формы не смотрел в исходнике. Если его нет, как и где он должен быть прописан?

PS: работаю в лазаре второй день. ))) В дельфе ниразу. В паскале писал проги в студенчестве (1997-2002 г.г.)

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 13:53:47
Nik
В файле project1.lpr должен .быть такой код:

Код: Выделить всё
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); // !!!
Application.Run;


Если в коде нет ничего секретного, скиньте весь проект - глянем, где ошибка.

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 14:17:13
maser
Скинуть могу, но только поздно вечером.

Вот увидел вариант реализации процедуры:
Код: Выделить всё
procedure TForm1.Button2Click(Sender:TObject);
var i:=integer;
begin
i:=Form2.ShowModal;
end;


Вопрос: это просто присваивание переменной i значения Form2.ShowModal или тут есть еще какой секрет?

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 14:22:25
Odyssey
maser писал(а):это просто присваивание переменной i значения Form2.ShowModal или тут есть еще какой секрет?

ShowModal -- функция, поэтому здесь присваивается не значение, а результат её выполнения. Т.е. идёт присваивание переменной i результата показа формы. В общем случае этот результат позволяет узнать, какая кнопка на форме была нажата, соответственно для кнопок формы 2 должны быть установлены нужные значения свойства ModalResult.

maser писал(а):работаю в лазаре второй день. ))) В дельфе ниразу. В паскале писал проги в студенчестве (1997-2002 г.г.)

Рекомендую посмотреть http://freepascal.ru/news//20101025164011/

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 15:05:23
maser
Спасибо за консультацию!
Уже читаю эту книгу.

Еще вопрос: В каком модуле (библиотеке) прописаны эти функции? Может просто он у меня не подключен.

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 15:27:55
Nik
Еще вопрос: В каком модуле (библиотеке) прописаны эти функции? Может просто он у меня не подключен.

В модуле Forms. При создании формы он прописывается в соответствующий модуль автоматически.

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 15:33:49
maser
Ну да, такой прописан. Точно помню.

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 16:10:33
Vadim
maser
Попробуйте написать:
unit2.Form2.Show;

И поставьте себе на работе Lazarus тоже, чтобы всегда был под рукой. ;)

Re: ругается на show и showmodal

СообщениеДобавлено: 13.01.2011 16:42:00
maser
спасибо за совет, попробую.

Насчет поставить на работе - это вряд ли получится. Тут даже оперу нельзя поставить - админы режут на корню. :( Если только портативную версию поробовать соорудить...