Okno formularza zawsze na wierzchu.

Okno formularza zawsze na wierzchu.
  • Rejestracja: dni
  • Ostatnio: dni
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ł?

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

Tworze projekt.

Na forme wrzucam button i pod onClick wklejam:

Kopiuj
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:

Kopiuj
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.

Misiekd
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7923
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

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.