jeudi 18 juillet 2019
Delphi: Procédure Supprimer les lignes vides et les blancs du debut et de fin de chaque ligne d'un Memo
Cette procédure permet de supprimer les lignes vides et les blancs du début et de fin de chaque ligne d'un Memo.
Lien de téléchargement de l'exemple d'une application delphi: Télécharger
Lien de Téléchargement de l'exécutable: Télécharger
//-----------------------------------------------------------------------
procedure suppr_lignevide_esp(Memo:TMemo);
var StringList:TStringList;
i:integer;
begin
StringList:=TStringList.Create;
StringList.AddStrings(Memo.Lines); //Copier les lignes du Memo1 dans StringList
try
for i:=StringList.Count-1 downto 0 do
begin
StringList[i]:=Trim(StringList[i]);
if Trim(StringList[i])='' then
begin
StringList.Delete(i);
end;
Application.ProcessMessages;
end;
Memo.Lines.BeginUpdate;
Memo.Lines.Assign(StringList);
Memo.Lines.EndUpdate;
finally
StringList.Free;
end;
end;
//----------------------------------------------------------------------
//Utilisation de la procédure
procedure TForm1.Button1Click(Sender: TObject);
begin
suppr_lignevide_esp(Memo1);
end;
Delphi: Ajuster la largeur des colonnes du composant DBGrid au contenu
Cette procédure permet d'ajuster la largeur des colonnes du composant DBGrid au contenu.
//--------------------------------------------------------------------------------------------------------
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;
//--------------------------------------------------------------------------------------------------------
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;
Inscription à :
Articles (Atom)