Как создать форму в фрипаскале
Перейти к содержимому

Как создать форму в фрипаскале

Как создать форму в 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. ):

Fpgui1.png

Назовём его по умолчанию, для этого поле для ввода оставим пустым и нажмём ОК:

Fpgui2.png

Появится форма. К примеру, если нам надо поместить на неё кнопку:

Fpgui3.png

Теперь сохраним полученную в uidesigner форму:

Файл(File) -> Сохранить(Save):

Fpgui5.png

Укажем где и под каким именем сохранить. Сохраним под именем form1_primer1 в директории /home/user/fpgui:

Fpgui4.png

Теперь можно закрыть uidesigner.

Запустите geany и в нём откройте получившийся файл /home/user/fpgui/form1_primer1.pas. Нажмите на кнопку «Скомпилировать»:

Fpgui6.png

Вы можете получить ошибку:

Для этой конкретной ошибки нужно добавить в секцию uses модуль fpg_button, после чего компиляция проходит нормально (это ошибка http://sourceforge.net/p/fpgui/bugs/12):

Fpgui8.png

Info-wiki-template.png

Теперь осталось написать стандартную программу, которая будет использовать модуль form1_primer1. В geany создайте новый файл следующего содержания:

И сохраните его под именем primer1.pas в той же директории /home/user/fpgui:

Fpgui9.png

Нажмите кнопку «Скомпилировать». Если компиляция прошла успешно, то нажмите кнопку «Выполнить»:

Какова последовательность создания форм и других объектов в Lazarus

У меня есть простая программа с двумя формами, основной формой и формой настроек. Очевидно, что форма настроек позволяет пользователю изменять настройки. У меня есть блок настроек, секция инициализации которого считывает настройки из файла.

Когда программа устанавливается и запускается в первый раз, настройки будут пустыми, и если да, то я хочу показать форму настроек. Вопрос в том, куда поставить проверку и код вызова.

My Application.lpr содержит

Мой блок настроек примерно такой

Если я проверил пустые настройки в MainForm.FormCreate, я не смогу показать форму настроек, потому что она еще не создана.

Я не понимаю, как я могу это сделать в Application.lpr, поскольку там нет очевидной переменной для ссылки на экземпляр SettingsForm. В любом случае, мне кажется неправильным помещать его туда.

Могу ли я выполнить эту проверку в SettingsForm.FormCreate, предполагая, что это вызывается только после полной инициализации SettingsForm и ее готовности к отображению? Вы можете позвонить Show() через FormCreate() ?

Я не уверен, когда именно мой тип настроек будет создан.

Есть ли какие-нибудь идеи, шаблоны дизайна или другой материал, который я мог бы использовать, чтобы определить, где поставить свою проверку на пустые настройки?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *