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 TPopUpActionBar immer vom Formular verdeckt (https://www.delphipraxis.net/73801-tpopupactionbar-immer-vom-formular-verdeckt.html)

Sascha L 24. Jul 2006 09:48


TPopUpActionBar immer vom Formular verdeckt
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz