<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://wiki.techtic.pro/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://wiki.techtic.pro/feed.php">
        <title>TechTIC prog:lazarus:classes</title>
        <description></description>
        <link>http://wiki.techtic.pro/</link>
        <image rdf:resource="http://wiki.techtic.pro/lib/exe/fetch.php?media=favicon.ico" />
       <dc:date>2026-05-12T19:44:16+0200</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:creation_class&amp;rev=1687014684&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:exceptions&amp;rev=1620913026&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:interfaces&amp;rev=1588686335&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:json&amp;rev=1619882423&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:manip_class&amp;rev=1616349437&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tapplication&amp;rev=1620381877&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tasyncprocess&amp;rev=1681647891&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tcanvas&amp;rev=1589375263&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tclipboard&amp;rev=1616344766&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tcollection&amp;rev=1620235139&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tform&amp;rev=1618652034&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tlist&amp;rev=1678894089&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tobjectlist&amp;rev=1620235150&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tprocess&amp;rev=1619262344&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:trect&amp;rev=1721471185&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tregexpr&amp;rev=1615301206&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tregistry&amp;rev=1619107740&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tstream&amp;rev=1677780642&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tstrings&amp;rev=1591200769&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tthread&amp;rev=1682264671&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://wiki.techtic.pro/lib/exe/fetch.php?media=favicon.ico">
        <title>TechTIC</title>
        <link>http://wiki.techtic.pro/</link>
        <url>http://wiki.techtic.pro/lib/exe/fetch.php?media=favicon.ico</url>
    </image>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:creation_class&amp;rev=1687014684&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T17:11:24+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Création d'une Class ou d'un Object</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:creation_class&amp;rev=1687014684&amp;do=diff</link>
        <description>Création d'une Class ou d'un Object

Déclaration d'une class


type
  TMyClass = class(TObject)  // TMyClass hérite de TObject
  private
    FSomeVar: integer;
  public
    constructor Create; overload; // overload = plusieurs définition de la même procédure sont disponibles
    constructor Create(Args: array of integer); overload;
    destructor Destroy; override; // override = redefini la méthode virtual du parent.
    procedure DoSomethingLater; virtual; abstract; // Cette méthode n'existe pa…</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:exceptions&amp;rev=1620913026&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-13T15:37:06+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Exception &amp; Erreurs</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:exceptions&amp;rev=1620913026&amp;do=diff</link>
        <description>Exception &amp; Erreurs

La class


   Exception = class(TObject)
    public
      constructor Create(const msg : string);
      constructor CreateFmt(const msg : string; const args : array of const);
      constructor CreateRes(ResString: PString);
      constructor CreateResFmt(ResString: PString; const Args: array of const);
      constructor CreateHelp(const Msg: string; AHelpContext: Longint);
      constructor CreateFmtHelp(const Msg: string; const Args: array of const;
        AHelpContext: L…</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:interfaces&amp;rev=1588686335&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-05T15:45:35+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Interfaces</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:interfaces&amp;rev=1588686335&amp;do=diff</link>
        <description>Interfaces

Sources et Ressources

	*  &lt;https://wiki.freepascal.org/Understanding_Interfaces&gt;
	*  &lt;https://www.freepascal.org/docs-html/ref/refse44.html&gt;
	*  &lt;https://wiki.freepascal.org/How_To_Use_Interfaces&gt;
	*  &lt;https://laurent-dardenne.developpez.com/articles/Delphi/Interfaces/&gt;</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:json&amp;rev=1619882423&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-01T17:20:23+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>JSON</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:json&amp;rev=1619882423&amp;do=diff</link>
        <description>JSON

Créer un JSON

A partir d'un String


var
   vJD: TJsonData;
begin
   vJD    := GetJSON(AString);
   try
      if assigned(vJD) then { Ok le JSON est valide }
        begin
        ...
        end;
   finally
       vJD.free;
   end;
end;</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:manip_class&amp;rev=1616349437&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-21T18:57:17+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Manipulation des Classes</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:manip_class&amp;rev=1616349437&amp;do=diff</link>
        <description>Manipulation des Classes

Tests

Pour savoir si un objet est de la class X, on peut utiliser l'operateur is


if vCtrl is TForm then ...</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tapplication&amp;rev=1620381877&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-07T12:04:37+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TApplication</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tapplication&amp;rev=1620381877&amp;do=diff</link>
        <description>TApplication

CaptureException

Apparement TApplication aurait une property CaptureException (public) pour gérer les exceptions.... a creuser.


procedure TApplication.RunLoop;
begin
  repeat
    if CaptureExceptions then
      try // run with try..except
        HandleMessage;
      except
        HandleException(Self);
      end
    else
      HandleMessage; // run without try..except
  until Terminated;
end;</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tasyncprocess&amp;rev=1681647891&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-16T14:24:51+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TAsyncProcess</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tasyncprocess&amp;rev=1681647891&amp;do=diff</link>
        <description>TAsyncProcess

Exemple d'utilisation




unit uMain;
{$mode objfpc}{$H+}
interface

uses
   AsyncProcess, Classes, Controls, Dialogs,  Forms, Graphics, StdCtrls, SysUtils;

type
    { TForm1 }

   TForm1 = class(TForm)
      Button1:   TButton;
      GroupBox1: TGroupBox;
      Memo:      TMemo;
      procedure Button1Click(Sender: TObject);
   private
      procedure PingAsync;
      procedure ReceptAProcTerminate(Sender: TObject);
      procedure ReceptReadData(Sender: TObject);
      procedur…</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tcanvas&amp;rev=1589375263&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-13T15:07:43+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TCanvas</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tcanvas&amp;rev=1589375263&amp;do=diff</link>
        <description>TCanvas

Dessiner du Texte

On peut ecrire sur un Canvas avec la fonction DrawText ou TextOut.

DrawText

 Plus d'infos sur DrawText

TextOut

TextOut est accessible via TCanvas.TextOut.

Au final TextOut utilise l'API ExtTextOut de Windows

Sources:

	*  &lt;http://docwiki.embarcadero.com/Libraries/Rio/fr/Vcl.Graphics.TCanvas.TextOut&gt;

ClipRect

Differences TextOut / DrawText</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tclipboard&amp;rev=1616344766&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-21T17:39:26+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TClipboard (Gestion du presse papier)</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tclipboard&amp;rev=1616344766&amp;do=diff</link>
        <description>TClipboard (Gestion du presse papier)

Lecure du clipboard


uses   clipbrd,
...
Edit.Text := Clipboard.AsText; 


Sources &amp; Ressources

	*  &lt;https://wiki.lazarus.freepascal.org/Clipboard&gt;</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tcollection&amp;rev=1620235139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T19:18:59+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TCollection</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tcollection&amp;rev=1620235139&amp;do=diff</link>
        <description>TCollection

Sources &amp; Ressources

	*  TCollection VS TList VS TObjectList</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tform&amp;rev=1618652034&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-17T11:33:54+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TForm</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tform&amp;rev=1618652034&amp;do=diff</link>
        <description>TForm

Déclencher l'affichage complet de la Form

Grace à cette astuce, on est sûr que le dessin de la Form et de tous ses contrôles est terminé...


procedure TForm1.FormCreate(Sender: TObject);
begin
   FFirstActivate        := True;
   ...
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
   if FFirstActivate then
   begin
      FFirstActivate := False;
      Application.ProcessMessages;
      { ICI on est sur que tous les Controls ont étaient dessinés }
      ...
   end;
end;…</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tlist&amp;rev=1678894089&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-15T16:28:09+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TList et descendants</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tlist&amp;rev=1678894089&amp;do=diff</link>
        <description>TList et descendants

Les Containers

Informations sur les differents types de “Containers” en Pascal.

	*  Data Structures, Containers, Collections/fr
	*  TFPList

Choisir son container

	*  TFPList VS TStringList : il vaudrait mieux utiliser TStringList d'aprés les informations contenues sur cette page

Sort

Pour utiliser la méthode Sort sur un TList il faut lui fournir une function de comparaison</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tobjectlist&amp;rev=1620235150&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T19:19:10+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TObjectList</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tobjectlist&amp;rev=1620235150&amp;do=diff</link>
        <description>TObjectList

Sources &amp; Ressources

	*  TCollection VS TList VS TObjectList</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tprocess&amp;rev=1619262344&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-24T13:05:44+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TProcess et TProcessUTF8</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tprocess&amp;rev=1619262344&amp;do=diff</link>
        <description>TProcess et TProcessUTF8

TProcess

Doc :  

	*   TProcess -&gt; wiki.freepascal.org
	*  TProcess -&gt;freepascal.org

Programme de démo (Ping)

Ce programme fait un Ping sur google.fr et affiche le résultat dans un TMemo


procedure TForm1.Ping;
var
   vProc: TProcess;
begin
   vProc := TProcess.Create(nil);
   try
      // Nom de l'executable
      vProc.Executable := 'ping';
      // Ajout des parametres
      vProc.Parameters.Add('google.fr');
      // Ci dessous : poUsePipe trés important pour ut…</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:trect&amp;rev=1721471185&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-07-20T12:26:25+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TRect, TPoint etc...</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:trect&amp;rev=1721471185&amp;do=diff</link>
        <description>TRect, TPoint etc...

TRect

Création

pour créer un TRect : 


// Avec les données Left, Top, Right, Bottom 
Rect:=Classes.Rect(ALeft, ATop, ARight, ABottom); //Retourne un TRect (unit Classes)

// Avec les données Left, Top, Width, Height 
Rect:=Bounds(ALeft, ATop, AWidth, AHeight); //Retourne un TRect  (unit Classes)</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tregexpr&amp;rev=1615301206&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-09T15:46:46+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TRegExpr</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tregexpr&amp;rev=1615301206&amp;do=diff</link>
        <description>TRegExpr

Exemple d'utilisation


procedure TMainForm.RegExecute(ARegex, AText: string);
var
   vReg: TRegExpr;
   vI:   integer;

begin
   MMRes.Clear;
   vReg := TRegExpr.Create(ARegex);
   try
      if vReg.Exec(AText) then
      begin
         repeat
            MMRes.Lines.add('RegExpr.SubExprMatchCount=%d', [vReg.SubExprMatchCount]);
            if vReg.SubExprMatchCount &gt; 0 then
            begin
               for vI := 0 to vReg.SubExprMatchCount do
               begin
                …</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tregistry&amp;rev=1619107740&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-22T18:09:00+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TRegistry (La base de Registre)</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tregistry&amp;rev=1619107740&amp;do=diff</link>
        <description>TRegistry (La base de Registre)

Adresses a connaitre

	*   Trouver les chemins d'accès aux applications
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\

Sources &amp; Ressources

	*  &lt;https://wiki.freepascal.org/fcl-registry&gt;</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tstream&amp;rev=1677780642&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-02T19:10:42+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TStream et descendants</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tstream&amp;rev=1677780642&amp;do=diff</link>
        <description>TStream et descendants

TFileStream

Creation

	*  TFileStream.create
TStringsList
Write

Ecrire du texte


  vS:='test';
  FLogFileStream:=TFileStream.Create(FLogFilename,fmCreate or fmOpenWrite); 
  FLogFileStream.Write(Pointer(vS)^,Length(vS));
  FLogFileStream.free;
 

Sources et Ressources</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tstrings&amp;rev=1591200769&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-03T18:12:49+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TStrings et descendants</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tstrings&amp;rev=1591200769&amp;do=diff</link>
        <description>TStrings et descendants

Astuces

Accéder à tout le texte

TStrings.text

Sources et Ressources

	*  &lt;https://www.freepascal.org/docs-html/rtl/classes/tstrings.text.html&gt;</description>
    </item>
    <item rdf:about="http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tthread&amp;rev=1682264671&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-23T17:44:31+0200</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TThread</title>
        <link>http://wiki.techtic.pro/doku.php?id=prog:lazarus:classes:tthread&amp;rev=1682264671&amp;do=diff</link>
        <description>TThread

Titre

Code du Thread


{ TMyThread }
procedure TMyThread.Execute;
begin
  {... fait quelque chose dans un thread ...}
  Synchronize(@SynchroEnum); // Appel une procedure synchronisée avec le thread principal
end;


procedure TMyThread.SynchroEnum;
begin
  {... Fait quelque chose synchronisé avec le thread principal ...}
end;

constructor TMyThread.Create(CreateSuspended: boolean);
begin
  FreeOnTerminate := True;
  inherited Create(CreateSuspended);
end;</description>
    </item>
</rdf:RDF>
