Delphi-PRAXiS

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 [BUG?] MainMenu reagiert nichtmehr (https://www.delphipraxis.net/56728-%5Bbug-%5D-mainmenu-reagiert-nichtmehr.html)

Angel4585 10. Nov 2005 07:25


[BUG?] MainMenu reagiert nichtmehr
 
Hallo zusammen

Ich hab folgendes Problem:

Ich habe zwei Formulare, auf denen jeweils ein MainMenu ist(also insgesamt 2)

Das zweite Formular wird irgendwann aus einem Thread heraus geöffnet, dass funzt alles wunderbar.
Wenn ich jetzt allerdings in dem MainMenu des Haupformulars aktiv bin und sich währenddessen das zweite Formular öffnet, ist dessen MainMenu "inaktiv", bzw. wenn ich auf die MenuItems klicke passiert nichts, nichtmal das Dropdown in dem MainMenu funzt. :gruebel:

Weis jemand wie ich das beheben kann?

shmia 10. Nov 2005 09:45

Re: MainMenu reagiert nichtmehr
 
Zitat:

Zitat von Angel4585
Das zweite Formular wird irgendwann aus einem Thread heraus geöffnet, dass funzt alles wunderbar.

Das darf man nicht !! Du musst die Methode [TThread].Synchronize benützen um das 2. Formular
zu öffnen.

Angel4585 10. Nov 2005 09:56

Re: MainMenu reagiert nichtmehr
 
Mach ich doch

die Form wird über en ButtonClick auf der ersten Form geöffnet.

und ich mach

Synchronize(tfMain.Button.Click);

ich hab mittlerweile sogar schon das MainMenu auf der Hauptform "Destroyed" aber selbst dann funzt es nicht.

:wall:

EDIT:

Bisher habe ich folgendes gemacht :

Ich habe versucht :

Das MainMenu zu "Destroyen", freizugeben, mit SendMessage zu schliessen, Habe das gesamte Hauptformular Disabled, habe das Fenster über eine Prozedur in dem Thread aufgerufen anstatt über die Button.Click

alles erfolglos.

Hat Jemand einen Vorschlag was ich noch machen könnte?

Angel4585 10. Nov 2005 11:22

Re: MainMenu reagiert nichtmehr
 
So.. also mit dem Thread an sich hat es definitiv nichts zu tun.

Ein Kollege hat die zweite Form mit einem Timer aufgerufen und hat genau das gleiche Problem.

Hat niemand ne Lösung? :?: :cry:

EDIT: Bin ich hier eigentlich richtig mit dieser Frage oder gehört das zu API?

Angel4585 10. Nov 2005 14:11

Re: MainMenu reagiert nichtmehr
 
Zusätzliches Prob :

Wenn ich das HauptFenster per Maus verschiebe und sich währenddessen das zweite Fenster öffnet kann ich das zweite Fenster nicht mit der Maus verschieben.

Edit : Es funktioniert auch nicht wenn ich die erste Form "Disable", bzw. sie mit Hide verstecke, bevor ich die zweite aufrufe.

Übrigens wird die zweite Form erst in dem Button.Click erzeugt, falls das irgendjemand weiterhelfen sollte.

Delphi-Quellcode:
with TtfWV.Create(Application) do
  begin
   TimeThread.Suspend;
   try
    ShowModal;
   finally
    Free;
    end;
   TimeThread.Resume;
  end

Angel4585 11. Nov 2005 07:28

Re: [BUG?] MainMenu reagiert nichtmehr
 
Hier ein Beispielquellcode:

Also ich habe einen Thread:

Delphi-Quellcode:
TMyThread = class(TThread)
 private
  FOpenTime : TDateTime;
  procedure OpenForm2;
 protected
  procedure Execute;override;
 public
  constructor Create;
 end;
 
constructor TMyThread.Create;
begin
 inherited Create(False);
end;

 
procedure TMyThread.Execute;
begin
while not Terminated do
 begin
 sleep(10);
 if Now > FOpenTime then
  Synchronize(OpenForm2);
 end;
end;

 
procedure TMyThread.OpenForm2;
begin
with TForm2.Create(Application) do
 begin
 try
  ShowModal;
 finally
  Free;
  end;
 end;
end;


Ist nur ein Beispiel, kann jeder ausprobieren. Kann aber Fehler enthalten, da ich das nur schnell hingekritzelt habe.

Das Ganze bewirkt eine Erinnerungsfunktion.
Auf Form1 und auf Form2 sind jeweils MainMenus.
Wenn ich jetzt eben im MainMenu von Form1 aktiv bin und währenddessen durch den Thread meine Form2 aufgerufen wird, dann ist das MainMenu auf Form 2 inaktiv.

Allerdings hängt das nicht mit dem Thread zusammen!

Wenn ich auf Form1 einen Timer habe:

Delphi-Quellcode:
procedure TForm1.TimerTimer(Sender : TObject);
begin
if Now > FOpenTime then
 with TForm2.Create(Application) do
  begin
  try
   ShowModal;
  finally
   Free;
   end;
  end;
end;
Hier passiert genau das gleiche.

Ausserdem passiert sowas ähnliches:

Wenn ich Form1 verschiebe (Titelleiste mit Maus) und währenddessen die Form2 aufgerufen wird, dann kann ich Form2 nicht über die TitelLeiste verschieben.

Angel4585 14. Nov 2005 07:34

Re: [BUG?] MainMenu reagiert nichtmehr
 
WOW, ein ganze WE und kein Mensch da gewesen der ne Ahnung hat was da los ist, gd wie man es behebt. :wall:

Angel4585 15. Nov 2005 12:32

Re: [BUG?] MainMenu reagiert nichtmehr
 
*malbisanseinlebensendeeinSelbstgeprächführt*
Hab das jetzt schon in drei Foren gepostet aber bislang noch ohne Erfolg. Ich warte noch das da so ein Freak vorbeikommt und mir die Lösung hinknallt.

:bounce2: :bounce2: :bounce2: :bounce2: :bounce2: :bounce2: :bounce2: :bounce2: :bounce2: :bounce2: :bounce2:

bigg 15. Nov 2005 13:00

Re: [BUG?] MainMenu reagiert nichtmehr
 
der freak bist wohl du, denk mal drüber nach :roll:

Angel4585 15. Nov 2005 13:16

Re: [BUG?] MainMenu reagiert nichtmehr
 
*denk*

nö :mrgreen:
ich bin nur Praktikannt der (noch)nix weis

Matze 15. Nov 2005 13:23

Re: [BUG?] MainMenu reagiert nichtmehr
 
:shock: Schonmal den http://www.delphipraxis.net/template.../icon_edit.gif Edit-Button gesehen? Nutze ihn bitte und pushe nicht die ganze Zeit. Lies dir hierfür auch einmal den Verhaltenskodex durch.

chrisw 15. Nov 2005 13:40

Re: [BUG?] MainMenu reagiert nichtmehr
 
Nimm mal Show statt showmodal, dann sollte das funktionieren ! :idea:

Angel4585 15. Nov 2005 13:44

Re: [BUG?] MainMenu reagiert nichtmehr
 
@Matze: Wenn ich nach 5 Minuten oder nach einer Stunde was schreiben will dann mach ich für gewöhnlich ein Edit. Wenn es allerdings 6 oder mehr Stunden sind dann *pushe* ich schonmal weil ich ja auch eine Antwort will. wer schaut sich schon die Themen von vor 2 Tagen an.

@chrisw: Show Hab ich schon probiert, funktioniert aber auch nicht.

Sharky 15. Nov 2005 13:59

Re: [BUG?] MainMenu reagiert nichtmehr
 
Zitat:

Zitat von Angel4585
...Wenn es allerdings 6 oder mehr Stunden sind dann *pushe* ich schonmal weil ich ja auch eine Antwort will. wer schaut sich schon die Themen von vor 2 Tagen an. ...

In der Delphi-PRAXiS möchten wir nicht das ein Beitrag in weniger als 24 Stunden "gepuscht" wird. Wenn keiner Antwortet muss man halt damit leben.

chrisw 15. Nov 2005 14:01

Re: [BUG?] MainMenu reagiert nichtmehr
 
In Deinem Beispiel instanziert Du ein Object vom Typ TForm (with TForm2.Create(Application)..)
dann machst Du das ModaResult mit ShowModal auf 0. Jetzt destroyest Du das Form (finally Free;).
Das kann doch nicht funktionieren, oder ?

Ersetz mal das Showmodal durch Show und kommentiere das Free aus (//), dann funktioniert das auch !

Angel4585 15. Nov 2005 14:12

Re: [BUG?] MainMenu reagiert nichtmehr
 
Christian.

Glaub mir einfach das ich das schon ausprobiert habe. Gerade eben und vor ein paar Tagen schon. Es geht einfach nicht. Sonst hätte sich der Thread hier schonlange erledigt.
Alternative zu ShowModal:
Delphi-Quellcode:
 with TtfWV.Create(Application) do
  begin
   try
    screen.Cursor:=crDefault;
    Show;
    while Visible do
     Application.ProcessMessages;
   finally
    Free;
    end;
  end
Und es funktioniert nicht.

chrisw 15. Nov 2005 14:34

Re: [BUG?] MainMenu reagiert nichtmehr
 
Da ist ja auch noch das Free drin !

bigg 15. Nov 2005 14:56

Re: [BUG?] MainMenu reagiert nichtmehr
 
Delphi-Quellcode:
with TtfWV.Create(Application) do
  begin
   try
    screen.Cursor:=crDefault;
    Show;
    while Visible do
     Application.ProcessMessages;
   finally
    Free;
    end;
end
So ein gewurschtel hab ich ja noch nie gesehen :shock:
Erklär uns doch bitte, was du mit deinem Code bezwecken willst?

Angel4585 15. Nov 2005 15:12

Re: [BUG?] MainMenu reagiert nichtmehr
 
Leutz!

Delphi-Quellcode:
 with TtfWV.Create(Application) do //Formular wird erzeugt
  begin
   try
    Show;      //Formular wird angezeigt
    while Visible do //Warten bis Formular nichtmehr angezeigt wird
     Application.ProcessMessages;
   finally
    Free; //Formular freigeben
    end;
  end;
Jemand was dagegen? :mrgreen:

EDIT: Selbst wenn das free noch drin ist. Es hat mit ShowModal und Show nichts zu tun. Ich bin da schon alles durchgegangen.

EDIT2: Hat Jemand von euch das eigentlich mal ausprobiert?

Angel4585 16. Nov 2005 07:59

Re: [BUG?] MainMenu reagiert nichtmehr
 
Problem "behoben" bzw. vielmehr umgangen:

Im Entwicklerforum hatte ich Erfolg und bekam folgenden Lösungsvorschlag:

Delphi-Quellcode:
if (GetCapture <> 0) then
  begin
  EndMenu;
  Application.HandleMessage;
  ReleaseCapture;
  Application.HandleMessage;
  end
 else
  begin
  with TtfWV.Create(Application) do
   begin
   Self.Suspend;
   try
    screen.Cursor:=crDefault;
    ShowModal;
   finally
    Free;
    end;
   Self.Resume;
   end;
Das ganze eben in den Thread und es funzt perfekt

:mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

Es gibt eben doch noch Freaks :coder:


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