agatlogic101 wrote:В больших проектах, когда много форм, естественно всё долго грузится. Есть ли возможность отключать/заморозить некоторые формы, которые в данный момент при работе не нужны, что бы они не влияли на сохранение и загрузку. Что даст ускорение при работе с определённой частью программы. Иначе приходится создавать подпрограмму, в ней тестировать то, что нужно добавить, и после уже вручную копировать таблицы, формы, скрипт...
PS. С точки зрения пользователя, было бы 2 чекбокса на форме, вместо одного. 1 как и раньше скрывает форму в программе что бы она не мешалась, а вторая замораживает
Как показали мои наблюдения, задержку вызывает не создание форм, а выгребание данных для компонентов на форме.
И, если для таблиц данные выгребаются в момент открытия формы, то для комбиков - при подключении к БД. Для MySQL это можно регулировать, выполняя команду UpdateDatabase() в нужное время (например, после отображения формы-заставки).
// вызываем автозаполение ComboBox-ов, но по отдельности для каждой таблицы
tmpFileName := ExtractFileDir(ParamStr(0))+'\tables.ini';
tmpTablesIni := TMemIniFile.Create( tmpFileName ); // для работы с этим файлом использовать TMemIniFile - он нормально работает с Unicode
tmpList := TStringList.Create;
try
tmpTablesIni.ReadSections( tmpList );
for i := 0 to tmpList.Count - 1 do
begin
ConnectionProgress( i/tmpList.Count, tmpList.Strings[i] ); // отобразить название таблицы
Application.ProcessMessages;
Sleep(100); // задержка, чтобы видно было ))
UpdateDatabase(tmpList.Strings[i]);
end;
finally
tmpList.Free;
tmpTablesIni.Free;
ConnectionProgress(-1,' ');
// звуковое подтверждение окончания загрузки
tmpSoundFileName := copy(ParamStr(0),1,length(ParamStr(0))-4)+'.wav';
// можно ставить любой файл, а если надоест, то удалить его совсем
if FileExists(tmpSoundFileName) then
PlaySound( tmpSoundFileName );
end;
В теории можно не указывать таблицу для комбика в режиме конструктора, а указывать её программно в нужное время, вручную обновляя его датасет.
P.S. Долгое время создания именно формы бывает, если на ней находится много графических элементов. Для себя я эту проблему решил созданием и загрузкой графического контента из базы после запуска программы, в момент отображения заставки. Это позволяет реализовать богатый UI: в примере форма содержит больше сотни графических элементов (кнопки с тремя состояниям на базе TdbImage)
Post's attachments Пример.png 1.28 mb, 162 downloads since 2020-03-04
Визуальное программирование:
блог и
телеграм-канал.