PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MDI-Programm mit Child-Menü



Arno Jugel
03.01.2000, 16:33
Wer kann mir helfen?

Folgendes Verhalten tritt mit Delphi 5 auf einem NICHT WinNT (also Win9x) auf.

Um das Problem nach zu vollziehen nehme man das Delphi-MDI-Projekt (Projekt neu). Kleine Änderung: Dem MDI ein TMainMenu in dem sich min. ein Menü mit einem GroupIndex > 0 befindet zufügen. Dieses Menü klinkt sich zur laufzeit in das Menü des Hauptfroms ein.

Auswirkung:<br>
Läßt man das Prog. auf einem 9x System laufen, maximiert min. 2 MDIChilds und wechselt mehrfach zwischen diesen, dann sind die BorderIcons nicht mehr vohanden. Es kommt zu darstellungsfehlern, wenn das ChildSystemIcon sichtbar wird und beim Anklicken doch ein Menüpunkt auf geht. Man kann die Child nicht mehr mit den BorderIcons bedienen.

Das ist sehr unschön, gibt es dafür eine Lösung?

Arno Jugel

ake
21.06.2001, 19:11
hallo,<br>
<br>
das gleiche problem hatte ich auch immer wieder, so dass ichs dann<br>
unter 98 völlig gelassen habe.<br>
leider kann ich dir keine lösung nennen, wäre selber daran inter-
<br>
essiert. unter win2000 gibt es dagegen keinerlei probleme.<br>
<br>
mfg
andi

Mm
21.08.2001, 12:37
<b>Hi, ich musste leider eine lösung finden:</b>

Die VCL menus.pas muss abgeändert werden:

Zeile 2978:<br>
procedure TMainMenu.MenuChanged(Sender: TObject; Source: TMenuItem; Rebuild: Boolean);<br>
var<br>
NeedUpdate: Boolean;<br>
begin<br>
if (FWindowHandle <> 0) then<br>
begin<br>
NeedUpdate := UpdateImage; // check for changes before CM_MENUCHANGED does <br>
if Source = nil then SendMessage(FWindowHandle, CM_MENUCHANGED, 0, 0);<br>
if NeedUpdate Or (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) then // 21.08.2001 - Mm<br>
DrawMenuBar(FWindowHandle);<br>
end;<br>
inherited MenuChanged(Sender, Source, Rebuild);<br>
end;<br>

Gruss<br>
M