El efecto de barrido o parpadeo ocurre porque, en Windows, los controles necesitan ser "repintados" cada dos por tres debido a ciertas acciones (una ventana es arrastrada o una ventana tapa a otra, etc.).
La mejor solución es la que te dio
Lepe si lo quieres hacer por código, si no es mejor definir las columnas por diseño.
Hacer la función es fácil, podrías, por ejemplo, añadir un método al formulario que contiene el DBGrid para que actualice las columnas:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
...
procedure Button1Click(Sender: TObject);
private
procedure ActualizarGrid; end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ActualizarGrid;
begin
with DBGrid1 do
begin
DataSource:= ds1;
Options:=[dgRowSelect,dgTitles,dgConfirmDelete,dgCancelOnExit];
Ctl3D:= False;
FixedColor:= clYellow;
Color:=clBlack;
TitleFont.Name:= 'Arial';
TitleFont.Size:= 10;
TitleFont.Style:=[fsBold];
Columns[0].Width:=100; Columns[1].Width:=140; Columns[2].Width:=200; Columns[3].Width:=80;
Font.Name:= 'Tahoma'; Font.Color:= clYellow;
Columns[0].Font.Name:= 'Webdings';
Columns[0].Font.Size:= 30;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
...
ActualizarGrid; end;
end.