|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Помогите с Timer и Gauge
Всем здравствуйте. На форме находится 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
|
|||
|
|||
Спасибо Санёк, подтолкнул в правильном направлении.Вопрос решён.
|