Einzelnen Beitrag anzeigen

Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#1

TPopUpActionBar immer vom Formular verdeckt

  Alt 24. Jul 2006, 09:48
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
Sascha
  Mit Zitat antworten Zitat