Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DLL и pogressbar 
:(
    Опции темы
Baber
Дата 20.6.2003, 09:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте господа!
У меня возникла проблема:
Имеется готовая DLL, я вызываю из неё некую функцию, которая выполняется более минуты (так и должно быть). Та вот! Как прицепить progressbar, чтобы во время выполнения функции полоска в progressbar е ползла?
Заранее благодарен!
  Вверх
stab
Дата 20.6.2003, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



если саму функцию модифицировать можно, то передовать ей вкачестве параметра ProgressBar, если не возможно, то надо завести отдельную нитку (Thread) и в ней делать вывод прогресса, только не точный он будет, т.е. просто будет понятно, что его-то работает, а вот сколько осталось до конца не будет ясно


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Baber
Дата 20.6.2003, 10:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Именно так, DLL готовая.
Цитата
... надо завести отдельную нитку (Thread) и в ней делать вывод прогресса, только не точный он будет, т.е. просто будет понятно, что его-то работает, а вот сколько осталось до конца не будет ясно


Да предпологаю, что это единственный вариант(хотя могу и ощибаться).

Рождается ещё вопрос: как это реализовать? Я пока не работал с нитами.
Если можно в кратце, откуда куда искать следует.
  Вверх
stab
Дата 20.6.2003, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



проще оказалось сделать вызов долгоработающего кода в отдельной нитке:

Код
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls, StdCtrls, ExtCtrls;

type

 TLongOperationThread = class(TThread)
 protected
   procedure Execute; override;
 end;


 TForm1 = class(TForm)
   ProgressBar1: TProgressBar;
   Button1: TButton;
   Timer1: TTimer;
   procedure Button1Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
   LongOp: TLongOperationThread;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TProgressThread }

procedure TLongOperationThread.Execute;
var
 i, j: Integer;
begin
 inherited;

 // long operation
 for i := 0 to 1000000 do
   for j := 0 to 10000 do;

 Terminate;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 LongOp := TLongOperationThread.Create(False);
 Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if not LongOp.Terminated then begin
   if ProgressBar1.Position = ProgressBar1.Max then
     ProgressBar1.Position := ProgressBar1.Min;
   ProgressBar1.StepBy(1);
 end
 else begin
   Timer1.Enabled := False;
   LongOp.Free;
   ProgressBar1.Position := ProgressBar1.Min;
 end;
end;

end.


в Object Inspector проставь:
Timer1.Enabled: False
Timer1.Interval: 50

для полноты почитай в хелпе про TThread smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Baber
Дата 20.6.2003, 11:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо!
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.