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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

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

Сообщение maser »

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

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

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

Помогите пожалуйста! :cry:
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

А зачем юнит показывать? Может лучше форму показать? :roll:
Form2.Show;
maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

Сообщение maser »

показывал - такая же беда.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

А можно увидеть фрагмент вашего кода?
maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

Сообщение maser »

можно конечно, только там кода особого пока нет. Все стандартно. Прога дома лежит, а я на работе целый день. Могу по памяти кое-что написать:

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

Код: Выделить всё

Procedure TForm1.не помню (Sender: TObject)
begin
unit2.showmodal;
end;
end.


unit2 вообще пустая форма
Последний раз редактировалось maser 13.01.2011 12:24:07, всего редактировалось 1 раз.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

Выше уже сказали, что нельзя показать юнит!

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

Код: Выделить всё

Form2.ShowModal;


Причём убедитесь, что форма предварительно создана (обычно метод для создания формы автоматически добавляется в исходный код проекта), а unit2 прописан в секции uses модуля unit1, их которого вы обращаетесь ко второй форме.
maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

Сообщение maser »

с Form2 пробовал. В uses unit 1 прописан, а вот метод создания формы не смотрел в исходнике. Если его нет, как и где он должен быть прописан?

PS: работаю в лазаре второй день. ))) В дельфе ниразу. В паскале писал проги в студенчестве (1997-2002 г.г.)
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

В файле project1.lpr должен .быть такой код:

Код: Выделить всё

 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2); // !!!
 Application.Run;


Если в коде нет ничего секретного, скиньте весь проект - глянем, где ошибка.
maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

Сообщение maser »

Скинуть могу, но только поздно вечером.

Вот увидел вариант реализации процедуры:

Код: Выделить всё

procedure TForm1.Button2Click(Sender:TObject);
var i:=integer;
begin
i:=Form2.ShowModal;
end;


Вопрос: это просто присваивание переменной i значения Form2.ShowModal или тут есть еще какой секрет?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

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

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

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

Рекомендую посмотреть http://freepascal.ru/news//20101025164011/
maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

Сообщение maser »

Спасибо за консультацию!
Уже читаю эту книгу.

Еще вопрос: В каком модуле (библиотеке) прописаны эти функции? Может просто он у меня не подключен.
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

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

В модуле Forms. При создании формы он прописывается в соответствующий модуль автоматически.
maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

Сообщение maser »

Ну да, такой прописан. Точно помню.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

maser
Попробуйте написать:
unit2.Form2.Show;

И поставьте себе на работе Lazarus тоже, чтобы всегда был под рукой. ;)
maser
новенький
Сообщения: 20
Зарегистрирован: 13.01.2011 10:42:25
Откуда: Волгодонск

Сообщение maser »

спасибо за совет, попробую.

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