Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi form1.enabled:=false geht nicht (https://www.delphipraxis.net/2276-form1-enabled-%3Dfalse-geht-nicht.html)

Helmut 15. Jan 2003 17:32


form1.enabled:=false geht nicht
 
Hi,

während der computer rechnet (bei meinem spiel ein spielzug macht) soll bei mir eine form im vordergrund eingeblendet werden (form7). Währenddessen soll form1 (mainform) disabled werden (man kann kein knopf mehr drücken oder irgendetwas mit ihr machen.
Jetzt ruf ich die form7 auf:

form7.enabled:=true;
form7.visible:=true;
form1.enabled:=false;


und zusätzlich dazu noch ein form1.enabled:=false; in der onShow-prozedur der form7.
Ausserdem hab ich
SetWindowPos(Handle, HWND_TOPMOST, 0 , 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE); in form7 drin.

Aber es klappt nicht... die form 7 ist uwar im vordergrund, aber man kann noch alles mögliche bei der form1 machen. Ich hab schon alles durchgeschaut, ich find keinen fehler. Das verrückte ist ja, das ich noch eine form hab (auswertung) die auch aufgerufen wird, genau mit den gleichen befehlen und dort wird die form1 ordnungsgemäss disabled. Wenn man dann auf die form1 klickt kommt halt dieser warnton von windows. Ich hab alles ganau wie bei dieser form gemacht.

Bin ich verrückt?! :oops: :roll: :( :shock:

Ich stecke da jetzt richtig fest bei der sache..ich hab schon ne ganze weile probiert, aber ich komme keinen millimeter vorwärts :(

CalganX 15. Jan 2003 17:34

Ähm, mach doch Form7.ShowModal...

Chris

Daniel B 15. Jan 2003 17:34

Re: form1.enabled:=false geht nicht
 
Hallo Helmut,

Zitat:

Zitat von Helmut
Wenn man dann auf die form1 klickt kommt halt dieser warnton von windows. Ich hab alles ganau wie bei dieser form gemacht.

Das liegt warscheinlich! daran das Du das Formular Modal öffnest und DU somit keinen Zugriff auf die anderen Formulare hast, dann kommt dieser Ton.

Grüsse, Daniel :hi:

nailor 15. Jan 2003 17:35

Probiers mal mit ShowModal...

Chewie 15. Jan 2003 17:46

Zitat:

Zitat von Nailor
Probiers mal mit ShowModal...

Wenn ich mich nicht ganz irre, dann kann in diesem Fall Form1 keine Berechnungen mehr ausführen.

CalganX 15. Jan 2003 17:51

Stimmt, aber nur so lange halt das andere Formular nicht geschlossen wird.
Sonst musst du eben Show nehmen und enabled. Das hast du gemacht und Funktioniert nicht. Dann mach einen Schalter, ob Form7 aktiv ist und prüfe im OnActivate von Form1, ob es möglich ist, dass man Form1 anklickt.

Ist es das, was dz willst?

Chris

nailor 15. Jan 2003 17:54

Wenn es bei der einen Form geht, bei der anderen nicht, deutet das darauf hin, dass du Form1 im einen Fall aus Versehen zu früh wieder enablest.

Helmut 15. Jan 2003 18:16

also es kann sein das ich die eine form modal öffne... wenn dann aber unbewusst :? Ich glaube ihr meint diese mdi child oder so. Das ist aber nicht eingestellt. Bei der form die geht (also die im vordergrund ist und im hintergrund form 1 sichtbar aber nicht anklickbar) sind alle form-einstellungen genauso wie bei der form wos nicht klappt (hab jedes einzelne element verglichen :( . Auch der aufruf ist gleich.

Also was ich genau will:

Während der computer spielzüge auf form1 vollzieht (images werden verändert, labels gesetzt usw., also sollen die änderungen im hintergrund auch angezeigt werden) soll eine form im vordergrund darauf hinweisen das man warten soll bis der computer fertig ist.
Man soll nicht auf buttons klicken können die in form 1 sind. Wenn der computer ferzig ist wird die form vorne wieder invisible gemacht und man kann weiterspielen.

Ich möchte das so machen, weil ich viele bedingungen im spiel davon abhängig mache ob buttons enabled oder disabled sind. Deswegen kann ich nicht einfach alle elemente auf form1 auf disabled stellen.
Ausserdem soll der benutzer sehen können was der computer da macht (mit pausen zwischendurch).

nailor 15. Jan 2003 18:18

Irgendwann muss Form1 ja wieder enabled werden. Kuck dir mal an, wann die dazugehörige procedure aufgerufen wird.

Chewie 15. Jan 2003 18:22

In diesem Fall darfst du auf keinen Fall eine Form modal anzeigen, denn dann erhält die Form im Hintergrund keine Messages mehr. Also kein Verschieben von Grafiken.

Du musst eigentlich nix weiteres tun als die Hauptform zu disablen(Form1.Enabled := False), die andere Form mit Show (nicht ShowModal!!) anzeigen und zu warten, bis dann die Berechnungen fertig sind. Dann enablest du die Hauptform(Form1.Enabled := True) und schließt die andere Form(Form7.Close) (wichtig: in dieser Reihenfolge).


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Seite 1 von 3  1 23      

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