Конференция "Прочее" » Часы + будильник [D7, XP]
 
  • Verbatim512 © (13.04.08 15:43) [0]
    У меня Курсовая. "часы с будильником".
    Когда на будильнике устонавливаю время и нажимаю ОК!
    Через определённое время появляется форма. С уведомлением. Например: Вставай.
    При этом звучит одна стандартная мелодия windows "TADA".
    Теперь к главному!!!
    У меня должно в Combo Box быть помещено 5 мелодий .wav формата.
    Я должен выбрать одну из них. После чего нажать на кнопку ОК.
    По истечению времени должна появиться форма уже с другим звуковым сигналом.
    Я её пробовал прописать через Case, но у меня шото не сильно получилось.

    Непроходите мимо. я реально не знаю как это сделать!!!! Моя ася  404508603
  • vrem_ (13.04.08 16:04) [1]
    даже слово "прошу" не написал
  • Anatoly Podgoretsky © (13.04.08 16:14) [2]
    > vrem_  (13.04.2008 16:04:01)  [1]

    Не писал еще в corbinu?
  • vrem_ (13.04.08 16:16) [3]
    написал вчера, ответа нет пока.
  • Anatoly Podgoretsky © (13.04.08 16:21) [4]
    > vrem_  (13.04.2008 16:16:03)  [3]

    Если они поправили ситуацию с работниками, то не получишь, мне же просто повезло, что попал на незнающего, он с дуру и ответил. Но если появится ответ, то проинформируй общественность.
  • Rust (13.04.08 16:28) [5]
    а в чем проблема?
    используется tmediaplayer, ttimer , ну и баттоны чекбоксы..
  • AIK © (13.04.08 18:45) [6]

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


    И за это реально нада получить незачет
  • tesseract © (13.04.08 18:46) [7]

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


    тогда плати.

    ЗЫ: розыч ты прав,  они атакуют.
  • Verbatim512 © (13.04.08 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 © (13.04.08 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 © (13.04.08 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 © (13.04.08 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 © (13.04.08 20:00) [12]
    НЕХ с меня смеяться. Если такие умные помогите, а если нет то ...
  • AIK © (13.04.08 21:24) [13]
    Это просто ужас для написания такой простенькой программы...
    Хотя чтоб забить по больше листов для курсовой наверное самый раз.
    И обезательно часы должны быть стрелочными, что неподойдут с цифрами?
  • Verbatim512 © (13.04.08 22:16) [14]
    >>AIK © часы и есть стрелочные тока с этим плеером торба!!
  • Anatoly Podgoretsky © (13.04.08 23:06) [15]
    > AIK  (13.04.2008 18:45:06)  [6]

    А реально получить оплату?
  • AIK © (13.04.08 23:19) [16]
    Непонял зачто оплату за незачет или вы хотели так :
    ............................
    Anatoly Podgoretsky ©   (13.04.08 23:06) [15]

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

    А реально получить оплату?
    ............................
  • Anatoly Podgoretsky © (14.04.08 00:16) [17]
    За незачет не надо, надо за зачет.
 
Конференция "Прочее" » Часы + будильник [D7, XP]
Есть новые Нет новых   [134434   +29][b:0][p:0.007]