Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Часы + будильник   Найти похожие ветки 

 
Verbatim512 ©   (2008-04-13 15:43) [0]

У меня Курсовая. "часы с будильником".
Когда на будильнике устонавливаю время и нажимаю ОК!
Через определённое время появляется форма. С уведомлением. Например: Вставай.
При этом звучит одна стандартная мелодия windows "TADA".
Теперь к главному!!!
У меня должно в Combo Box быть помещено 5 мелодий .wav формата.
Я должен выбрать одну из них. После чего нажать на кнопку ОК.
По истечению времени должна появиться форма уже с другим звуковым сигналом.
Я её пробовал прописать через Case, но у меня шото не сильно получилось.

Непроходите мимо. я реально не знаю как это сделать!!!! Моя ася  404508603


 
vrem_   (2008-04-13 16:04) [1]

даже слово "прошу" не написал


 
Anatoly Podgoretsky ©   (2008-04-13 16:14) [2]

> vrem_  (13.04.2008 16:04:01)  [1]

Не писал еще в corbinu?


 
vrem_   (2008-04-13 16:16) [3]

написал вчера, ответа нет пока.


 
Anatoly Podgoretsky ©   (2008-04-13 16:21) [4]

> vrem_  (13.04.2008 16:16:03)  [3]

Если они поправили ситуацию с работниками, то не получишь, мне же просто повезло, что попал на незнающего, он с дуру и ответил. Но если появится ответ, то проинформируй общественность.


 
Rust   (2008-04-13 16:28) [5]

а в чем проблема?
используется tmediaplayer, ttimer , ну и баттоны чекбоксы..


 
AIK ©   (2008-04-13 18:45) [6]


> Непроходите мимо. я реально не знаю как это сделать!!!! Моя ася  404508603


И за это реально нада получить незачет


 
tesseract ©   (2008-04-13 18:46) [7]


> Непроходите мимо. я реально не знаю как это сделать!!!!


тогда плати.

ЗЫ: розыч ты прав,  они атакуют.


 
Verbatim512 ©   (2008-04-13 19:52) [8]

>>>vrem_   (13.04.08 16:04) [1]
>>>даже слово "прошу" не написал

На форумах програмистов запрещают писать "прошу","помогите" и т.д. Вот потому и не написал!!!

Вот код программы даю:

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   MainMenu1: TMainMenu;
   N1: TMenuItem;
   Timer1: TTimer;

    // эти объявления вставлены вручную
   procedure Vector(x0,y0,a,l: integer);
   procedure DrawClock;
   procedure FormCreate(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure N1Click(Sender: TObject);

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

var
 Form1: TForm1;

implementation

{$R *.dfm}

uses
  DateUtils,Unit2; // для доступа к SecondOf,
             // MinuteOf и HourOf

const
 R = 75 ;    // радиус циферблата часов

var
x0,y0: integer;         // центр циферблата
ahr,amin,asec: integer; // положение стрелок (угол)

// инициализация формы
procedure TForm1.FormCreate(Sender: TObject);
var
   t: TDateTime;
begin
 // зададим размер формы
 // в соответствии с размером циферблата
 ClientHeight := (R+30)*2;
 ClientWidth  := (R+30)*2;
 x0 := R+30;
 y0 := R+30;

 t := Now();

 // положение стрелок
 ahr :=  90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;
 amin := 90 - MinuteOf(t)*6;
 asec := 90 - SecondOf(Today)*6;

 Timer1.Interval := 1000; // период сигнал от таймера 1 сек
 Timer1.Enabled := True;  // пуск таймера
end;

// вычерчивает вектор заданной длины из точки (x0,y0)
procedure TForm1.Vector(x0,y0: integer; a, l: integer);
   // x0,y0 - начало вектора
   // a - угол между осью x и вектором
   // l - длина вектора
const
 GRAD = 0.0174532;   // коэффициент пересчета угла из градусов в радианы
var
 x,y: integer;       // координаты конца вектора
begin
 Canvas.MoveTo(x0,y0);
 x := Round(x0 + l*cos(a*GRAD));
 y := Round(y0 - l*sin(a*GRAD));
 Canvas.LineTo(x,y);
end;

// рисует стрелки
procedure TForm1.DrawClock;
var
   t: TDateTime;
begin
 // шаг секундной и минутной стрелок 6 градусов,
 // часовой - 30.

 // стереть изображение стрелок
 Canvas.Pen.Color := clBtnFace;
 Canvas.Pen.Width :=3;
 // часовую
 Vector(x0,y0, ahr, R-20);
 // минутную
 Vector(x0,y0, amin, R-15);
 // секундную
 Vector(x0,y0, asec, R-7);

 t := Now();

 // новое положение стрелок
 ahr :=  90 - HourOf(t)*30-(MinuteOf(t)div 12)*6;
 amin := 90 - MinuteOf(t)*6;
 asec := 90 - SecondOf(t)*6;

 // нарисовать стрелки
 // часовая стрелка
 Canvas.Pen.Width := 3;
 Canvas.Pen.Color := clBlack;
 Vector(x0,y0, ahr, R-20);

 // минутная стрелка
 Canvas.Pen.Width := 2;
 Canvas.Pen.Color := clBlack;
 Vector(x0,y0, amin, R-15);

 // секундная стрелка
 Canvas.Pen.Width := 1;
 Canvas.Pen.Color := clYellow;
 Vector(x0,y0, asec, R-7);
end;

// прорисовка циферблата и начальных стрелок
procedure TForm1.FormPaint(Sender: TObject);
var
   x,y: integer;    // координаты маркера на циферблате
   a: integer;      // угол между OX и прямой (x0,yo) (x,y)
   h: integer;      // метка часовой риски

   bs: TBrushStyle; // стиль кисти
   pc: TColor;      // цвет карандаша
   pw: integer;     // ширина карандаша
begin
 bs := Canvas.Brush.Style;
 pc := Canvas.Pen.Color;
 pw := Canvas.Pen.Width;

 Canvas.Brush.Style := bsClear;
 Canvas.Pen.Width := 1;
 Canvas.Pen.Color := clBlack;

 a:=0; // метки ставим от 3-х часов, против
       // часовой стрелки
 h:=3; // угол 0 градусов - это 3 часа

 // циферблат
 while a < 360 do
 begin
   x:=x0+Round( R * cos(a*2*pi/360));
   y:=x0-Round( R * sin(a*2*pi/360));
   Form1.Canvas.MoveTo(x,y);
   if (a mod 30) = 0 then
       begin
           Canvas.Ellipse(x-2,y-2,x+3,y+3);
           // цифры по большему радиусу
           x:=x0+Round( (R+15) * cos(a*2*pi/360));
           y:=x0-Round( (R+15) * sin(a*2*pi/360));
           Canvas.TextOut(x-5,y-7,IntToStr(h));
           dec(h);
           if h = 0 then h:=12;
       end
       else Canvas.Ellipse(x-1,y-1,x+1,y+1);
   a:=a+6; // 1 минута - 6 градусов
 end;
 // восстановить карандаш кисть
 Canvas.Brush.Style := bs;
 Canvas.Pen.Width := pw;
 Canvas.Pen.Color := pc;

 DrawClock;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
DrawClock;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
form2.show;
end;

end.


 
Verbatim512 ©   (2008-04-13 19:54) [9]

Форма №2

unit Unit2;

interface

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

type
 TForm2 = class(TForm)
   Shape1: TShape;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   Label7: TLabel;
   Shape2: TShape;
   Label8: TLabel;
   Label6: TLabel;
   Label9: TLabel;
   UpDown1: TUpDown;
   UpDown2: TUpDown;
   Button1: TButton;
   Edit1: TEdit;
   Timer2: TTimer;
   procedure Timer2Timer(Sender: TObject);
   procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
   procedure UpDown2Click(Sender: TObject; Button: TUDBtnType);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

uses Unit3;

{$R *.dfm}

var
   Hour,Min: word;      // время на индикаторе
   AlHour, AlMin: word; // будильник установлен на AlHour:AlMin

// начало работы программы
// сигнал от таймера
procedure TForm2.Timer2Timer(Sender: TObject);
var
   cHour,cMin: word;
begin
   // получить текущее время
   cHour := HourOf(Now);
   cMin :=  MinuteOf(Now);

   if Timer2.Tag = 0 // окно программы на экране
   then begin
         { проверим, совпадает ли текущее время
           с отображаемым на индикаторе }
         if cHour <> Hour then
         begin
            Hour := cHour;
            Label1.Caption := IntToStr(Hour);
         end;

         if cMin <> Min then
         begin
            Min := cMin;
            if min <10
                then Label2.Caption := "0" + IntToStr(Min)
                else Label2.Caption := IntToStr(Min);
         end;

         // обеспечим мигание двоеточия
        if Label3.Visible
          then Label3.Visible := False
          else label3.Visible := True;
    end

    else // окно программы скрыто, контролируем
         // наступление момента подачи сигнала
         if (cHour = AlHour) and (cMin = AlMin)
             // сигнал !
            then begin
                Form3.Show;
                Timer2.Tag := 0;
                Timer2.Interval := 1000;
            end;
end;

procedure TForm2.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
  if UpDown1.Position < 10
       then Label4.Caption := "0" + IntToStr(UpDown1.Position)
       else Label4.Caption := IntToStr(UpDown1.Position);
    end;
procedure TForm2.UpDown2Click(Sender: TObject; Button: TUDBtnType);
begin
if UpDown2.Position < 10
      then Label5.Caption := "0" + IntToStr(UpDown2.Position)
      else Label5.Caption := IntToStr(UpDown2.Position);
   end;
   
// щелчок на кнопке OK
procedure TForm2.Button1Click(Sender: TObject);
begin
   // установить будильник
   AlHour := UpDown1.Position;
   AlMin  := UpDown2.Position;
   Timer2.Tag := 1;
   Form2.Hide; //
   Timer2.Interval := 3000; // проверять каждые 3 секунды
end;

end.


 
Verbatim512 ©   (2008-04-13 19:54) [10]

Форма №2


unit Unit2;

interface

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

type
 TForm2 = class(TForm)
   Shape1: TShape;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   Label7: TLabel;
   Shape2: TShape;
   Label8: TLabel;
   Label6: TLabel;
   Label9: TLabel;
   UpDown1: TUpDown;
   UpDown2: TUpDown;
   Button1: TButton;
   Edit1: TEdit;
   Timer2: TTimer;
   procedure Timer2Timer(Sender: TObject);
   procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
   procedure UpDown2Click(Sender: TObject; Button: TUDBtnType);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

uses Unit3;

{$R *.dfm}

var
   Hour,Min: word;      // время на индикаторе
   AlHour, AlMin: word; // будильник установлен на AlHour:AlMin

// начало работы программы
// сигнал от таймера
procedure TForm2.Timer2Timer(Sender: TObject);
var
   cHour,cMin: word;
begin
   // получить текущее время
   cHour := HourOf(Now);
   cMin :=  MinuteOf(Now);

   if Timer2.Tag = 0 // окно программы на экране
   then begin
         { проверим, совпадает ли текущее время
           с отображаемым на индикаторе }
         if cHour <> Hour then
         begin
            Hour := cHour;
            Label1.Caption := IntToStr(Hour);
         end;

         if cMin <> Min then
         begin
            Min := cMin;
            if min <10
                then Label2.Caption := "0" + IntToStr(Min)
                else Label2.Caption := IntToStr(Min);
         end;

         // обеспечим мигание двоеточия
        if Label3.Visible
          then Label3.Visible := False
          else label3.Visible := True;
    end

    else // окно программы скрыто, контролируем
         // наступление момента подачи сигнала
         if (cHour = AlHour) and (cMin = AlMin)
             // сигнал !
            then begin
                Form3.Show;
                Timer2.Tag := 0;
                Timer2.Interval := 1000;
            end;
end;

procedure TForm2.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
  if UpDown1.Position < 10
       then Label4.Caption := "0" + IntToStr(UpDown1.Position)
       else Label4.Caption := IntToStr(UpDown1.Position);
    end;
procedure TForm2.UpDown2Click(Sender: TObject; Button: TUDBtnType);
begin
if UpDown2.Position < 10
      then Label5.Caption := "0" + IntToStr(UpDown2.Position)
      else Label5.Caption := IntToStr(UpDown2.Position);
   end;
   
// щелчок на кнопке OK
procedure TForm2.Button1Click(Sender: TObject);
begin
   // установить будильник
   AlHour := UpDown1.Position;
   AlMin  := UpDown2.Position;
   Timer2.Tag := 1;
   Form2.Hide; //
   Timer2.Interval := 3000; // проверять каждые 3 секунды
end;

end.


 
Verbatim512 ©   (2008-04-13 19:56) [11]

Форма №3


unit Unit3;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls,
  MMSYSTEM,  // для доступа к PlaySound
  Unit2; // для доступа к главной (стартовой) форме

type
 TForm3 = class(TForm)
   Label1: TLabel;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   procedure FormActivate(Sender: TObject);

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

var
 Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
   Form3.Hide;  // скрыть окно с сообщением
   Form1.Show; // сделать доступной главную форму
end;

procedure TForm3.FormActivate(Sender: TObject);
begin
    Label1.Caption := Form2.Edit1.Text; // текст сообщения
    PlaySound("tada.wav",0,SND_ASYNC);  // звук
end;

end.



 
Verbatim512 ©   (2008-04-13 20:00) [12]

Удалено модератором


 
AIK ©   (2008-04-13 21:24) [13]

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


 
Verbatim512 ©   (2008-04-13 22:16) [14]

>>AIK © часы и есть стрелочные тока с этим плеером торба!!


 
Anatoly Podgoretsky ©   (2008-04-13 23:06) [15]

> AIK  (13.04.2008 18:45:06)  [6]

А реально получить оплату?


 
AIK ©   (2008-04-13 23:19) [16]

Непонял зачто оплату за незачет или вы хотели так :
............................
Anatoly Podgoretsky ©   (13.04.08 23:06) [15]

> Verbatim512 ©   (13.04.08 22:16) [14]

А реально получить оплату?
............................


 
Anatoly Podgoretsky ©   (2008-04-14 00:16) [17]

За незачет не надо, надо за зачет.



Страницы: 1 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.019 c
6-1186586851
Kyber
2007-08-08 19:27
2008.05.25
Исправление ошибок в скачанном файле


2-1209108268
worldmen
2008-04-25 11:24
2008.05.25
Открыть файл в RichEdit только для чтения


15-1207771555
TIF
2008-04-10 00:05
2008.05.25
Ура! 11 000 000 статей MSDN будут переведены на русский язык...


2-1209713192
SergeyS
2008-05-02 11:26
2008.05.25
Помогите, пожалуйста.


2-1209824858
Res
2008-05-03 18:27
2008.05.25
wm_quit