![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Всем здравствуйте. На форме находится Gauge, Timer, так же кнопка запуска и поле редактирования интервала таймера.Создаём поток для таймера, из него уже пытаюсь вычислить прогресс в процентах.Не получается.Таймер работает нормально. Поток создавал с помощью репозитария, может какойто модуль забыл указать.Вообщем вопрошаю вам, помогите.Может совет какой дадите.Спасайте, а то не усну сегодня.
|
|
#2
|
|||
|
|||
|
Создай переменную i:integer;
в таймере пиши i:=i+1; gauge1.progress:=i; |
|
#3
|
|||
|
|||
|
Я хочу именно связать с таймером, а не с переменной. Если таймер остановится, то и gauge останавливается.
Вопрос: Где в таймере писать? Код пожалуйста. Возник ещё вопрос, можно ли в таймере выцеплять его тики?Есть ещё мысля, может у меня из потока в поток не передаются данные?!Вечером приведу код всей программы. Последний раз редактировалось Juster, 16.10.2007 в 12:57. |
|
#4
|
|||
|
|||
|
Вот код:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls,unit2, Gauges;
type
TForm1 = class(TForm)
Button1: TButton;
GroupBox1: TGroupBox;
ListBox1: TListBox;
Timer1: TTimer;
Label1: TLabel;
ProgressBar1: TProgressBar;
Button2: TButton;
Gauge1: TGauge;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
u:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
MyThread: TMyThread;
begin
gauge1.Progress:=0;
u:=1500;
MyThread := TMyThread.Create(False);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:='Всё';
end;
end.2-ой модуль: Код:
unit Unit2;
interface
uses
Classes;
type
TMyThread = class(TThread)
private
o:integer;
protected
procedure ShowResult;
procedure Execute; override;
end;
implementation
uses
SysUtils, Unit1;
procedure TMyThread.ShowResult;
begin
form1.Gauge1.Progress:=o;
end;
procedure TMyThread.Execute;
begin
Form1.Timer1.Interval:=u;
repeat
o:=round((100*(u-Form1.Timer1.Interval))/u);
Synchronize(ShowResult);
until Form1.Timer1.Interval=0;
end;
end. |
|
#5
|
|||
|
|||
|
Спасибо Санёк, подтолкнул в правильном направлении.Вопрос решён.
|