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 Probleme mit TMainMenu (https://www.delphipraxis.net/110877-probleme-mit-tmainmenu.html)

DelphiManiac 26. Mär 2008 09:56


Probleme mit TMainMenu
 
Hallo,

ich habe ein Problem mit meinem TMainMenu:

Wobei das Problem wohl nicht am MainMenu liegt sondern an meinem Timer im Hintergrund, aber der wirkt sich
total blöd auf mein Menü aus.

Also im Hintergrund läuft ein Timer, der alle 50 ms eine Liste von Prozeduren abarbeitet, so nun ist es so,
dass wenn diese Liste abgearbeitet wird, das ein Klick auf einen Menüpunkt nicht immer ausgeführt wird. Das Menüklappt auf
der Menüpunkt wird angeklickt, aber nichts passiert, manchmal erst bei 2,3,4,5 mal... Nutze ich einen Button, so gibt es da keine Probleme, vielleicht kann mir da ja jemand ein Workaround zeigen, auf meine Timerprozedur würde ich nur ungern in einen Thread auslagern...


Danke euch!

STS301 26. Mär 2008 09:58

Re: Probleme mit TMainMenu
 
stelle die refreshzeit vom Timer höher

Kroko1999 26. Mär 2008 10:00

Re: Probleme mit TMainMenu
 
Ich kenne ja deine Rechnerkonfiguration und Deine Timer-Proc nicht, aber alle 50 ms eine Liste von Proc, die wahrscheinlich länger dauern als 50 ms(?), wann bitte soll die Application arbeiten. Rufst Du in der Timer-Proc wenigsten mal Application.ProcessMessage auf?

RavenIV 26. Mär 2008 10:02

Re: Probleme mit TMainMenu
 
Versuch mal, in der Timerprozedur mindestens einmal Application.ProcessMessages aufzurufen.
Vielleicht auch an mehreren Stellen.

StInkeSchuh 26. Mär 2008 10:03

Re: Probleme mit TMainMenu
 
Ich nutze in meinen Progs oft Timer, und habe das auch bemerkt, ist die Refresh-Zeit zu niedrig und die Anweisungen zu viel, läuft das Programm nicht richtig.

Wie gesagt: Refresh-Wert höher einstellen

DelphiManiac 26. Mär 2008 10:07

Re: Probleme mit TMainMenu
 
Ja gut, wenn ich meine Timerprozedur auf 200 ms stelle, dann passiert es natürlich nicht mehr so oft,
aber, (meine Timerprozedur dauert ungefähr 20-25 ms) wenn ich genau dann auf das MenuItem klicke wenn meine Timerprozedur läuft,
dann wird die Prozedur nicht abgearbeitet. :?:
Wie gesagt, wenn ich einen Button mit einer normalen Button.Click Prozedur nehme, dann wird diese immer ausgelöst. Hängt das mit der Verarbeitung des Menüs zusammen?

RavenIV 26. Mär 2008 10:17

Re: Probleme mit TMainMenu
 
Zitat:

Zitat von DelphiManiac
Ja gut, wenn ich meine Timerprozedur auf 200 ms stelle, dann passiert es natürlich nicht mehr so oft,
aber, (meine Timerprozedur dauert ungefähr 20-25 ms) wenn ich genau dann auf das MenuItem klicke wenn meine Timerprozedur läuft,
dann wird die Prozedur nicht abgearbeitet. :?:
Wie gesagt, wenn ich einen Button mit einer normalen Button.Click Prozedur nehme, dann wird diese immer ausgelöst. Hängt das mit der Verarbeitung des Menüs zusammen?

Das hängt damit zusammen, dass die Nachrichtenwarteschleife von Windows nur abgearbeitet wird, wenn
a) das Programm nichts anderes macht
b) explizit Application.ProcessMessages aufgerufen wird

Bis ein Menuitem angeklickt wird, werden mehrere Windows-Nachrichten erzeugt.
1) Klick auf Mainmenu
2) Klick auf Untermenu
3) Klick auf Menuitem

Somit ist die Nachrichtenwarteschleife mit einigen Einträgen gefüllt, die auch abgearbeitet werden müssen.
Dies macht Application.ProcessMessages.

DelphiManiac 26. Mär 2008 10:24

Re: Probleme mit TMainMenu
 
Hi RavenIV,

ja das Menü klaptt immer beim 1. Klick auf, aber wiegesagt der Klick auf das Menüitem wird manchmal gar nicht erkannt, und demnzufolge auch nicht abgearbeitet :-(

DelphiManiac 26. Mär 2008 10:25

Re: Probleme mit TMainMenu
 
Achso, ich habe auch noch einen Shortcut STRG+ W,

der geht immer, liegt das an der Priorisierung der Windowsnachrichten bzw, weil der ShortCut Asynchron eintrifft?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz