Ich hab es jetzt geschafft. Ich poste mal den ganzen dazugehörigen Code:
Delphi-Quellcode:
procedure TFormMain.ShowDarkLayer;
(*Create a new form that covers all components (except the status bar). Set black background but transparent*)
var
Buffer: Integer; //Pseudo variable since the parameter list of "FormConstrainedResize" requires a variable
begin
FormLayer := TForm.Create(FormMain);
FormLayer.Name := 'FormLayer';
FormLayer.BorderStyle := bsNone;
FormLayer.AlphaBlend := True;
FormLayer.AlphaBlendValue := 100;
FormLayer.Color := clBlack;
FormLayer.BringToFront;
FormLayer.Cursor := crNo;
FormLayer.Show;
FormLayer.Hint := 'This form is closed since no connection is established';
FormLayer.ShowHint := True;
Application.HintPause := 0;
FormConstrainedResize(Self, Buffer, Buffer, Buffer, Buffer);
end;
procedure TFormMain.FormConstrainedResize(Sender: TObject; var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer);
(*This procedure is necessary if the dark layer is available and the form is resized or moved!*)
begin
if FormLayer <> nil then begin
FormLayer.Left := Left + 7;
FormLayer.Top := Top + 28;
FormLayer.Width := ClientWidth+2;
FormLayer.Height := ClientHeight + 5
end
end;
Die einzige noch bestehende "Schwachstelle": Wenn man unter Windows 7 mit dem Fenster wackelt, sodass sich alle vorher auf diese Weise minimierten Fenster wieder einblenden, bleibt die schwarze "Folie" über der Form in paar Pixel weiter weg. Aber damit kann ich leben. Bewegt oder verändern man die Größe ist alles wieder korrekt