Как создать форму в Free Pascal? Как создать форму в Free Pascal? Чтобы было как виндовс окно а не консольная программа
function WindowProc(hWnd: THandle; uMsg, wParam, lParam: Integer): Integer; <функция окна>
stdcall; export;
begin
Result := 0;
case uMsg of
WM_DESTROY: //если uMsg равна WM_DESTROY(код закрытия окна) то закрываемся
begin
halt(0);
end;
end;
Result := DefWindowProc(hWnd, uMsg, wParam, lParam); //удалить остальные сообщения
end;
FpGUI — Free Pascal и X-приложения
Существует несколько способов написать программу на Free Pascal, используя для отрисовки её интерфейса только иксовые библиотеки: MSEide+MSEgui, fpGUI. Это позволяет не зависеть от gtk, qt, а только от иксов.
В этой статье рассмотрим fpGUI. Нам потребуется установить пакеты: uidesigner (пакет fpgui установится автоматически), geany.
Теперь запустите uidesigner и в нём создайте интерфейс Вашей программы:
Файл(File) -> Создать новый файл. (Create New File. ):
Назовём его по умолчанию, для этого поле для ввода оставим пустым и нажмём ОК:
Появится форма. К примеру, если нам надо поместить на неё кнопку:
Теперь сохраним полученную в uidesigner форму:
Файл(File) -> Сохранить(Save):
Укажем где и под каким именем сохранить. Сохраним под именем form1_primer1 в директории /home/user/fpgui:
Теперь можно закрыть uidesigner.
Запустите geany и в нём откройте получившийся файл /home/user/fpgui/form1_primer1.pas. Нажмите на кнопку «Скомпилировать»:
Вы можете получить ошибку:
Для этой конкретной ошибки нужно добавить в секцию uses модуль fpg_button, после чего компиляция проходит нормально (это ошибка http://sourceforge.net/p/fpgui/bugs/12):
![]()
Теперь осталось написать стандартную программу, которая будет использовать модуль form1_primer1. В geany создайте новый файл следующего содержания:
И сохраните его под именем primer1.pas в той же директории /home/user/fpgui:
Нажмите кнопку «Скомпилировать». Если компиляция прошла успешно, то нажмите кнопку «Выполнить»:
Какова последовательность создания форм и других объектов в Lazarus
У меня есть простая программа с двумя формами, основной формой и формой настроек. Очевидно, что форма настроек позволяет пользователю изменять настройки. У меня есть блок настроек, секция инициализации которого считывает настройки из файла.
Когда программа устанавливается и запускается в первый раз, настройки будут пустыми, и если да, то я хочу показать форму настроек. Вопрос в том, куда поставить проверку и код вызова.
My Application.lpr содержит
Мой блок настроек примерно такой
Если я проверил пустые настройки в MainForm.FormCreate, я не смогу показать форму настроек, потому что она еще не создана.
Я не понимаю, как я могу это сделать в Application.lpr, поскольку там нет очевидной переменной для ссылки на экземпляр SettingsForm. В любом случае, мне кажется неправильным помещать его туда.
Могу ли я выполнить эту проверку в SettingsForm.FormCreate, предполагая, что это вызывается только после полной инициализации SettingsForm и ее готовности к отображению? Вы можете позвонить Show() через FormCreate() ?
Я не уверен, когда именно мой тип настроек будет создан.
Есть ли какие-нибудь идеи, шаблоны дизайна или другой материал, который я мог бы использовать, чтобы определить, где поставить свою проверку на пустые настройки?