Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Efecto de sombra en los controles de un form (https://www.clubdelphi.com/foros/showthread.php?t=80438)

Neftali [Germán.Estévez] 08-06-2006 16:45:52

Efecto de sombra en los controles de un form
 
Se trata de crear una sombra a todos los componentes colocados en un form. Más como curiosidad y didáctico que como utilidad; En fin, curioso.

El código:

Código Delphi [-]
procedure TForm1.FormPaint(Sender: TObject);
 var
   i: Integer;

   procedure MakeShadow(control: TControl; Width: Integer; Color: TColor);
   var
     rect: TRect;
     old: TColor;
   begin
     // Bordes del control
     // Borders of controls
     rect := control.boundsrect;
     rect.Left := rect.Left + width;
     rect.Top := rect.Top + width;
     rect.Right := rect.Right + width;
     rect.Bottom := rect.Bottom + width;
     // Guardar el color
     // Save the old color
     old := Self.canvas.brush.color;
     // Pintar la sombra
     // Paint the shadow
     Self.canvas.brush.Color := color;
     Self.canvas.fillrect(rect);
     Self.canvas.brush.Color := old;
   end;

 begin

   // Revisar todos los componentes del form
   // Go trough all form components
   for i:=0 to Self.ControlCount-1 do
    if self.Controls[i].Visible then
     MakeShadow(Self.Controls[i],2,clGray);

 end;

Utilización: Simplemente pon esto en el evento OnPaint de tu formulario.
Posible mejora: Crear un componente que se encargue de ésta tarea (a partir del Owner -TForm-).


La franja horaria es GMT +2. Ahora son las 15:58:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi