AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Nach bestimmter Zeit Menuitem wieder aktivieren.(Fertig)
Thema durchsuchen
Ansicht
Themen-Optionen

Nach bestimmter Zeit Menuitem wieder aktivieren.(Fertig)

Ein Thema von lucius · begonnen am 6. Dez 2005 · letzter Beitrag vom 6. Dez 2005
Antwort Antwort
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#1

Nach bestimmter Zeit Menuitem wieder aktivieren.(Fertig)

  Alt 6. Dez 2005, 11:35
Hallo Leute,

Ich habe einen Timer in meiner Application der eine angegebene Zeit(Zeiteingabe.Text) vom User zurueck zaehlt.
Delphi-Quellcode:
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;
Das Menuitem wird bei einem Button.click deaktiviert damit keinen Misbrauch von dem Code im den Button
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Nach bestimmter Zeit Menuitem wieder aktivieren.

  Alt 6. Dez 2005, 12:18
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:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Nach bestimmter Zeit Menuitem wieder aktivieren.

  Alt 6. Dez 2005, 12:39
Hi marabu, ansich ne klasse Loesung aber dabei muss ich meinen ganzen Code wieder anpassen und das ist schon einiges.

Gruss Lucius.
  Mit Zitat antworten Zitat
lucius

Registriert seit: 6. Okt 2005
Ort: Niederlande
215 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Nach bestimmter Zeit Menuitem wieder aktivieren.

  Alt 6. Dez 2005, 14:02
So habs selber hingekriegt sowie ich das wollte aber marabu, deine Idee behalte ich im Hinterkopf.
Fuer die jenigen die es interessiert.
Delphi-Quellcode:
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;
MFG Lucius.
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz