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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Edit и Timer... 
V
    Опции темы
pomogite
Дата 14.5.2006, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

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



Как вот в этой программе сделать так чтобы при нажатии Button1 таймеру присваивалось значение, он запускался и в Эдит1 каждую секунду показывалось значение таймера и при значении = 0 выполнялось какое либо действие?
Код

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    Button3: TButton;
    Timer1: TTimer;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Interval:=3600000;
timer1.Enabled:=true;
Edit1.Text:=IntToStr(Timer1.Interval);
end;
  

Это сообщение отредактировал(а) pomogite - 14.5.2006, 08:39
PM MAIL   Вверх
Sunr1se
Дата 14.5.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 1.5.2006

Репутация: 6
Всего: 13



Создать еще один таймер, установить его интервал на 1000 и прописать в обработчике события OnTimer:

Код

procedure TForm1.Timer2Timer(Sender: TObject);
begin
Edit1.Text := IntToStr(Timer1.Interval);
if Timer1.Interval = 0 then
  begin
  {какие-то действия}
  end;
end;

А строку номер 32 убрать. Да, кстати, в Button1Click добавь такую строчку:

Код
Timer2.Enabled := true;
 
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
tigger
Дата 14.5.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: нет
Всего: 4



Может так...

Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  t1,t2:TDateTime;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//присваиваем значение таймеру
t1:=strtotime('0:00:10');
t2:=time;

timer1.Enabled:=true;
end;

//тут выполняется что-то при работе таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text:=timetostr(t1-(time-t2));
if Edit1.Text = '0:00:00' then
         begin
         timer1.Enabled:=false;
         Application.MessageBox('Настало событие','Событие',mb_ok);
         end;

end;

end.



 smile  


--------------------
user posted image
PM MAIL   Вверх
pomogite
Дата 14.5.2006, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

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



Вот сделала так но почему-то неработает =(  У 2 таймера значение 500м/с
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    Button3: TButton;
    Timer1: TTimer;
    Edit1: TEdit;
    Button4: TButton;
    Timer2: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
{$R soundres.RES}

procedure TForm1.Button1Click(Sender: TObject);
var vre,zero:cardinal;
begin
vre:=20000;
zero:=0;
Timer1.Interval:=vre;
Edit1.Text:=IntToStr(Timer1.Interval);
if Timer1.Interval<>zero then
PlaySound('SND1', 0, SND_RESOURCE);
end;





procedure TForm1.Button4Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
  begin
  Edit1.Text := IntToStr(Timer1.Interval);
  end;

end.

 
PM MAIL   Вверх
tigger
Дата 14.5.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: нет
Всего: 4



Sunr1se, как может быть выполнено это условие if Timer1.Interval = 0

 smile

Добавлено @ 09:14 
pomogite, интервал у таймера сам не уменьшается, что ты из него хочешь выжать... 


--------------------
user posted image
PM MAIL   Вверх
Sunr1se
Дата 14.5.2006, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 1.5.2006

Репутация: 6
Всего: 13



pomogite поставил задачу, я ее решил. А то, что интервал никогда не будет равен нулю... Может быть, интервал будет менять в другом месте кода... 
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
tigger
Дата 14.5.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: нет
Всего: 4



Интервал у таймера это не то время сколько он будет работать, а через какое время будет выполняться его функция. 


--------------------
user posted image
PM MAIL   Вверх
pomogite
Дата 14.5.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

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



Цитата(tigger @  14.5.2006,  09:12 Найти цитируемый пост)
интервал у таймера сам не уменьшается, что ты из него хочешь выжать...  

Хочу чтобы видно было сколько остаётся до события... 
PM MAIL   Вверх
Guedda
Дата 14.5.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



Вот так:
Код

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    Button3: TButton;
    Timer1: TTimer;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  DoSobitya : Integer;
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Interval:=1000;
  timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender : TObject);
begin
  Edit1.Text:=IntToStr(DoSobitya);
  Dec(DoSobitya); //Уменьшаем на одну секунду
end;

initialization
  DoSobitya := 3600; //Сколько секунд до события

end.
 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
pomogite
Дата 14.5.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 24.3.2006

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



Всё равно время не уменьшаеться, просто стоит начальное значение  =( 
PM MAIL   Вверх
tigger
Дата 14.5.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: нет
Всего: 4



pomogite, у меня же в примере все написано, или я чего-то не понимаю... smile  


--------------------
user posted image
PM MAIL   Вверх
Guedda
Дата 14.5.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



Цитата(pomogite @  14.5.2006,  11:02 Найти цитируемый пост)
Всё равно время не уменьшаеться, просто стоит начальное значение  =(  

Хм... 
Покажи, пожалуйста, код для таймера и для кнопки. У меня все работает... 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Poseidon
Дата 14.5.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



pomogite, вот, смотри
 

Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  Project1.rar 3,04 Kb


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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