Okno formularza zawsze na wierzchu.

0

Cześć.

Mam problem z ustawieniem okna formularza "zawsze na wierzchu" dla wszystkich aplikacji otwartych na pulpicie.
Udało mi się ustawić okno "na wierzchu" dla aplikacji, z której jest wywoływany formularz ale i tak potrafi go zasłonić każda inna aplikacja.

Czy ktoś ma jakiś pomysł?

0

Spodziewałem się odesłania mnie do wyszukiwarki.

I możesz nie wierzyć ale zanim zadałem tu pytanie zajrzałem najpierw pod hasła z google.

0

Tworze projekt.

Na forme wrzucam button i pod onClick wklejam:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetWindowPos(Form1.Handle, HWND_TOPMOST, Left, Top, Width, Height, 0);
end;

Kod działa. Formy nie da się zakryć żadnym innym oknem.

Więc dodaje do projektu 2 formę i kładę na niej przycisk.

i dodaje do niego kod:

procedure TForm2.Button1Click(Sender: TObject);
begin
  SetWindowPos(Form2.Handle, HWND_TOPMOST, Left, Top, Width, Height, 0);
end;

Jeśli odpalę teraz aplikacje i pokaże 2 formularz (form2.Show) i kliknę w przycisk to formularz staje się "ontop" tylko dla aplikacji. Innego okna przysłaniają ten formularz.

0

jeśli okno nie jest oknem głównym aplikacji (czego OCZYWIŚCIE zapomniałeś napisać) to musisz mu ustawić WndParent na desktop, np. tak

  public
    procedure CreateParams(var Params: TCreateParams); override;
  end;

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WndParent := GetDesktopWindow;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1