//--------------------------------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
.....
.....
DBGrid1: TDBGrid;
Procedure AutoSizeColDBGrid(DBGrid:TDBGrid); // <---- Déclaration de La procédure ici
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//TForm1.AutoSizeColDBGrid(DBGrid:TDBGrid); pour qu'on puisse appeler cette procédure depuis d'autres unités du projet
Procedure TForm1.AutoSizeColDBGrid(DBGrid:TDBGrid);
var i, ColWidth, ColTextWidth:integer;
begin
if DBGrid.DataSource.DataSet.Active then
begin
DBGrid.DataSource.DataSet.DisableControls;
for i:= 0 to DBGrid.Columns.Count-1 do
begin
ColWidth:=DBGrid.Canvas.TextWidth(DBGrid.Columns[i].Field.DisplayLabel);
DBGrid.DataSource.DataSet.First;
while not DBGrid.DataSource.DataSet.EOF do
begin
ColTextWidth:=DBGrid.Canvas.TextWidth(DBGrid.Columns[i].Field.DisplayText);
if (ColTextWidth>ColWidth) then
begin
ColWidth:=ColTextWidth;
end;
DBGrid.DataSource.DataSet.Next;
end;{while}
DBGrid.Columns[i].Width:=ColWidth+30;
end;{for}
DBGrid.DataSource.DataSet.EnableControls;
DBGrid.DataSource.DataSet.First;
end;
end;
//-----------------------------------------------------------------------------------------
On doit appeler la procédure
[Procedure AutoSizeColDBGrid(DBGrid:TDBGrid);] après chaque ajout d’un nouvel enregistrement, modification d’un enregistrement, suppression d’un enregistrement, filtrage des données pour l’affichage des enregistrements spécifiques , ou d’exécution des requêtes SQL qui permettent de faire les recherches sur les données de la base de données, Exemples:
//Appeler cette procédure depuis l'unité en cours unit1 {Form1} après l'ajout ou la modification d'un enregistrement
procedure TForm1.ADOTable1AfterPost(DataSet: TDataSet);
begin
AutoSizeColDBGrid(DBGrid1);
end;
//Appeler cette procédure qui se trouve dans unit1 {Form1} depuis une autre unité du projet après la suppression d'un enregistrement
procedure TForm2.ADOTable2AfterDelete(DataSet: TDataSet);
begin
Form1.AutoSizeColDBGrid(DBGrid1);
end;

Aucun commentaire:
Enregistrer un commentaire