Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Увеличение скорость открытия программы. [D7, WinXP]


Merry ©   (2006-09-28 09:33:00) 

При запуске программы, происходит задержка от 5 до 30 сек (на разных компах по-разному)до момента открытия программы. В момент открытия основной формы все таблицы и запросы закрыты, обращения к ним нет. Вообще, форм, таблиц и запросов в программе много. Таблицы db-формата. (Те программы, где таблиц и запросов меньше открываются за 2 сек). В программе формируются отчёты, выполненные в QReporte. Причём замечено, если используется принтер, подключенный к другому компьютеру, а на этом компьютере принтера нет, то время открытия программы дольше. Может быть тут какая-то связь?


RASkov   (2006-09-29 00:51:00) [1]

В меню Delphi "Project"->"Options" или Shift+Ctrl+F11
Оставляешь в Auto-create только главную форму, остальные в Available forms
Ну и по мере надобности создаешь и вызываешь так
...
if Form1=nil then Form1:=TForm1.Create(Self);
Form1.ShoModal;
Form1.Free;
Form1:=nil;
//или вместо последних двух строк кода можно одну - FreeAndNil(Form1);
....

это для модальных окон, для не модальных можно попробывать так

....
if Form2=nil then Form2:=TForm2.Create(Self);
Form2.Show;
....

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caFree; Form2:=nil;
end;


Ketmar   (2006-09-28 21:55:00) [2]

не надо нобум. лучше сначала почитай статейки.


Merry   (2006-09-28 21:54:00) [3]

t.e. вместо Forma1.ShowModal
пишу Forma1.Create.
А как " убиваешь, когда они больше не нужны?"


Ketmar   (2006-09-28 21:50:00) [4]

тогда создавай. у тебя при старте программы создаётся куча форм и компонентов на них. зачем? память загромождают, а толку -- никакого.


Merry   (2006-09-28 21:49:00) [5]

Нет. Не создаю в реальном времени.
Вызываю Forma1.ShowModal; и закрываю close.


Ketmar   (2006-09-28 21:30:00) [6]

"формируется" и "создаётся" -- вещи разные. загляни в .dpr -- там куча создавалок? или создаёшь (Create) формы в рантайме, показываешь, и тут же убиваешь, когда они больше не нужны?


Merry   (2006-09-28 21:27:00) [7]

Спасибо за советы.
Не понятно, что значит:
>Плохиш ©   (28.09.06 11:28) [5] :Для начала надо убрать все ненужные формы/репорты из автосоздания и создавать их по мере необходимости.

Что такое автосоздание? Естественно, каждая форма и любой отчёт формируется только в момент нажатия пользователем определённой клавиши. Формы вызываю Forma1.ShowModal;
Отчёты Qreport1.Preview.
Всё же, я думаю, что дело не в QReporte. И таблицы я открываю не в момент открытия проги, и запросы тоже. Может, недостаточно оперативки свободной или чего-то ещё???


Плохиш   (2006-09-28 11:28:00) [8]


> Merry   (28.09.06 09:33)

Для начала надо убрать все ненужные формы/репорты из автосоздания и создавать их по мере необходимости.


zdm   (2006-09-28 09:47:00) [9]

FastReport форева


Ketmar   (2006-09-28 09:46:00) [10]

ну глянь ты в исходники QREport'а, и выясни. а лучше -- возьми нечто нормальное, а не это чудо. %-)


zdm   (2006-09-28 09:46:00) [11]

в QR врядли проблема. Как вариант пробегись пошагово по проге, и посмотри, точно-ли не происходит коннекта к БД или попытки сформировать отчет до действий юзера


Elen   (2006-09-28 09:44:00) [12]


> Merry

Как вариант создавай QReport и формируй отчеты в ДЛЛ или другом приложении. Пусть оно запускается потом (по желанию пользователя)


Наверх

Титульная страница Поиск, карта сайта Написать письмо