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;