Twój problem polega na tym, że formularz jest odtwarzany z powodu zmiany stylu i utraty najlepszego stylu, ponieważ VCL nie ma o tym pojęcia. Albo zastosowanie:
FormStyle := fsStayOnTop;
lub nadpisać CreateWindowHandle
tak że SetWindowPos
nazywa każdym razem, gdy forma jest odtwarzany:
type
TForm1 = class(TForm)
..
protected
procedure CreateWindowHandle(const Params: TCreateParams); override;
..
procedure TForm1.CreateWindowHandle(const Params: TCreateParams);
begin
inherited;
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
end;
BTW, ja nie mógł powielać „rozbrajania/ponowne ustawienie nie napraw to ". W moich testach ponownie wywołałem SetWindowPos
.
Brzmi jak błąd. Powinieneś zgłosić to do [QC] (http://qc.embarcadero.com/). –
@MasonWheeler to nie jest błąd, tak właśnie działają style vcl, za każdym razem, gdy zmieniasz styl vcl, odtwarzanie formularzy jest odtwarzane. – RRUZ
@RRUZ: W oparciu o oryginalny opis OP, ponowne ustawienie atrybutu nie działało z włączonymi stylami, co z pewnością byłoby błędem, gdyby było prawdziwe. (Zobacz komentarz OP do odpowiedzi Sertaca dla lepszego wyjaśnienia, co się naprawdę dzieje.) –