![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, помогите пожалуйста полному чайнику, я не программист, а экономист и нам задали сделать небольшую программу.
В программе есть время, которое через sleep, меняется: т.е. прошло sleep(5000), на форме показывается что прошел день, и так через 30 дней, меняется что прошел месяц, ... год. Есть другая форма на ней через random генер. некоторое число но после нажания кнопки1. Как сделать так, чтобы: 1. мы заходим на форму, генерируем число 2. если оно нас не устраивает, то нам надо сгенерировать новое, но это можно сделать тольок после того как пройдет месяц!!! т.е. пока не прошел месяц выдавало бы сообщение что "попробуйте попозже=месяц" Помогите пожалуйста максимально доступно. |
#2
|
||||
|
||||
![]() Вот что-то такое:
На форму кидаешь кнопку,таймер и лабел Код:
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
|
|||
|
|||
![]() Спасибо, но все равно не получается он вообще ничего не генерирует.
Помогите пожалуйста, я совсем ничего не умею. ![]() Он запускается, но в лабел выводится дата. по нажатию на кнопку ничего не генерирует, сообщения не появляются. Вот текст. Код:
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
|
||||
|
||||
![]() Не знаю правильно ли я понял задачу, но все ж таки.
Во вложении программка, кнопка set задает время задержки в секундах от текущего момента. Кнопка Message проверяет прошло ли нужное время и выдает соответствующее сообщение. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
|||
|
|||
![]() Задача решена, всем спасибо
Код Код:
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. Спасибо, за помощь. Тему можно закрывать. |