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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2012, 14:11   #1
star007
Пользователь
 
Регистрация: 20.03.2010
Сообщений: 38
По умолчанию Работа с ProgressBar

Всем доброго времени суток. Вобщем иработает эта функция:

Код:
Procedure TCleanThread.Execute;
begin
//MainForm.Label1.Caption := 'Scan in progress';
//    InvExt: Boolean;
//    InvFlp: Boolean;

Scanning := True;
if InvExt = True then begin
Form1.Panel1.Caption := 'Поиск неверных расширений. Пожалуйста ждите...;
FReg := TRegistry.Create;
FReg.RootKey := HKEY_CLASSES_ROOT;
RegRecurseScan('','','',1);
FReg.Free;
end;
if InvFlp = True then begin
Form1.Panel1.Caption := 'Поиск неверных ссылок на файлы. Пожалуйста ждите...';
FReg := TRegistry.Create;
FReg.RootKey := HKEY_LOCAL_MACHINE;
RegRecurseScan('\SOFTWARE','\SOFTWARE','',1);
FReg.Free;
end;
if InvFlp = True then begin
Form1.Panel1.Caption := 'Поиск неверных ссылок на файлы. Пожалуйста ждите...';
FReg := TRegistry.Create;
FReg.RootKey := HKEY_CURRENT_USER;
RegRecurseScan('\SOFTWARE','\SOFTWARE','',1);
FReg.Free;
end;
Form1.Panel1.Caption := 'Анализ ключей реестра завершён.';
Scanning := False;

Form1.Button1.Enabled := True;
Form1.Button2.Enabled := False;
if Form1.ListView1.Items.Count > 0 then Form1.Button3.Enabled := True;
end;
Через эту кнопку:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListView1.Clear;
Scan := TCleanThread.Create(True);
Scan.InvExt := True;
Scan.InvFlp := True;
Scan.FreeOnTerminate := True;
Scan.Resume;
Button1.Enabled := False;
Button3.Enabled := False;
Button2.Enabled := True;
end;
Надо вместо Panel прикрутить ProgressBar. Пробовал сам, но что-то всё стоит на месте. Заранее благодарен.
star007 вне форума Ответить с цитированием
Старый 22.05.2012, 14:55   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

А что именно не получается? Покажите. А стоять может из-за того, что Вы обращаетесь в VCL из потока без метода Syncronize (синхронизация с главным потоком программы).
FaTaL вне форума Ответить с цитированием
Старый 22.05.2012, 15:46   #3
star007
Пользователь
 
Регистрация: 20.03.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
А что именно не получается? Покажите. А стоять может из-за того, что Вы обращаетесь в VCL из потока без метода Syncronize (синхронизация с главным потоком программы).
Делаю вот так:

Код:
Procedure TCleanThread.Execute;
var
g:integer;
begin
//MainForm.Label1.Caption := 'Scan in progress';
//    InvExt: Boolean;
//    InvFlp: Boolean;

Scanning := True;
if InvExt = True then begin
Form1.Panel1.Caption := 'Поиск неверных расширений';
FReg := TRegistry.Create;
FReg.RootKey := HKEY_CLASSES_ROOT;
RegRecurseScan('','','',1);
FReg.Free;
g:=form1.ListView1.Items.Count;
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+g;
end;
if InvFlp = True then begin
Form1.Panel1.Caption := 'Поиск неверных ссылок на файлы';
FReg := TRegistry.Create;
FReg.RootKey := HKEY_LOCAL_MACHINE;
RegRecurseScan('\SOFTWARE','\SOFTWARE','',1);
FReg.Free;
g:=form1.ListView1.Items.Count;
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+g;
end;
if InvFlp = True then begin
Form1.Panel1.Caption := 'Поиск неверных ссылок на файлы';
FReg := TRegistry.Create;
FReg.RootKey := HKEY_CURRENT_USER;
RegRecurseScan('\SOFTWARE','\SOFTWARE','',1);
FReg.Free;
g:=form1.ListView1.Items.Count;;
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+g;
end;
Form1.Panel1.Caption := 'Анализ реестра завершён';
Scanning := False;

Form1.Button1.Enabled := True;
Form1.Button2.Enabled := False;
if Form1.ListView1.Items.Count > 0 then Form1.Button3.Enabled := True;
end;
ничего не происходит
З.Ы. С ProgressBar'ом первый раз работаю, погите

Последний раз редактировалось star007; 22.05.2012 в 15:48.
star007 вне форума Ответить с цитированием
Старый 22.05.2012, 15:54   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

А что Вы этим делаете?
Код:
g:=form1.ListView1.Items.Count;;
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+g;
Для чего это? Зачем так?
FaTaL вне форума Ответить с цитированием
Старый 22.05.2012, 16:15   #5
star007
Пользователь
 
Регистрация: 20.03.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
А что Вы этим делаете?
Код:
g:=form1.ListView1.Items.Count;;
Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+g;
Для чего это? Зачем так?
хотел изменять состояние брав кол-во записей из ListView.
З.Ы. Исходник прилогается (Основные процедуры в юните ClearReg в очистке реестра)
Вложения
Тип файла: rar ПРОЕКТ11111.rar (1.12 Мб, 10 просмотров)
star007 вне форума Ответить с цитированием
Старый 22.05.2012, 21:16   #6
C_R_E_S_C_H
Пользователь
 
Аватар для C_R_E_S_C_H
 
Регистрация: 02.01.2012
Сообщений: 34
По умолчанию

а где тут вы задаете максимальное значение в прогресс баре?
Код:
if Пиво=True then
ShowMessage('Пишем дальше');
Else ShowMessage('Да ну вас всех');
C_R_E_S_C_H вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ProgressBar как Slider или Slider как ProgressBar coNsept Общие вопросы .NET 5 08.03.2012 17:00
ProgressBar DeDoK Общие вопросы Delphi 9 17.05.2010 02:51
ProgressBar masterenergy Microsoft Office Excel 0 18.03.2010 14:04
ProgressBar Nice42ru Помощь студентам 4 05.11.2009 08:40
ProgressBar Rahim1993 Общие вопросы Delphi 10 20.01.2008 21:28