![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TForm.FormActivate - долгая загрузка [D7]
chirchik © (2004-07-26 15:15:00)на собыите формы OnActivate вызывается код программы, в котором происходит долгое (длительное) выдергивание всяких данных из таблиц БД.
При запуске проекта загружается рамка формы, и ничего на ней не прорисовывается все то время, которое выполняется программа по подготовке данных для вывода. Можно ли как-нибудь сделать что-то вроде заставки Loading.
Поможет ли try finnaly структура?
chirchik (2004-07-26 16:19:00) [1]Пасиба!!!
Ega23 (2004-07-26 16:09:00) [2]Вон, тебе @Lex уже дал всё что нужно. :о)
@Lex (2004-07-26 16:06:00) [3]http://www.delphibr.com.br/download/delphi/rxlib_275d7.zip
chirchik (2004-07-26 16:02:00) [4]>Или давай мыло - вышлю. Для 7-й делфи где-то было...
vostrikov собака ekoproekt точка ru
Заранее спасибо!
Ega23 (2004-07-26 15:57:00) [5]прошу прощения, а где взять RxLib?
Яндекс - найдётся всё!
Или давай мыло - вышлю. Для 7-й делфи где-то было...
chirchik (2004-07-26 15:55:00) [6]>Соловьев
>возьми из RxLib
прошу прощения, а где взять RxLib?
Соловьев (2004-07-26 15:53:00) [7]
> Теперь без SplashScreen'a точно не обойтись
возьми из RxLib
chirchik (2004-07-26 15:52:00) [8]Спасибо всем, OnCreate наладил.
Теперь при загрузке комп долго думает, и только после загрузки данных выдает форму. Теперь без SplashScreen'a точно не обойтись.
Только вот опять вопрос. Как-то давно в Delphi 5 или 6 Splash Screen был в File->New...
А в D7 где его брать?
@Lex (2004-07-26 15:49:00) [9]program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {DM: TDataModule};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TDM, DM);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
chirchik (2004-07-26 15:48:00) [10]>Соловьев
Кажись понял. надо так?:
Application.CreateForm(TDM, DM);
Application.CreateForm(TForm1, Form1);
Sergey13 (2004-07-26 15:48:00) [11]>в котором происходит долгое ( длительное) выдергивание всяких данных из таблиц БД.
Может поработать над укорочением (ускорением)? Тоже вариант.
chirchik (2004-07-26 15:47:00) [12]>Соловьев
project1.dpr:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {DM: TDataModule};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TDM, DM);
Application.Run;
end.
@Lex (2004-07-26 15:47:00) [13]может перед
DM.DS1_Year.DataSet.First;
сделать
DM.DS1_Year.DataSet.Open;
chirchik (2004-07-26 15:46:00) [14]>Ega23
прорисовщиком заставок я ее не сичатал на самом деле :).
Кто-то мне говорил использовать ее в циклах, для отключения прорисвки каждого цикла (выводе данные из базы), и увеличения тем самым производительности.
Сейчас почитал. это обработка исключительных ситуаций. :)
Соловьев (2004-07-26 15:46:00) [15]
> DM.DS1_Year.DataSet.First;
покажи свой дпр файл
chirchik (2004-07-26 15:44:00) [16]>Соловьев
>Подозреваю что на форме лежат все компоненты. Сделай датамодуль, выставь, чтобы ок криейтился перее глафной формы, а в криейте этой главной формы пиши уже сплеш форму.
DataModule есть. Как его криейтить перед главной формой?
Ega23 (2004-07-26 15:42:00) [17]Соловьев © (26.07.04 15:28) [3]
Это-то понятно, я просто подумал, что автор считает структуру try ... finally прорисовщиком заставок.
Ega23 (2004-07-26 15:42:00) [18]Соловьев © (26.07.04 15:28) [3]
Это-то понятно, я просто подумал, что автор считает структуру try ... finally прорисовщиком заставок.
chirchik (2004-07-26 15:41:00) [19]Вешаю этот код на OnCreate. Ошибка уже на
DM.DS1_Year.DataSet.First;строке.
пишет Access violation at address...
procedure TForm1.FormCreate(Sender: TObject);
var
n: TcxTreeListNode;
begin
cxTL1.BeginUpdate;
// заполнение годами
DM.DS1_Year.DataSet.First;
while not DM.DS1_Year.DataSet.Eof do
begin
n := cxTL1.Add;
n.Values[TL1_Year.ItemIndex] := DM.DS1_Year.DataSet.Fields[0].AsString;
DM.ADOQ1.Close;
DM.ADOQ1.Parameters.ParamByName('prmYear').Value := n.Values[TL1_Year.ItemIndex];
DM.ADOQ1.Open;
DM.ADOQ1_DLoad.Close;
DM.ADOQ1_DLoad.Parameters.ParamByName('prmYear').Value := n.Values[TL1_Year.ItemIndex];
DM.ADOQ1_DLoad.Open;
// добавление 1ого семестра и др. -> Год
FillTreeList(n, 1);
// добавление 2ого семестра и др. -> Год
FillTreeList(n, 2);
DM.DS1_Year.DataSet.Next;
end;
cxTL1.EndUpdate;
end;
Соловьев (2004-07-26 15:40:00) [20]
> Выходит ошибка.
> В этом коде у меня к базе обращение идет. Видимо из-за него
> и ошибка.
ага, т.е. там где у нас ошибка - мы просто не делаем:) А решить не пытался? Код ошибки?
Подозреваю что на форме лежат все компоненты. Сделай датамодуль, выставь, чтобы ок криейтился перее глафной формы, а в криейте этой главной формы пиши уже сплеш форму.