![]() |
Erstelle einen Wecker und brauche Hilfe
Liste der Anhänge anzeigen (Anzahl: 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. |
Re: Erstelle einen Wecker und brauche Hilfe
Sry, aber unsinnigere Kommentare hab ich noch nie gesehen. Schreib doch wenigstens rein, was Dir da unklar ist. Außerdem solltest Du den entsprechenden OK-Button auch irgendwie kenntlich machen, zumindest ich habe keine Lust, den Code zu durchforsten, welcher da gemeint sein könnte.
|
Re: Erstelle einen Wecker und brauche Hilfe
Die Kommentare sind nicht in Deutsch oder English, deswegen die Fragezeichen...
Zu dem Button gibt's überhaupt kein Code, also
Delphi-Quellcode:
Na ja... hab mir auch gedacht, dass das zu viel Code ist... wer möchte halt, kann vllt gucken, werde sehr dankbar sein.
procedure TForm6.OkBitBtnClick(Sender: TObject);
begin //leer end; |
Re: Erstelle einen Wecker und brauche Hilfe
Ich habe den Code jetzt nur kurz überflogen, aber funktioniert es so?
Delphi-Quellcode:
procedure TForm6.OkBitBtnClick(Sender: TObject);
begin ModalResult := mrOK; end; |
Re: Erstelle einen Wecker und brauche Hilfe
Wow.... wie kommst du drauf? :shock: Ja das läuft :thumb: Danke! :cheers:
|
Re: Erstelle einen Wecker und brauche Hilfe
Die entscheidenden Zeilen im Hauptformular sind
Zitat:
|
Re: Erstelle einen Wecker und brauche Hilfe
Ok.... :thumb:
|
Re: Erstelle einen Wecker und brauche Hilfe
Zitat:
![]() |
Re: Erstelle einen Wecker und brauche Hilfe
Zitat:
|
Re: Erstelle einen Wecker und brauche Hilfe
Ja gut, aber das hätte man ja auch dazuschreiben oder die Kommentare gleich entfernen können, oder?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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