AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erstelle einen Wecker und brauche Hilfe

Ein Thema von AlexII · begonnen am 25. Okt 2009 · letzter Beitrag vom 25. Okt 2009
 
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Erstelle einen Wecker und brauche Hilfe

  Alt 25. Okt 2009, 13:07
Hallo,
ich erstelle nach einem Tutorial nen Wecker. Hab alles fertig, da wird allerdings nicht erklärt wie man beim klicken auf den Ok Button die Weckerzeit usw. übernimmt. Kann mir vllt da jemand weiter helfen? Hab die Forms als Screenshot, die zwei Units hier als Code:

Delphi-Quellcode:
unit Unit4; {Clock Alarms}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Buttons, XPMan, ExtCtrls, DateUtils, jpeg,
  AppEvnts;

type
  TForm4 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    NewButton: TBitBtn;
    EditButton: TBitBtn;
    DeleteButton: TBitBtn;
    CloseButton: TBitBtn;
    AlarmListBox: TListBox;
    ApplicationEvents1: TApplicationEvents;
    Timer1: TTimer;
    procedure FormShow(Sender: TObject);
    procedure CloseButtonClick(Sender: TObject);
    procedure NewButtonClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure EditButtonClick(Sender: TObject);
    procedure DeleteButtonClick(Sender: TObject);
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

uses Unit1, Unit6;

{$R *.dfm}

procedure TForm4.FormShow(Sender: TObject);
begin
Image1.Picture:=Form1.Image3.Picture;
end;

procedure TForm4.CloseButtonClick(Sender: TObject);
begin
Close;
end;

procedure TForm4.NewButtonClick(Sender: TObject);
var
  Alarm: TAlarm;
begin
  Form6 := TForm6.Create(Self);
  try
    // ????????? ??????
    if Form6.ShowModal = mrOK then
    begin
      // ??????? ????? ?????? ??????????
      Alarm := TAlarm.Create;
      // ???????? ????????? ?????????? ?? ???????
      Form6.GetData(Alarm);
      // ???????? ????????? ? ?????? ? ??????? ???
      AlarmListBox.ItemIndex := AlarmListBox.Items.AddObject(
        Alarm.GetAlarmStr, Alarm);
    end;
  finally
    Form6.Free;
  end;

end;

procedure TForm4.FormDestroy(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to AlarmListBox.Items.Count - 1 do
    AlarmListBox.Items.Objects[I].Free;
end;

procedure TForm4.EditButtonClick(Sender: TObject);
var
  Alarm: TAlarm;
  SavedIndex: Integer;
begin
  Form6 := TForm6.Create(Self);
  try
    // ???????? ????????? ?????????
    with AlarmListBox do Alarm := TAlarm(Items.Objects[ItemIndex]);
    // ?????????? ??????????? ???????? ??????? ? ???????????? ?
    // ??????????? ??????????
    Form6.SetData(Alarm);
    // ????????? ??????
    if Form6.ShowModal = mrOK then
    begin
      // ???????? ?? ??????? ????? ????????? ??????????
      Form6.GetData(Alarm);
      with AlarmListBox do
      begin
        // ????????? ????? ?????????? ? ?????? ????????
        SavedIndex := ItemIndex;
        // ???????? ????? ????????
        // ??? ???? ??????? ????????? ???? ?????????
        Items.Strings[ItemIndex] := Alarm.GetAlarmStr;
        // ???????????? ????? ?????????? ? ?????? ????????
        ItemIndex := SavedIndex;
      end;
    end;
  finally
    Form6.Free;
  end;
end;


procedure TForm4.DeleteButtonClick(Sender: TObject);
begin
  with AlarmListBox do
  begin
    // ????????? ?????? ??????????
    Items.Objects[ItemIndex].Free;
    // ??????? ?? ?????? ??????????????? ??????? ??????
    Items.Delete(ItemIndex);
  end;
end;


procedure TForm4.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
  EditButton.Enabled := AlarmListBox.ItemIndex <> -1;
  DeleteButton.Enabled := AlarmListBox.ItemIndex <> -1;
  Done := True; // ????????????? ??????????? ????????? ??????? OnIdle
end;

procedure TForm4.Timer1Timer(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to AlarmListBox.Items.Count - 1 do
    with AlarmListBox.Items.Objects[I] as TAlarm do
      CheckTime;
end;

end.




Delphi-Quellcode:
unit Unit6; {Alarm Details}

interface

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

type
  TAlarm = class
  private
    Handled: Boolean;
  public
    MsgText: string;
    DateTime: TDateTime;
    PlaySound: Boolean;
    Recurring: Integer;
    function GetAlarmStr: string;
    procedure CheckTime;
  end;

type
  TForm6 = class(TForm)
    CloseBitBtn: TBitBtn;
    OkBitBtn: TBitBtn;
    Bevel1: TBevel;
    MessageEdit: TEdit;
    TimeMaskEdit: TMaskEdit;
    MessageLabel: TLabel;
    TimeLabel: TLabel;
    PlaySoundCheckBox: TCheckBox;
    RecurringGroupBox: TGroupBox;
    EverydayRadioButton: TRadioButton;
    WeeklyonRadioButton: TRadioButton;
    DateRadioButton: TRadioButton;
    WeeklyComboBox: TComboBox;
    DateTimePicker1: TDateTimePicker;
    procedure CloseBitBtnClick(Sender: TObject);
    procedure RecurringRadioButtonClick(Sender: TObject);
    procedure MessageEditChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure GetData(Alarm: TAlarm);
    procedure SetData(Alarm: TAlarm);
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

function TAlarm.GetAlarmStr: string;
begin
  Result := FormatDateTime('hh:mm ', DateTime) + MsgText;
end;

procedure TAlarm.CheckTime;
var
  Hour1, Min1, Sec1, MSec1: Word;
  Hour2, Min2, Sec2, MSec2: Word;
  Match: Boolean;
begin
  // ???????????? ??????? ?????
  DecodeTime(Time, Hour1, Min1, Sec1, MSec1);
  // ????????????? ??????? ????? ??????????
  DecodeTime(DateTime, Hour2, Min2, Sec2, MSec2);
  // ?????????, ??? ??????? ????? ????????? ? ???????? ??????????
  case Recurring of
    0: // ??? ?????????? ?????????????
      Match := (Hour1 = Hour2) and (Min1 = Min2);
    1..7: // ??? ???????????? ?????????????
      Match := (Hour1 = Hour2) and (Min1 = Min2) and
               (Recurring = DayOfWeek(Date));
    8: // ??? ?????????? ????
      Match := (Hour1 = Hour2) and (Min1 = Min2) and
               (Int(DateTime) = Date);
    else
      Match := False;
  end;
  // ?????? ?????? ? ?????? ??????? ???????????
  if Match then
  begin
    if not Handled then // ??????!
    begin
      Handled := True; // ????????????? ????????? ????????????
      if PlaySound then Beep;
      MessageDlg(GetAlarmStr, mtWarning, [mbOk], 0);
    end;
  end
  else
    Handled := False; // ?????????? ??????? ????????????
end;

procedure TForm6.GetData(Alarm: TAlarm);
begin
  with Alarm do
  begin
    // ???????? ?? ??????? ????? ????????? ??????????
    MsgText := MessageEdit.Text;
    // ???????? ?? ??????? ????? ???????????? ??????????
    DateTime := StrToTime(TimeMaskEdit.Text);
    // ???????? ?? ??????? ????????? ????????????? ?????
    PlaySound := PlaySoundCheckBox.Checked;
    // ???????? ?? ??????? ????????????? ???????????? ??????????
    if EverydayRadioButton.Checked then
      Recurring := 0
    else if WeeklyonRadioButton.Checked then
      Recurring := WeeklyComboBox.ItemIndex + 1
    else { DateRadioButton.Checked }
    begin
      Recurring := 8;
      DateTime := DateTimePicker1.Date + DateTime;
    end;
  end;
end;

procedure TForm6.SetData(Alarm: TAlarm);
begin
  with Alarm do
  begin
    // ?????????? ? ???? ??????? ????? ????????? ??????????
    MessageEdit.Text := MsgText;
    // ?????????? ? ???? ??????? ????? ??????????
    TimeMaskEdit.Text := FormatDateTime('hh:mm', DateTime);
    // ?????????? ? ???? ??????? ????????? ????????????? ?????
    PlaySoundCheckBox.Checked := PlaySound;
    // ?????????? ? ???? ??????? ????????????? ??????????
    case Recurring of
      0: // ?????????
        EverydayRadioButton.Checked := True;
      1..7: // ???????????
        begin
          WeeklyonRadioButton.Checked := True;
          WeeklyComboBox.ItemIndex := Recurring - 1;
        end;
      8: // ? ?????????? ????
        begin
          DateRadioButton.Checked := True;
          DateTimePicker1.Date := Int(DateTime);
        end;
    end;
  end;
end;

procedure TForm6.CloseBitBtnClick(Sender: TObject);
begin
Close;
end;

procedure TForm6.RecurringRadioButtonClick(Sender: TObject);
begin
  WeeklyComboBox.Enabled := Sender = WeeklyonRadioButton;
  DateTimePicker1.Enabled := Sender = DateRadioButton;
end;

procedure TForm6.MessageEditChange(Sender: TObject);
begin
OkBitBtn.Enabled := Length(MessageEdit.Text) <> 0;
end;

procedure TForm6.FormCreate(Sender: TObject);
begin
TimeMaskEdit.Text := FormatDateTime('hh:mm', Time);
WeeklyComboBox.ItemIndex := DayOfWeek(DateTimePicker1.Date) - 1;
DateTimePicker1.Date := Now;
end;

end.
Angehängte Grafiken
Dateityp: jpg screenshotwecker_169.jpg (169,4 KB, 18x aufgerufen)
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz