Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Написание красивого прелоадера


Автор: Vitalishe 6.1.2008, 13:09
Здравствуйте, 
есть необходимость создать прелодер для  программы, 
которая загружает довольно большой объем информации из базы данных;
прогил прелоадеры на ActionScript 2.0 - там все просто: GetBytesTotal (всего байт), 
BytesLoаded (загружено байт) и проблемма решена, 
в BCB нашел только получения размера файла...подскажите как получить значение байт, которые уже загружены;

Автор: artsb 6.1.2008, 15:28
Я так думаю, что это зависит от того каким образом ты загружаешь.
Так же непонятно, куда рыть и где смотреть.

Автор: Vitalishe 7.1.2008, 13:26
Цитата(artsb @ 6.1.2008,  15:28)
Я так думаю, что это зависит от того каким образом ты загружаешь.
Так же непонятно, куда рыть и где смотреть.

Хм... допустим варианта два:

! пока больше интересует 1-й вариант;

1-й. 
это локальное приложение, которое при запуске ехе файла и загрузки GUI начинает автоматически загружать БД из какого-либо места на HDD локальной машины.

2-й.
Расспределённое приложение.
Со вторым я думаю разберусь, когда придёт время - главное понять принцип;

Автор: artsb 7.1.2008, 23:21
Да нет, я имею ввиду куда вы загружаете данные (таблица или ещё что-нибудь) и как. Напишите код, в котором осуществляется загрузка. Так будет легче что-нибудь придумать.

Автор: Sharkfire 8.1.2008, 00:20
Ну я варината собственно 2:

а) Показать загрузку каждой таблицы отдельно
б) Показать загрузку всех таблиц

в обоих случаях тебе поможет TProgressBar
тольков Б - сумма всех записей всех таблиц

ProgressBar1->Max - задание
ProgressBar1->Position - процесс выполнения инкрементируешь

Автор: artsb 8.1.2008, 00:46
Суть в том как узнать СКОЛЬКО уже ЗАГРУЖЕНО. Если я правильно понял, конечно.

Автор: Vitalishe 8.1.2008, 12:53
Цитата(Sharkfire @ 8.1.2008,  00:20)
Ну я варината собственно 2:

а) Показать загрузку каждой таблицы отдельно
б) Показать загрузку всех таблиц

в обоих случаях тебе поможет TProgressBar
тольков Б - сумма всех записей всех таблиц

ProgressBar1->Max - задание
ProgressBar1->Position - процесс выполнения инкрементируешь

Спасибоsmile)) 

Добавлено @ 12:53
Цитата(artsb @ 8.1.2008,  00:46)
Суть в том как узнать СКОЛЬКО уже ЗАГРУЖЕНО. Если я правильно понял, конечно.

агаsmileабсолютно верно понял

Автор: artsb 8.1.2008, 13:25
Цитата(artsb @  7.1.2008,  23:21 Найти цитируемый пост)
Напишите код, в котором осуществляется загрузка. Так будет легче что-нибудь придумать. 


Автор: artsb 8.1.2008, 16:26
Как вариант, можно так:
Определять размер файла не будем.

Каким-то образом определяем количество ячеек таблицы (которые нужно заполнить из файла) и пишем:
ProgressBar1->Min=0;
ProgressBar1->Max= количество ячеек;

Далее, загружая данные, в конце цикла, пишем:
ProgressBar1->Position++; // т.е. ещё одна ячейка заполнена

Автор: SABROG 9.1.2008, 15:07
Должно быть подобное событие:

Код

void __fastcall TForm1::ADODataSet1FetchProgress(TCustomADODataSet *DataSet, int Progress, int MaxProgress, TEventStatus &EventStatus)

{
  Caption = "Percent complete: " +
    IntToStr(Trunc(Progress / MaxProgress * 100)) + "%";
  Application->ProcessMessages;
}

Автор: Vitalishe 10.1.2008, 01:23
Цитата(SABROG @ 9.1.2008,  15:07)
Должно быть подобное событие:

Код

void __fastcall TForm1::ADODataSet1FetchProgress(TCustomADODataSet *DataSet, int Progress, int MaxProgress, TEventStatus &EventStatus)

{
  Caption = "Percent complete: " +
    IntToStr(Trunc(Progress / MaxProgress * 100)) + "%";
  Application->ProcessMessages;
}

спасибо большоеsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)