Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

Как сделать индикацию процесса обработки данных???   Найти похожие ветки 

 
StenKz ©   (2003-02-06 08:37) [0]

Как сделать индикацию процесса обработки данных??? Пусть даже примерную…
Была мысль – взять допустим прогресс бар, и прописать например свойство

TDM.TDepAfterScroll

Например
procedure TDM.TDepAfterScroll(DataSet: TDataSet);
begin
If FormOtch.PBA.Position=FormOtch.PBA.Max
Then FormOtch.PBA.Position:=0
Else FormOtch.PBA.StepIt;
end;

Но возникает трудность – получается как бы циклическая ссылка. Форма отчётов использует форму датамодуля. А при прописывании свойства AfterScroll форма датамодуля пытается управлять компонентом формы отчетов. При компиляции вылетает ошибка..

Форма FormOtch

implementation
Uses Datamod;

Форма Datamod
implementation
Uses FormOtch


 
Mitechka   (2003-02-06 09:39) [1]

Я писал для себя отдельный модуль он запускает отдельную форму. Форм сожет быть сколько угодно много, типа для процесс-подпроцесс. На форме может быть прогрессбар и список сообщений. Процесс можно попробовать (зависит от программы вызывающей) прервать пробуя закрыть форму индикатора. Если точно известно сколько всего можно использовать прогрессбар, если нет можно писать сообщнния типа "Сделано 300", и перетирать число, 400, 500 ... или дописывать в список типа "делаю то, сделала, теперь делаю это". Жаль, что нельзя сюда кинуть скриншот :( А так, если интересно и не лень разбираться, то напиши - пришлю код по почте. Размер кода 11К, комментарии внутри вроде бы есть :) Пример использования из текста программы:

ProcessIndOn("Получение данных","",0,2);
i:=1;
while not ProcessIndStop and (i<=Amount) do
begin
ProcessInd(i/Amount);
if V[i]<0 then ProcessIndMes("Негативное значение в ячейке "+IntToStr(i)");
...
inc(i);
end;
ProcessIndOff;


 
Stenkz ©   (2003-02-06 09:49) [2]

Удалено модератором
Примечание: Личная переписка, используй для это емайл


 
Соловьев ©   (2003-02-06 09:52) [3]

А как ты создаешь процес? Попробуй

ProgressBar.Max := Table.RecordCount;
while not Eof do
begin
...
ProgressBar.Position := ProgressBar.Position+1;
Next;
end;


 
Stenkz ©   (2003-02-06 10:03) [4]

То Соловьев Это понятено...

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


 
Соловьев ©   (2003-02-06 10:24) [5]

у меня так сделано:
try
//тут код тот что выше
finally
//показываешь отчет
end;


 
Stenkz ©   (2003-02-06 11:15) [6]

А если отчет формируется долго?
Как показать пользователю, что прога не висит а работает...


 
Соловьев ©   (2003-02-06 11:16) [7]

Делаешь SplashForm где вешаешь свой прогрес бар или какую-нибудь еще анимацию...


 
Stenkz ©   (2003-02-06 11:27) [8]

То Соловьев © (06.02.03 11:16)

Поясните пожайлуста, подробнее.


 
Соловьев ©   (2003-02-06 11:31) [9]

Создаем свой класс - TSplashForm(аналог из RxLib или берем оттуда): там будет и прогресбар и анимация.
потом при нажатии кнопки "Отчет":
MySplsh := TSplashForm.Create;
try
...
//тут уже писано-переписано- формируем отчет
finally
MySplash.Free;
//показываем отчет
end;


 
alexdbases ©   (2003-02-07 10:11) [10]

to Соловьёв плюс к форме.....Mysplash:=TMySplashForm.Create(Application<это тоже вроде как надо добавить>)
Ну и наконец
MySplash.Show;MySplash.Update..
И мы можем управлять контролами на MySplash....из другого модуля...)


 
Stas ©   (2003-02-07 10:24) [11]

Попробуй свой процесс сделать дополнительным т.е в фоновом рижиме, тогда прога будет работать нормально, а процесс будет сам собой проходить в фоновом режиме. Создать->Дополнительный процесс



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

Текущий архив: 2003.02.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-75892
Grom
2003-02-14 09:04
2003.02.24
DELPHI&EXEL Save As


3-75776
Ламер
2003-02-05 13:47
2003.02.24
Почему прога под Интербейс не хочет работать под делфями?


6-76051
Beglec
2003-01-05 01:06
2003.02.24
Интересный вопрос про CGI


1-75927
NewEdik
2003-02-14 16:40
2003.02.24
Отступ в TComboBox


14-76172
GROL
2003-02-05 22:14
2003.02.24
Какой последний бюлд у Delphi7 ?