Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Вниз

TForm.FormActivate - долгая загрузка   Найти похожие ветки 

 
chirchik ©   (2004-07-26 15:15) [0]

на собыите формы OnActivate вызывается код программы, в котором происходит долгое (длительное) выдергивание всяких данных из таблиц БД.

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

Поможет ли try finnaly структура?


 
Соловьев ©   (2004-07-26 15:16) [1]


> Поможет ли try finnaly структура?

она родимая. возьми из набора RxLib - SplashWindow. Или сделай свою с прогресс баром


 
Ega23 ©   (2004-07-26 15:25) [2]

Поможет ли try finnaly структура?

А при чём здесь try ... finally? Или я что-то не понимаю???


 
Соловьев ©   (2004-07-26 15:28) [3]


> А при чём здесь try ... finally? Или я что-то не понимаю???

чтобы сплеш окно всегда уничтожилось, если будет сбой при открытии таблицы.


 
chirchik ©   (2004-07-26 15:33) [4]

А без SplashWindow можно сделать?
может быть я зря этот код на FormActivate повесил?.

Но мне надо чтобы при загрузке формы этот код тоже выполнялся. Но про такой результат я даже не подозревал.


 
Соловьев ©   (2004-07-26 15:35) [5]


> А без SplashWindow можно сделать?
> может быть я зря этот код на FormActivate повесил?.

зря. повесь на криэйт


 
chirchik ©   (2004-07-26 15:36) [6]

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


 
Vlad ©   (2004-07-26 15:37) [7]


> chirchik ©   (26.07.04 15:33) [4]

Подозреваю, что на OnActivate - точно зря.
Лучше или на OnCreate или на OnShow.
Правда это не столь поможет твоей проблеме.
Один из способов решения - вынести этот код вобще в отдельный поток. Другое решение - сделать что-то вроде Wait-окна, которое перед тем форма будет загружена, вылезет с надписью "Пожалуйста, ждите" и уничтожится после того как форма будет открыта.


 
Соловьев ©   (2004-07-26 15:40) [8]


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

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


 
chirchik ©   (2004-07-26 15:41) [9]

Вешаю этот код на 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;


 
Ega23 ©   (2004-07-26 15:42) [10]

Соловьев ©   (26.07.04 15:28) [3]

Это-то понятно, я просто подумал, что автор считает структуру try ... finally прорисовщиком заставок.


 
Ega23 ©   (2004-07-26 15:42) [11]

Соловьев ©   (26.07.04 15:28) [3]

Это-то понятно, я просто подумал, что автор считает структуру try ... finally прорисовщиком заставок.


 
chirchik ©   (2004-07-26 15:44) [12]

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

DataModule есть. Как его криейтить перед главной формой?


 
Соловьев ©   (2004-07-26 15:46) [13]


>  DM.DS1_Year.DataSet.First;

покажи свой дпр файл


 
chirchik ©   (2004-07-26 15:46) [14]

>Ega23
прорисовщиком заставок я ее не сичатал на самом деле :).
Кто-то мне говорил использовать ее в циклах, для отключения прорисвки каждого цикла (выводе данные из базы), и увеличения тем самым производительности.
Сейчас почитал. это обработка исключительных ситуаций. :)


 
@Lex ©   (2004-07-26 15:47) [15]

может перед
DM.DS1_Year.DataSet.First;
сделать
DM.DS1_Year.DataSet.Open;


 
chirchik ©   (2004-07-26 15:47) [16]

>Соловьев

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.


 
Sergey13 ©   (2004-07-26 15:48) [17]

>в котором происходит долгое (длительное) выдергивание всяких данных из таблиц БД.
Может поработать над укорочением (ускорением)? Тоже вариант.


 
chirchik ©   (2004-07-26 15:48) [18]

>Соловьев

Кажись понял. надо так?:

Application.CreateForm(TDM, DM);
Application.CreateForm(TForm1, Form1);


 
@Lex ©   (2004-07-26 15:49) [19]

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:52) [20]

Спасибо всем, OnCreate наладил.

Теперь при загрузке комп долго думает, и только после загрузки данных выдает форму. Теперь без SplashScreen"a точно не обойтись.
Только вот опять вопрос. Как-то давно в Delphi 5 или 6 Splash Screen был в File->New...
А в D7 где его брать?


 
Соловьев ©   (2004-07-26 15:53) [21]


> Теперь без SplashScreen"a точно не обойтись

возьми из RxLib


 
chirchik ©   (2004-07-26 15:55) [22]

>Соловьев
>возьми из RxLib
прошу прощения, а где взять RxLib?


 
Ega23 ©   (2004-07-26 15:57) [23]

прошу прощения, а где взять RxLib?

Яндекс - найдётся всё!

Или давай мыло - вышлю. Для 7-й делфи где-то было...


 
chirchik ©   (2004-07-26 16:02) [24]

>Или давай мыло - вышлю. Для 7-й делфи где-то было...

vostrikov собака ekoproekt точка ru

Заранее спасибо!


 
@Lex ©   (2004-07-26 16:06) [25]

http://www.delphibr.com.br/download/delphi/rxlib_275d7.zip


 
Ega23 ©   (2004-07-26 16:09) [26]

Вон, тебе @Lex уже дал всё что нужно. :о)


 
chirchik ©   (2004-07-26 16:19) [27]

Пасиба!!!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.037 c
14-1091700497
serg128
2004-08-05 14:08
2004.08.22
Как задать цвет строке?


1-1091533364
начинающий
2004-08-03 15:42
2004.08.22
Есть ли CRC в TDecompressionStream?


1-1091781816
dizrov
2004-08-06 12:43
2004.08.22
Рекурсивный поиск


1-1091771671
Ivolg
2004-08-06 09:54
2004.08.22
Вопрос по ListView


1-1092133649
Cosinus
2004-08-10 14:27
2004.08.22
Работа с функциями, находящимеся в отдельном модуле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский