![]() |
Nach bestimmter Zeit Menuitem wieder aktivieren.(Fertig)
Hallo Leute,
Ich habe einen Timer in meiner Application der eine angegebene Zeit(Zeiteingabe.Text) vom User zurueck zaehlt.
Delphi-Quellcode:
Das Menuitem wird bei einem Button.click deaktiviert damit keinen Misbrauch von dem Code im den Button
procedure TDemoForm.Timer6Timer(Sender: TObject);
var v : TDateTime; begin v := strtotime(Form2.Zeiteingabe.Text); //<-- Zeiteingabe in Minuten vom User. if restzeit = v - 60 then begin DemoForm.Mainmenu1.Items[0].items[1].Enabled:= true; //<-- Item wieder aktivieren. end; if Now >= FNextAction then begin DoAktion; CalcNextAction; end; UpdateProgressBar; end; procedure TDemoForm.DoAktion; begin mach irgendwas.. end; procedure TDemoForm.CalcNextAction; begin FStartTime := Now; FNextAction := FStartTime + StrToFloat(EdtTimeout.Text) * OneMinute; end; function TDemoForm.Restzeit: Double; begin Result := Now-FNextAction; end; function TDemoForm.RestzeitMinuten: Double; begin Result := Restzeit * 24.0 * 60.0; end; function TDemoForm.RestzeitSekunden: Double; begin Result := Restzeit * 24.0 * 60.0 * 60.0; end; procedure TDemoForm.UpdateProgressBar; begin ProgressBar1.Position := Trunc((now-FStartTime)/(FNextAction-Now)*ProgressBar1.Max); RestZeit.Caption := TimeToStr(Restzeit); end; gemacht werden kann. Jetzt moechte ich aber das das Menuitem wieder nach spriech 1 Minute aktiviert wird. Ich wollte das im Timercode realisieren, siehe obener Code, das klappt aber nicht so recht, kann mir jemand bitte weiterhelfen? Vielen Dank im voraus. MFG, Lucius. |
Re: Nach bestimmter Zeit Menuitem wieder aktivieren.
Hallo Lucius,
schmeiß den Timer weg. Wenn du eine download policy umsetzen möchtest, dann packe eine ActionList auf deine Form, pack deinen Code in eine Action und ordne diese Action deinem MenuItem zu. Nach dem Ausführen der Action wird mittels der private variable UnlockDownload ein timelock gesetzt. Die Action überprüft dann in der idle time ob das timelock noch existiert.
Delphi-Quellcode:
Grüße vom marabu
type
TDemoForm = class(TForm) ActionList: TActionList; DownloadAction: TAction; MainMenu: TMainMenu; miDownload: TMenuItem; procedure DownloadActionExecute(Sender: TObject); procedure DownloadActionUpdate(Sender: TObject); procedure FormCreate(Sender: TObject); private UnlockDownload: TDateTime; end; var DemoForm: TDemoForm; implementation {$R *.dfm} uses DateUtils; // OneMinute lives here procedure TDemoForm.DownloadActionExecute(Sender: TObject); begin // put your code here ... UnlockDownload := Now + OneMinute * 5; // 5 minutes timelock end; procedure TDemoForm.DownloadActionUpdate(Sender: TObject); begin with Sender as TAction do Enabled := Now > UnlockDownload; end; procedure TDemoForm.FormCreate(Sender: TObject); begin UnlockDownload := Now; end; |
Re: Nach bestimmter Zeit Menuitem wieder aktivieren.
Hi marabu, ansich ne klasse Loesung aber dabei muss ich meinen ganzen Code wieder anpassen und das ist schon einiges.
Gruss Lucius. |
Re: Nach bestimmter Zeit Menuitem wieder aktivieren.
So habs selber hingekriegt sowie ich das wollte aber marabu, deine Idee behalte ich im Hinterkopf.
Fuer die jenigen die es interessiert.
Delphi-Quellcode:
MFG Lucius.
procedure THaupt.Timer6Timer(Sender: TObject);
var v : TDateTime; begin v := StrToFloat(Form2.Zeiteingabe.Text) * OneMinute; v := v - (OneMinute * 5); //Anzahl minuten bis Update MenuItem wieder aktiv wird// if Restzeit.caption = timetostr(v) then begin Mainmenu1.Items[0].items[1].Enabled:= true; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 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