![]() |
[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? |
Re: MainMenu reagiert nichtmehr
Zitat:
zu öffnen. |
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? |
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? |
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 |
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:
Hier passiert genau das gleiche.
procedure TForm1.TimerTimer(Sender : TObject);
begin if Now > FOpenTime then with TForm2.Create(Application) do begin try ShowModal; finally Free; end; end; end; 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. |
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:
|
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: |
Re: [BUG?] MainMenu reagiert nichtmehr
der freak bist wohl du, denk mal drüber nach :roll:
|
Re: [BUG?] MainMenu reagiert nichtmehr
*denk*
nö :mrgreen: ich bin nur Praktikannt der (noch)nix weis |
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
![]() |
Re: [BUG?] MainMenu reagiert nichtmehr
Nimm mal Show statt showmodal, dann sollte das funktionieren ! :idea:
|
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. |
Re: [BUG?] MainMenu reagiert nichtmehr
Zitat:
|
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 ! |
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:
Und es funktioniert nicht.
with TtfWV.Create(Application) do
begin try screen.Cursor:=crDefault; Show; while Visible do Application.ProcessMessages; finally Free; end; end |
Re: [BUG?] MainMenu reagiert nichtmehr
Da ist ja auch noch das Free drin !
|
Re: [BUG?] MainMenu reagiert nichtmehr
Delphi-Quellcode:
So ein gewurschtel hab ich ja noch nie gesehen :shock:
with TtfWV.Create(Application) do
begin try screen.Cursor:=crDefault; Show; while Visible do Application.ProcessMessages; finally Free; end; end Erklär uns doch bitte, was du mit deinem Code bezwecken willst? |
Re: [BUG?] MainMenu reagiert nichtmehr
Leutz!
Delphi-Quellcode:
Jemand was dagegen? :mrgreen:
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; 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? |
Re: [BUG?] MainMenu reagiert nichtmehr
Problem "behoben" bzw. vielmehr umgangen:
Im Entwicklerforum hatte ich Erfolg und bekam folgenden Lösungsvorschlag:
Delphi-Quellcode:
Das ganze eben in den Thread und es funzt perfekt
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; :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