Einzelnen Beitrag anzeigen

tyb

Registriert seit: 11. Jun 2007
7 Beiträge
 
#9

Re: Popup-Window wie Code Complete

  Alt 12. Sep 2007, 23:30
Ich habe momentan folgendes:
Delphi-Quellcode:
type
  TPanelEx = class(TPanel)
  public
    constructor Create(AOwner: TComponent); override;
    procedure CreateParams(var Params: TCreateParams); override;
  end;

{ TPanelEx }

constructor TPanelEx.Create(AOwner: TComponent);
begin
  inherited;
  SetWindowLong(handle, GWL_EXSTYLE,GetWindowLong(handle, GWL_EXSTYLE) or WS_EX_NOACTIVATE);
  SetWindowPos(Handle, HWND_NOTOPMOST + WORD(true), 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
end;

procedure TPanelEx.CreateParams(var Params: TCreateParams);
begin
  inherited;
  with Params do
  begin
    Style := WS_POPUP or WS_BORDER;
    WindowClass.Style := WindowClass.Style or CS_SAVEBITS;
    if NewStyleControls then
      ExStyle := WS_EX_TOOLWINDOW;
    if NewStyleControls then ExStyle := WS_EX_TOOLWINDOW;
    AddBiDiModeExStyle(ExStyle);
    ParentWindow := GetDesktopWindow;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Panel: TPanelEx;
begin
  Panel := TPanelEx.Create(nil);
  ShowWindow(Panel.Handle, SW_SHOW);
end;
Dieses PanelEx stiehlt den Fokus von anderen Fenstern von anderen Programmen nicht (wie gewünscht). Jedoch stiehlt es den Fokus vom MainForm. Das darf natürlich auch nicht sein. Es funktioniert also überall, ausser beim MainForm. Hat jemand eine Ahnung an was das liegen könnte?

Danke
  Mit Zitat antworten Zitat