Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Doppelclick bei Actions verhindern (https://www.delphipraxis.net/186804-doppelclick-bei-actions-verhindern.html)

Zoot 5. Okt 2015 10:16

AW: Doppelclick bei Actions verhindern
 
Zitat:

Zitat von Thomas Feichtner (Beitrag 1317686)
Ich habe im Hauptformular von DevExpress die TdxNavBar.
Bei den einzelnen Items hängt überall eine Action dahiner.
Nun möchte ich einen Doppelclick des Anwenders verhindern.

Erklär doch bitte mal den wirklichen Sinn.
Warum benutzt du eine Navbar, die man dann aber nicht anklicken darf?
Bzw. warum sind dort Actions hinterlegt, die dann aber nicht ausgeführt werden dürfen?

baumina 5. Okt 2015 10:23

AW: Doppelclick bei Actions verhindern
 
Wenn ich das richtig verstanden habe, soll die Aktion beim einfachen Klick ausgeführt werden. Danach ist das Element in der Navbar aktiv. Also musst du nur in der Aktion prüfen, ob das Element in der Navbar aktiv ist oder nicht und dementsprechend die Aktion ausführen oder nicht.

Thomas Feichtner 8. Okt 2015 08:07

AW: Doppelclick bei Actions verhindern
 
Hallo,

baumina hat es schon richtig verstanden.

Ich könnte für jede Action folgenden Code schreiben (siehe unten). Somit kann ich verhindern, dass durch schnelles mehrfaches clicken (Button, NavBar,...) die Action mehrfach aufgerufen wird, wenn das "Mach was" sehr lange dauert.


Es wäre einfach schön, wenn ich das nicht für jede Action das programmiern muss.

Delphi-Quellcode:
procedure TForm1.Action1Execute(Sender: TObject);
begin
  Action1.Enabled := False;
  ... -> Mach was
  Action1.Enabled := True;
end;

procedure TForm1.Action2Execute(Sender: TObject);
begin
  Action2.Enabled := False;
  ... -> Mach was
  Action2.Enabled := True;
end;

nahpets 8. Okt 2015 08:58

AW: Doppelclick bei Actions verhindern
 
Momentan rate ich mal ein bisserl.

Ginge dashier nicht?
Delphi-Quellcode:
procedure TmyActionList.OnActionExecute(Sender: TObject);
begin
  if Assigned(FOnExecuteAction) then begin
    if Sender is TAction then TAction(Sender).Enabled := False;
    FOnExecuteAction(Self);
    if Sender is TAction then TAction(Sender).Enabled := True;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr.
Seite 2 von 2     12   

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