Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.11.2010, 11:04
Eidosqj Eidosqj вне форума
Прохожий
 
Регистрация: 01.11.2010
Сообщения: 6
Репутация: 10
По умолчанию Как генерировать процесс через промежуток времени?

Здравствуйте, помогите пожалуйста полному чайнику, я не программист, а экономист и нам задали сделать небольшую программу.

В программе есть время, которое через sleep, меняется: т.е. прошло sleep(5000), на форме показывается что прошел день, и так через 30 дней, меняется что прошел месяц, ... год.
Есть другая форма на ней через random генер. некоторое число но после нажания кнопки1.

Как сделать так, чтобы:
1. мы заходим на форму, генерируем число
2. если оно нас не устраивает, то нам надо сгенерировать новое, но это можно сделать тольок после того как пройдет месяц!!! т.е. пока не прошел месяц выдавало бы сообщение что "попробуйте попозже=месяц"

Помогите пожалуйста максимально доступно.
Ответить с цитированием
  #2  
Старый 01.11.2010, 12:48
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Вот что-то такое:

На форму кидаешь кнопку,таймер и лабел
Код:
unit Unit1;

interface

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

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

var
  Form1: TForm1;
  d,m,y,last_m:integer;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
d:=d+1;  //считаем дни
label1.Caption:=inttostr(d);
if d>30 then begin m:=m+1; d:=0; end;//считаем месяцы
if m>12 then begin y:=y+1; m:=0; end;//считаем годы

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if last_m=m then showmessage('месяц не прошел!')  //если последний месяц когда мы тыркали кнопку равен текущему то ругаемся!
            else begin   showmessage('месяц прошел!'); // если не равен то говорим УРЯ и последнему месяцу присваиваем значение текущего
                         last_m:=m;
                 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
d:=0;
m:=0;
y:=0;
last_m:=0;//последний месяц когда мы тыркали кнопку 
end;

end.
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #3  
Старый 02.11.2010, 09:23
Eidosqj Eidosqj вне форума
Прохожий
 
Регистрация: 01.11.2010
Сообщения: 6
Репутация: 10
По умолчанию

Спасибо, но все равно не получается он вообще ничего не генерирует.
Помогите пожалуйста, я совсем ничего не умею.
Он запускается, но в лабел выводится дата. по нажатию на кнопку ничего не генерирует, сообщения не появляются. Вот текст.


Код:
procedure TForm7.Button1Click(Sender: TObject);
begin
  if lastmes=mes then MessageDlg('Месяц не прошел', mtInformation, [mbOk],0)
  else begin MessageDlg('Месяц прошел', mtInformation, [mbOk],0);
             lastmes:=mes;
             randomize;
             kolBezrab:=random(20);
             Edit1.Text:=FloatToStr(kolBezrab);
        end;
end;

procedure TForm7.Timer1Timer(Sender: TObject);
begin
 Day:=StrToInt(Form1.Panel1.Caption);
 day:= day+1;
 Label6.Caption:=IntToStr(day);

 if Mes=1 then begin if Day=32 then begin Day:=0; Mes:=2;end;end;
  if Mes=2 then begin if Day=29 then begin Day:=0; Mes:=3;end;end;
  if Mes=3 then begin if Day=32 then begin Day:=0; Mes:=4;end;end;
  if Mes=4 then begin if Day=31 then begin Day:=0; Mes:=5;end;end;
  if Mes=5 then begin if Day=32 then begin Day:=0; Mes:=6;end;end;
  if Mes=6 then begin if Day=31 then begin Day:=0; Mes:=7;end;end;
  if Mes=7 then begin if Day=32 then begin Day:=0; Mes:=8;end;end;
  if Mes=8 then begin if Day=32 then begin Day:=0; Mes:=9;end;end;
  if Mes=9 then begin if Day=31 then begin Day:=0; Mes:=10;end;end;
  if Mes=10 then begin if Day=32 then begin Day:=0; Mes:=11;end;end;
  if Mes=11 then begin if Day=31 then begin Day:=0; Mes:=12;end;end;
  if Mes=12 then begin if Day=32 then begin Day:=0; Mes:=1; God:=God+1; end;end;
 end;



procedure TForm7.FormCreate(Sender: TObject);
Begin
day:=0;
mes:=0;
God:=2009;
Lastmes:=0;
end;

Код:
 это форма главная в ней время генерируется сл.образом
procedure TForm1.FormCreate(Sender: TObject);
begin
 {исходные данные по сырью}


  Day:=1; Mes:=1; God:=2009;

end;

procedure TForm1.FormShow(Sender: TObject);
begin


  Panel1.Caption:=IntToStr(Day);

  if Mes=1 then Panel2.Caption:='январь';
  if Mes=2 then Panel2.Caption:='февраль';
  if Mes=3 then Panel2.Caption:='март';
  if Mes=4 then Panel2.Caption:='апрель';
  if Mes=5 then Panel2.Caption:='май';
  if Mes=6 then Panel2.Caption:='июнь';
  if Mes=7 then Panel2.Caption:='июль';
  if Mes=8 then Panel2.Caption:='август';
  if Mes=9 then Panel2.Caption:='сентябрь';
  if Mes=10 then Panel2.Caption:='октябрь';
  if Mes=11 then Panel2.Caption:='ноябрь';
  if Mes=12 then Panel2.Caption:='декабрь';

  Panel3.Caption:=IntToStr(God);
 end;

procedure TForm1.BitBtn1Click(Sender: TObject);

Label A;
begin
 Day:=0;
 repeat
 Day:=Day+1;

 if Mes=1 then begin if Day=32 then begin Day:=1; Mes:=2;Goto A;end;end;
  if Mes=2 then begin if Day=29 then begin Day:=1; Mes:=3;Goto A;end;end;
  if Mes=3 then begin if Day=32 then begin Day:=1; Mes:=4;Goto A;end;end;
  if Mes=4 then begin if Day=31 then begin Day:=1; Mes:=5;Goto A;end;end;
  if Mes=5 then begin if Day=32 then begin Day:=1; Mes:=6;Goto A;end;end;
  if Mes=6 then begin if Day=31 then begin Day:=1; Mes:=7;Goto A;end;end;
  if Mes=7 then begin if Day=32 then begin Day:=1; Mes:=8;Goto A;end;end;
  if Mes=8 then begin if Day=32 then begin Day:=1; Mes:=9;Goto A;end;end;
  if Mes=9 then begin if Day=31 then begin Day:=1; Mes:=10;Goto A;end;end;
  if Mes=10 then begin if Day=32 then begin Day:=1; Mes:=11;Goto A;end;end;
  if Mes=11 then begin if Day=31 then begin Day:=1; Mes:=12;Goto A;end;end;
  if Mes=12 then begin if Day=32 then begin Day:=1; Mes:=1; God:=God+1; Goto A;end;end;


  A:

  Panel1.Caption:=IntToStr(Day);

  if Mes=1 then Panel2.Caption:='январь';
  if Mes=2 then Panel2.Caption:='февраль';
  if Mes=3 then Panel2.Caption:='март';
  if Mes=4 then Panel2.Caption:='апрель';
  if Mes=5 then Panel2.Caption:='май';
  if Mes=6 then Panel2.Caption:='июнь';
  if Mes=7 then Panel2.Caption:='июль';
  if Mes=8 then Panel2.Caption:='август';
  if Mes=9 then Panel2.Caption:='сентябрь';
  if Mes=10 then Panel2.Caption:='октябрь';
  if Mes=11 then Panel2.Caption:='ноябрь';
  if Mes=12 then Panel2.Caption:='декабрь';

  Panel3.Caption:=IntToStr(God);
  Application.ProcessMessages;
  sleep(400);

  until God>=2070;

end;

 procedure TForm1.Button2Click(Sender: TObject);

begin
  Day:=1;        // день=1
  Panel1.Caption:=IntToStr(Day);   // выводим что день=1

  if Mes=1 then begin Mes:=2; Panel2.Caption:='февраль'; end;
  if Mes=2 then begin Mes:=3; Panel2.Caption:='март'; end;
  if Mes=3 then begin Mes:=4; Panel2.Caption:='апрель'; end;
  if Mes=4 then begin Mes:=5; Panel2.Caption:='май'; end;
  if Mes=5 then begin Mes:=6; Panel2.Caption:='июнь'; end;
  if Mes=6 then begin Mes:=7; Panel2.Caption:='июль'; end;
  if Mes=7 then begin Mes:=8; Panel2.Caption:='август'; end;
  if Mes=8 then begin Mes:=9; Panel2.Caption:='сентябрь'; end;
  if Mes=9 then begin Mes:=10; Panel2.Caption:='октябрь'; end;
  if Mes=10 then begin Mes:=11; Panel2.Caption:='ноябрь'; end;
  if Mes=11 then begin Mes:=12; Panel2.Caption:='декабрь'; end;
  if Mes=12 then begin Mes:=1; Panel2.Caption:='январь';
  God:=StrToInt(panel3.Caption);
  God:=God+1; 
  Panel3.Caption:=IntToStr(God); end;
end;

 procedure TForm1.Button3Click(Sender: TObject);
Label A;
begin
 if Mes=1 then begin  Day:=1; Mes:=2;Goto A;end;
  if Mes=2 then begin  Day:=1; Mes:=3;Goto A;end;
  if Mes=3 then begin  Day:=1; Mes:=4;Goto A;end;
  if Mes=4 then begin  Day:=1; Mes:=5;Goto A;end;
  if Mes=5 then begin  Day:=1; Mes:=6;Goto A;end;
  if Mes=6 then begin  Day:=1; Mes:=7;Goto A;end;
  if Mes=7 then begin  Day:=1; Mes:=8;Goto A;end;
  if Mes=8 then begin  Day:=1; Mes:=9;Goto A;end;
  if Mes=9 then begin  Day:=1; Mes:=10;Goto A;end;
  if Mes=10 then begin Day:=1; Mes:=11;Goto A;end;
  if Mes=11 then begin Day:=1; Mes:=12;Goto A;end;
  if Mes=12 then begin Day:=1; Mes:=1; God:=God+1; Goto A;end;


  A:

  Panel1.Caption:=IntToStr(Day);

  if Mes=1 then Panel2.Caption:='январь';
  if Mes=2 then Panel2.Caption:='февраль';
  if Mes=3 then Panel2.Caption:='март';
  if Mes=4 then Panel2.Caption:='апрель';
  if Mes=5 then Panel2.Caption:='май';
  if Mes=6 then Panel2.Caption:='июнь';
  if Mes=7 then Panel2.Caption:='июль';
  if Mes=8 then Panel2.Caption:='август';
  if Mes=9 then Panel2.Caption:='сентябрь';
  if Mes=10 then Panel2.Caption:='октябрь';
  if Mes=11 then Panel2.Caption:='ноябрь';
  if Mes=12 then Panel2.Caption:='декабрь';

  Panel3.Caption:=IntToStr(God);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   Day:=1; Mes:=1; God:=2009;
   Panel1.Caption:=IntToStr(Day);
   if Mes=1 then Panel2.Caption:='январь';
   Panel3.Caption:=IntToStr(God);

end;   
Admin: Учимся пользоваться тегами!

время выводится в виде 3 панелей, на 1=число, на 2 =месяц и 3= год.  

Помогите пожалуйста.

Последний раз редактировалось Admin, 02.11.2010 в 10:45.
Ответить с цитированием
  #4  
Старый 02.11.2010, 12:03
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Не знаю правильно ли я понял задачу, но все ж таки.
Во вложении программка, кнопка set задает время задержки в секундах от текущего момента. Кнопка Message проверяет прошло ли нужное время и выдает соответствующее сообщение.
Вложения
Тип файла: 7z RegTime.7z (5.2 Кбайт, 2 просмотров)
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 05.11.2010, 19:30
Eidosqj Eidosqj вне форума
Прохожий
 
Регистрация: 01.11.2010
Сообщения: 6
Репутация: 10
По умолчанию

Задача решена, всем спасибо
Код

Код:
procedure TForm7.Button1Click(Sender: TObject);
begin
  {Генерируем новое значение и делаем кнопку неактивной}
  randomize;
  kolBezrab:=random(20);
  Edit1.Text:=FloatToStr(kolBezrab);
  Button1.Enabled:=false;
end; 



procedure TForm1.FormCreate(Sender: TObject);
begin
 {исходные данные по сырью}


  Day:=1; Mes:=1; God:=2009;

end;

procedure TForm1.FormShow(Sender: TObject);
begin


  Panel1.Caption:=IntToStr(Day);

  if Mes=1 then Panel2.Caption:='январь';
  if Mes=2 then Panel2.Caption:='февраль';
  if Mes=3 then Panel2.Caption:='март';
  if Mes=4 then Panel2.Caption:='апрель';
  if Mes=5 then Panel2.Caption:='май';
  if Mes=6 then Panel2.Caption:='июнь';
  if Mes=7 then Panel2.Caption:='июль';
  if Mes=8 then Panel2.Caption:='август';
  if Mes=9 then Panel2.Caption:='сентябрь';
  if Mes=10 then Panel2.Caption:='октябрь';
  if Mes=11 then Panel2.Caption:='ноябрь';
  if Mes=12 then Panel2.Caption:='декабрь';

  Panel3.Caption:=IntToStr(God);
 end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Day:=0;
  Timer1.Enabled:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Day:=1; Mes:=1; God:=2009;
   Panel1.Caption:=IntToStr(Day);
   Panel2.Caption:='январь'; 
   Panel3.Caption:=IntToStr(God);
end;

procedure TForm1.N7Click(Sender: TObject);
begin
Form2.ShowModal;
end;

procedure TForm1.N10Click(Sender: TObject);
begin
Form5.ShowModal;
end;

procedure TForm1.N9Click(Sender: TObject);
begin
 Form7.ShowModal;
end;

procedure TForm1.N11Click(Sender: TObject);
begin
 Form6.ShowModal;
end;



procedure TForm1.Timer1Timer(Sender: TObject);
begin
//процедуру с события кнопки BitBtn1 перенес в таймер
  Day:=Day+1;
  {Если в отсчете прошел месяц то меняем значения и ставим кнопку на форме 7 активной}
  if Mes=1 then begin if Day=32 then begin Day:=1; Mes:=2; Form7.button1.Enabled:=true;end;end;
  if Mes=2 then begin if Day=29 then begin Day:=1; Mes:=3;Form7.button1.Enabled:=true;end;end;
  if Mes=3 then begin if Day=32 then begin Day:=1; Mes:=4;Form7.button1.Enabled:=true;end;end;
  if Mes=4 then begin if Day=31 then begin Day:=1; Mes:=5;Form7.button1.Enabled:=true;end;end;
  if Mes=5 then begin if Day=32 then begin Day:=1; Mes:=6;Form7.button1.Enabled:=true;end;end;
  if Mes=6 then begin if Day=31 then begin Day:=1; Mes:=7;Form7.button1.Enabled:=true;end;end;
  if Mes=7 then begin if Day=32 then begin Day:=1; Mes:=8;Form7.button1.Enabled:=true;end;end;
  if Mes=8 then begin if Day=32 then begin Day:=1; Mes:=9;Form7.button1.Enabled:=true;end;end;
  if Mes=9 then begin if Day=31 then begin Day:=1; Mes:=10;Form7.button1.Enabled:=true;end;end;
  if Mes=10 then begin if Day=32 then begin Day:=1; Mes:=11;Form7.button1.Enabled:=true;end;end;
  if Mes=11 then begin if Day=31 then begin Day:=1; Mes:=12;Form7.button1.Enabled:=true;end;end;
  if Mes=12 then begin if Day=32 then begin Day:=1; Mes:=1; God:=God+1; Form7.button1.Enabled:=true;end;end;

  Panel1.Caption:=IntToStr(Day);

  if Mes=1 then Panel2.Caption:='январь';
  if Mes=2 then Panel2.Caption:='февраль';
  if Mes=3 then Panel2.Caption:='март';
  if Mes=4 then Panel2.Caption:='апрель';
  if Mes=5 then Panel2.Caption:='май';
  if Mes=6 then Panel2.Caption:='июнь';
  if Mes=7 then Panel2.Caption:='июль';
  if Mes=8 then Panel2.Caption:='август';
  if Mes=9 then Panel2.Caption:='сентябрь';
  if Mes=10 then Panel2.Caption:='октябрь';
  if Mes=11 then Panel2.Caption:='ноябрь';
  if Mes=12 then Panel2.Caption:='декабрь';

  Panel3.Caption:=IntToStr(God);
  if God>=2070 then Timer1.Enabled:=false;

end;

end.

Спасибо, за помощь. Тему можно закрывать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:37.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025