Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   XE3, Themes, Button bleibt markiert (https://www.delphipraxis.net/173884-xe3-themes-button-bleibt-markiert.html)

4dk2 22. Mär 2013 08:29

XE3, Themes, Button bleibt markiert
 
Moin Leute,

Es gibt bei XE3 ja die einfache Möglichkeit Themes zu benutzen.
(Projekt Optionen -> Anwendung -> Erscheinungsbild -> Benutzerdefinierte Stile...)

Wenn ich nun einen von den Emba Stielen benutze und einfach mal 2-3 Buttons drauf klatsche.
Jetzt noch bei Button1:

Delphi-Quellcode:
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled:=false;
  sleep(100);
  Button1.Enabled:=true;
end;
hinzufügen.

Wenn man dann zur Laufzeit auf den Button1 klickt. Wird der ja farblich markiert.
Klickt man dann auf Button2, wird Button2 farblich markiert und BLEIBT Button1 aber auch markiert!

Wenn man keinen Benutzerdefinierten Stil benutzt verhält sich das ganze normal.
Lasse ich das Enabled:=false /enabled:=true weg, verhält sich der Stil auch normal

Update/Repaint usw, nach dem enabled true habe ich schon probiert ohne Erfolg
Hat jemand schon ne Lösung / workaround für das Problem ?

uligerhardt 22. Mär 2013 08:40

AW: XE3, Themes, Button bleibt markiert
 
Schuss ins Blaue: Passiert das auch, wenn du nicht in Button1Click Button1 manipulierst? Vielleicht kommt da was durcheinander, wenn man während der Ereignisbehandlung an den Innereien rumfuhrwerkt. :mrgreen:

4dk2 22. Mär 2013 09:01

AW: XE3, Themes, Button bleibt markiert
 
Nö dann gehts normal, hab ich aber auch unverständlich geschrieben :D

Liegt am Enabled true, false

Klar ich kann auch
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Button1.Tag=1 then exit;
  Button1.Tag:=1;
  Sleep(100);//hier das, was button1 tuen soll
  Button1.Tag:=0;
end;
machen um eine erneute Ausführung von Button1 zu verhindern, aber wenn man den deaktiviert, weiss der User "button1 kann ich nicht anklicken"

uligerhardt 22. Mär 2013 09:23

AW: XE3, Themes, Button bleibt markiert
 
Vielleicht kannst du eine Verzögerung einbauen, um das Problem zu umgehen: Schick in Button1Click nur eine benutzerdefinierte Message per PostMessage los und mach die eigentliche Arbeit im Messagehandler.

4dk2 25. Mär 2013 07:12

AW: XE3, Themes, Button bleibt markiert
 
Also die Lösung für die, die es interessiert oder das selbe Problem haben, ist:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled:=false;
  sleep(100);
  Button1.Enabled:=true;
  Button1.SetFocus;
end;


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