Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Button nach einer bestimmten Zeit deaktivieren (https://www.delphipraxis.net/188203-button-nach-einer-bestimmten-zeit-deaktivieren.html)

Kruppi 9. Feb 2016 12:17

Button nach einer bestimmten Zeit deaktivieren
 
Hallo

ich hab folgende frage


ich habe eine Anwendung. auf der anwendung ist ein button drauf. wie genau stelle ich es an dass z.b am 10.02.2016 der button deaktiviert wird?
habt ihr vllt schon etwas in der art gemacht oder gibt es tutorials dafür?

Danke im Voraus

Sir Rufo 9. Feb 2016 12:42

AW: Button nach einer bestimmten Zeit deaktivieren
 
Mit dem Delphi-Referenz durchsuchenTActionManager eine Delphi-Referenz durchsuchenTAction erstellen und im Delphi-Referenz durchsuchenTAction.OnUpdate einfach Delphi-Referenz durchsuchenTAction.Enabled setzen, so wie es gerade sein soll.

Dem Button weist man dann einfach diese Action zu über Delphi-Referenz durchsuchenTButton.Action.

Wenn die Action einem sichtbaren Control zugewiesen ist, dann wird jedesmal, wenn die Anwendung in den Idle-Status geht diese
Delphi-Quellcode:
OnUpdate
Methode ausgeführt.

Darlo 9. Feb 2016 13:36

AW: Button nach einer bestimmten Zeit deaktivieren
 
Zum Beispiel im FormCreate auf Datum prüfen und ggf. Button deaktivieren.

Delphi-Quellcode:
if (now >= (strtodate('10.02.2016')) then
  begin
    showmessage('Funktion wurde deaktiviert weil...');
    myButton.enabled := false;
  end;

Kruppi 10. Feb 2016 08:33

AW: Button nach einer bestimmten Zeit deaktivieren
 
Delphi-Quellcode:
procedure TForm5.FormShow(Sender: TObject);
begin
 if ( Datetimetostr(NOW) >ExpirationDate) then
 Begin
  Showmessage('Funktioniert nicht mehr');
  close;
 End;
end;
Danke ich hab es jetzt so gelöst

hab es auch etwas geändert dass also nicht ein button geschlossen wird sondern das ganze formular

Darlo 10. Feb 2016 09:14

AW: Button nach einer bestimmten Zeit deaktivieren
 
datetimetostr? Vergleichst Du da Strings mit >??

himitsu 10. Feb 2016 10:11

AW: Button nach einer bestimmten Zeit deaktivieren
 
Zitat:

Zitat von Darlo (Beitrag 1329931)
datetimetostr? Vergleichst Du da Strings mit >??

Einfach Windows auf eine andere Sprache einstellen und schon funktioniert es nicht mehr. :lol:

Sir Rufo 10. Feb 2016 11:35

AW: Button nach einer bestimmten Zeit deaktivieren
 
Zitat:

Zitat von himitsu (Beitrag 1329935)
Zitat:

Zitat von Darlo (Beitrag 1329931)
datetimetostr? Vergleichst Du da Strings mit >??

Einfach Windows auf eine andere Sprache einstellen und schon funktioniert es nicht mehr. :lol:

Die Sprache ist hier das geringste Problem.

Selbst wenn sich diese nicht ändert haben wir hier folgendes Verhalten:

Das Formular kann immer an dem 01. - 10. Tag eines beliebigen Monats geöffnet werden. An allen anderen Tagen eines beliebigen Monats wird es einfach geschlossen.

Also z.B. auch am 01.03.2016.
Dafür aber nicht am 11.01.2016

Ob das so gewünscht ist? :stupid:

hoika 10. Feb 2016 14:25

AW: Button nach einer bestimmten Zeit deaktivieren
 
Hallo,
ich würde hier knallhart die TDateTime mit > vergleichen.
Es wird ja nicht auf = abgefragt.

Was anderes, was habt ihr gegen Strings und Datumsvergleiche, wenn man es richtig macht,
also mit FormatDateTime('yyyy.mm.dd', TDateTime_Wert) ?

Heiko

Darlo 10. Feb 2016 14:31

AW: Button nach einer bestimmten Zeit deaktivieren
 
Zitat:

Zitat von hoika (Beitrag 1329955)
Was anderes, was habt ihr gegen Strings und Datumsvergleiche, wenn man es richtig macht,
also mit FormatDateTime('yyyy.mm.dd', TDateTime_Wert) ?
Heiko

Jedem gerne das Seine, aber um Datumswerte zu vergleichen diese in ein String formatieren und dann vergleichen halte ich für nicht optimal...

DeddyH 10. Feb 2016 14:36

AW: Button nach einer bestimmten Zeit deaktivieren
 
Wenn man Äpfelchen mit Birnchen vergleicht, ist das Ergebnis nicht immer das erwartete. Man muss also das Äpfelchen in ein Birnchen verwandeln oder andersherum, Hauptsache, sie sind am Ende beide vom selben Typ. Wenn man aber bereits 2 Äpfelchen hat, weshalb sollte man dann erst beide in Birnchen verwandeln, um sie zu vergleichen?

[edit] Hinzu kommt noch, dass es sich u.U. um eine ganz bestimmte Sorte Birnchen handeln muss, damit der Vergleich funktioniert. [/edit]

null33 10. Feb 2016 15:49

AW: Button nach einer bestimmten Zeit deaktivieren
 
Oder eventuell so?

Delphi-Quellcode:
begin
  Button.Enabled := (CompareDate(Date, StrToDate('10.02.2016')) = -1);
end;

himitsu 10. Feb 2016 16:27

AW: Button nach einer bestimmten Zeit deaktivieren
 
Zitat:

Zitat von null33 (Beitrag 1329961)
Oder eventuell so?

Englisches, russisches oder japanisches Windows?
Delphi-Referenz durchsuchenStrToDate -> FormatSettings
oder Delphi-Referenz durchsuchenEncodeDate

Und jeder weiß natürlich was -1 heißt.
Delphi-Referenz durchsuchenCompareDate -> LessThanValue :stupid:

hoika 10. Feb 2016 16:52

AW: Button nach einer bestimmten Zeit deaktivieren
 
Hallo Darlo,
deshalb ja auch der direkte TDateTime-Vergleich.

Ich wollte den Thread-Ersteller auch zeigen, dass er das Datumsformat selber wählen kann
und nicht auf die Einstellungen von Windows setzen muss.


Heiko

null33 11. Feb 2016 13:44

AW: Button nach einer bestimmten Zeit deaktivieren
 
Zitat:

Zitat von himitsu (Beitrag 1329964)
Englisches, russisches oder japanisches Windows?
Delphi-Referenz durchsuchenStrToDate -> FormatSettings
oder Delphi-Referenz durchsuchenEncodeDate

Und jeder weiß natürlich was -1 heißt.
Delphi-Referenz durchsuchenCompareDate -> LessThanValue :stupid:

Oops, da guckt man vorher noch nach und dann so was :-D

Dann besser so? :-D

Delphi-Quellcode:
var
  MaxDate: TDateTime;
begin
  MaxDate := 42410;
 
  Button.Enabled := (CompareDate(Date, MaxDate) = 1);
end;

DeddyH 11. Feb 2016 14:40

AW: Button nach einer bestimmten Zeit deaktivieren
 
Wie wäre es so?
Delphi-Quellcode:
var
  Expiration: TDateTime;
begin
  Expiration := EncodeDate(2016, 5, 1); //Letztes gültiges Datum 01.05.2016
  Button.Enabled := CompareDate(date, Expiration) <> GreaterThanValue;
end;
Du brauchst dafür DateUtils und System.Types.

p80286 11. Feb 2016 14:46

AW: Button nach einer bestimmten Zeit deaktivieren
 
Jetzt beinahe offtopic, man sollte wenn es nicht zu vermeiden ist, ein Datum immer im Format YYYY-MM-DD angeben. dann ist die Gefahr es zu missinterpretieren relativ gering, und ,kleiner Vorteil für die unverbesserlichen, man kann danach sortieren und vergleichen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 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