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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.013 c
1-75964
Эд
2003-02-12 13:47
2003.02.24
стереть строку в StringGrid


3-75810
Alexandr3
2003-02-06 15:18
2003.02.24
QReport


7-76204
sniknik
2002-12-24 20:37
2003.02.24
Нормальное завершение системы.


1-75923
stenya
2003-02-12 15:51
2003.02.24
НЕМОДАЛЬНОЕ окно (форма) в DLL.


1-75916
Flagman
2003-02-14 09:57
2003.02.24
OLE Automation





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский