|
Registriert seit: 28. Apr 2008 1.717 Beiträge FreePascal / Lazarus |
#1
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
|
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |