Hallo,
ich habe ein Formular, welches mit folgenden Parametern erstellt wird:
Delphi-Quellcode:
procedure TfrmMessage.CreateParams(var Params: TCreateParams);
const
CS_DROPSHADOW = $00020000;
begin
inherited CreateParams(Params);
// Check if Windows XP or higher is present for drop shadow feature
if ((Win32Platform = VER_PLATFORM_WIN32_NT) and
(Win32MajorVersion >= 5) and (Win32MinorVersion >= 1)) then
Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
Params.Style := (Params.Style and not WS_CAPTION) or WS_POPUP;
Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW
or WS_EX_NOACTIVATE or
WS_EX_TOPMOST
;
Params.WndParent := GetDesktopWindow;
end;
Und folgendermaßen gezeichnet wird:
Delphi-Quellcode:
{ Ecken abrunden }
DeleteObject(HRgn);
HRgn := CreateRoundRectRgn(0, 0, frmMessage.Width, frmMessage.Height, 5, 5);
SetWindowRgn(frmMessage.Handle, HRgn, True);
{ Farbverlauf im Hintergrund }
DrawGradient(frmMessage.Canvas, frmMessage.ClientRect, false, [Settings.BgColorFrom, Settings.BgColorTo]);
{ Fensterrahmen }
frmMessage.canvas.Brush.Style := bsClear;
frmMessage.canvas.Pen.Color := clGray;
frmMessage.canvas.RoundRect(0, 0, frmMessage.ClientWidth - 1, frmMessage.ClientHeight - 1, 5, 5);
Nun nutze ich auf dem Formular die TPopupActionBar als Popup-Menü, welches mithilfe der Prozedur "PopUp()" aufgerufen wird.
Das Problem ist nun, dass das Context-Menü IMMER hinter dem Formular erscheint und nicht über dem Formular, sodass man es nicht nutzen kann.
Das merkwürdige ist, dass es mit TPopUpMenu ohne Problem funktioniert. Ich habe außerdem folgendes merkwürdiges Phänomen beobachtet: Wenn ich ca. 10-20 Mal versuche das Context-Menü zu öffnen, funktioniert es auf einmal, dass es im Vordergrund erscheint. Danach klappt es solange, bis ich dieses Formular schließe und wieder neu öffne.
Wie kann ich nun das Context-Menü in den Vordergrund bekommen?
Gruß
Sascha