Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.006 c
2-1209395086
Kolan
2008-04-28 19:04
2008.05.25
Как узнать вызоту заголовка окна?


15-1208092475
Дмитрий С
2008-04-13 17:14
2008.05.25
Плазменый ТВ


2-1209554677
budiman
2008-04-30 15:24
2008.05.25
paradox выдает ошибку


2-1209577893
Kiril
2008-04-30 21:51
2008.05.25
Не срабатывает ConvertToTable


2-1209833302
Res
2008-05-03 20:48
2008.05.25
Критическая секция





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский