// Buttons können auf zwei Arten  mit einem simplen Schatten hinterlegt
// werden. Siehe dazu auch
Controls mit Schatten unterlegen


// Getestet mit RS 10.4 unter Win11
 
aussparen = True aussparen = False
 
uses System.UITypes; 
 
procedure Schatten(frm: TForm; cntrl: TControl; versatz: Integer; clr: TColor; 
  aussparen: boolean); 
const 
  rds = 6; 
var 
  lft, tp, rgt, bt: Integer; 
  merkb, merkp: TColor; 
begin 
  if (cntrl.Visible) then 
    with frm.Canvas do 
    begin 
      merkb := Brush.Color; 
      merkp := Pen.Color; 
      Brush.Color := clr; 
      Pen.Color := clr; 
      with cntrl.BoundsRect do 
      begin 
        lft := left; 
        tp := top; 
        rgt := right; 
        bt := bottom; 
      end; 
      RoundRect(lft + versatz, tp + versatz, rgt + versatz, bt + versatz, 
        rds, rds); 
      Brush.Color := merkb; 
      if aussparen then 
      begin 
        Pen.Color := merkb; 
        RoundRect(lft + versatz, tp + versatz, Pred(cntrl.BoundsRect.right), 
          Pred(cntrl.BoundsRect.bottom), rds, rds); 
      end; 
      Pen.Color := merkp; 
    end; 
end; 
 
procedure TForm1.FormPaint(Sender: TObject); 
var 
  i: Integer; 
  aussparen: boolean; 
begin 
  aussparen := True; 
  for i := 0 to ControlCount - 1 do 
    if Controls[i] is TButton then 
      Schatten(Self, Controls[i], 6, clBtnShadow, aussparen); 
end; 
Zugriffe seit 6.9.2001 auf Delphi-Ecke