Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2010, 01:59   #11
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Какой еще label1.caption.refresh ??? Есть Label1.Refresh, лучше Repaint.
И так для каждой метки ?
Как уже было упомянуто, правильнее делать
Application.ProcessMessages.
mihali4 вне форума Ответить с цитированием
Старый 20.11.2010, 05:51   #12
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от xrob Посмотреть сообщение
вы уж меня извините, но зачем городить такую ерунду?
Вы уж меня извините, но вы сначала изучите предмет обсуждения, прежде чем писать собственную ерунду. Согласно описанию в MSDN, progress bar может отображать позиции в диапазоне от 0 и до 65535. А на практике в Delphi доступен диапазон и того меньше: 0 - 32767. Числа небольшие и при указании максимального значения и позиции "в лоб" никто не застрахован от того, что progress bar не сможет отобразить нужное состояние. Так что впредь сначала думаем, а потом пишем, да?
maxionans вне форума Ответить с цитированием
Старый 20.11.2010, 09:18   #13
Bug2000
Пользователь
 
Регистрация: 18.11.2010
Сообщений: 12
По умолчанию

И что вы все к RowCount прицепились.
Поэтому у него и не доходит до максимума.
RowCount - это размер Грида
а файлов вероятно меньше.
вот и
if FindNext(sr)<>0 then break;
Bug2000 вне форума Ответить с цитированием
Старый 20.11.2010, 09:24   #14
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

Цитата:
Сообщение от Bug2000 Посмотреть сообщение
RowCount - это размер Грида
а файлов вероятно меньше.[/B]
Да, скорее всего ты прав.
maxionans вне форума Ответить с цитированием
Старый 20.11.2010, 10:17   #15
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Количество записей в гриде у меня совпадает с количество файлов в папке.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.11.2010, 10:22   #16
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

а насколько progress bar не доходит до конца? может быть имеет смысл после цикла поставить ProgressBar.Position := ProgressBar.Max, да и дело с концом?
maxionans вне форума Ответить с цитированием
Старый 20.11.2010, 10:49   #17
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Поставил. Ладно, пусть хоть так чтоли)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.11.2010, 10:52   #18
Bug2000
Пользователь
 
Регистрация: 18.11.2010
Сообщений: 12
По умолчанию

Код:
procedure TMainForm.N8Click(Sender: TObject);
var
  x, y, i, counter: integer;
  b: TBitmap;
  sr: TSearchRec;
  s: string;
  jpg: TJpegImage;
begin
  if FindFirst(MainForm.RzStatusPane10.Caption + '*.bmp', faAnyFile, sr)
    <> 0 then
  begin
    ShowMessage('Нету файлов!!!');
    exit;
  end;
  ProgressBar1 b := TBitmap.Create;
  jpg := TJpegImage.Create;
  try
    counter := 0;
    with RzStringGrid2 do
    begin
      MainForm.ProgressBar1.Max := RowCount;
      for i := 0 to RowCount - 1 do
      begin
        b.LoadFromFile(MainForm.RzStatusPane10.Caption + sr.Name);
        jpg.Assign(b);
        jpg.CompressionQuality := 5;
        jpg.Compress;
        jpg.SaveToFile(MainForm.RzStatusPane12.Caption +
          MainForm.RzStringGrid2.Cells[0, i] + '.jpeg');
        Inc(counter);
        MainForm.ProgressBar1.Position := counter;
        Label25.Caption := IntToStr(counter);
        Application.ProcessMessages;
        if FindNext(sr) <> 0 then
        begin
          ShowMessage('Нехватило файлов!!!');
          break;
        end
        else if counter = RowCount then
          ShowMessage('Слишком много файлов!!!');
      end;
    end;
  finally
    b.Free;
    jpg.Free;
    FindClose(sr);
  end;
  ShowMessage('                  Âûïîëíåíî!                  ');
end;
Bug2000 вне форума Ответить с цитированием
Старый 20.11.2010, 10:56   #19
Bug2000
Пользователь
 
Регистрация: 18.11.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от maxionans Посмотреть сообщение
Согласно описанию в MSDN, progress bar может отображать позиции в диапазоне от 0 и до 65535. А на практике в Delphi доступен диапазон и того меньше: 0 - 32767. Числа небольшие и при указании максимального значения и позиции "в лоб" никто не застрахован от того, что progress bar не сможет отобразить нужное состояние.
Вот здесь http://msdn.microsoft.com/en-us/library/bb760848.aspx
не видно ни каких ограничений в 65535.
Да и только что прогнал прогресс до миллиона ничего не случилось.
У меня правда сейчас Delphi XE - может в 7 ограничения?

Помогите разобраться. Если эти ограничения для старых win, то мне не страшно, в противном случае придется перелопачивать некоторые проекты.

Последний раз редактировалось Bug2000; 20.11.2010 в 11:30.
Bug2000 вне форума Ответить с цитированием
Старый 20.11.2010, 11:27   #20
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

дело там не в делфи, а в версии comctl32.dll. сейчас, конечно, уже почти везде исопльзуются версии, обеспечивающие диапазоны progressbar-а более 64К, но всякое случается и нет никаких гарантий, что библиотека не будет замещена каким-нибудь стрёмным приложением. а пересчитывать прогресс в проценты это не сложно и надёжно.
maxionans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отображаются записи при сохранении!! ЛисЁНЫШ БД в Delphi 4 06.04.2010 14:30
Отказ при сохранении файла Igor_Tr Microsoft Office Excel 0 17.01.2010 20:40
Ошибка при сохранении БД Xeon332 Помощь студентам 2 05.01.2010 17:00
Ошибки при сохранении Alex19789 Microsoft Office Excel 6 16.10.2009 12:39
Макрос при сохранении Полина Л. Помощь студентам 0 14.09.2009 16:30