Форум: "Базы";
Текущий архив: 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.031 c