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

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

TForm.FormActivate - долгая загрузка [D7]


Страницы:   1 2

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]


> Выходит ошибка.
> В этом коде у меня к базе обращение идет. Видимо из-за него
> и ошибка.

ага, т.е. там где у нас ошибка - мы просто не делаем:) А решить не пытался? Код ошибки?
Подозреваю что на форме лежат все компоненты. Сделай датамодуль, выставь, чтобы ок криейтился перее глафной формы, а в криейте этой главной формы пиши уже сплеш форму.


Страницы:   1 2

Наверх

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