[DELPHI] Créer un composant

Créer un composant [DELPHI] - Programmation

Marsh Posté le 14-11-2001 à 21:31:38    

voilà, je voudrais créer un composant non visuel capable d'analyser du code HTML dont la source est un TRichEdit. En sortie, je veux avoir 4 TStrings :
- un qui contient les balises html trouvées
- un qui contient les positions des balises dans le TRichEdit (exprimé en nb de caractères)
- un qui contient les paramètres des balises
- enfin, un qui contient les attributs des paramètres.
 
voilà le code déjà tapé pour créer mon composant et ses attributs. Le composant s'installe bien, mais quand je veux manipuler les propriétés du composant, je me prends pleins demessages d'erreurs :(... Alors si l'un d'entre-vous pouvait me dire où j'ai merdé. Merci :)
 
unit ParserHTML;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Comctrls;
 
type
  TParserHTML = class(TComponent)
  private
    { Déclarations privées }
    FBalises: TStrings ;
    FPositions: TStrings ;
    FParametres: TStrings ;
    FAttributs: TStrings ;
    FSource: TRichEdit ;
    function GetBalises: TStrings ;
    function GetPositions: TStrings ;
    function GetParametres: TStrings ;
    function GetAttributs: TStrings ;
    function GetSource: TRichEdit ;
    procedure SetBalises (Value: TStrings) ;
    procedure SetPositions (Value: TStrings) ;
    procedure SetParametres (Value: TStrings) ;
    procedure SetAttributs (Value: TStrings) ;
 
  public
    { Déclarations publiques }
    constructor Create(AOwner: TComponent) ; override ;
    destructor Destroy ; override ;
    procedure Analyse ;
  published
    { Déclarations publiées }
    property Balises: TStrings
             read GetBalises write SetBalises ;
    property Positions: TStrings
             read GetPositions write SetPositions ;
    property Parametres: TStrings
             read GetParametres write SetParametres ;
    property Attributs: TStrings
             read GetAttributs write SetAttributs ;
    property Source: TRichEdit
             read GetSource ;
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('Parser HTML', [TParserHTML]);
end;
 
constructor TParserHTML.Create(AOwner: TComponent) ;
begin
     // Constructeur du composant
     inherited Create(AOwner) ;
     FBalises := TStrings.Create ;
     FPositions := TStrings.Create ;
     FParametres := TStrings.Create ;
     FAttributs := TStrings.Create ;
     FSource := TRichEdit.Create(AOwner) ;
end ;
 
destructor TParserHTML.Destroy ;
begin
     // Destructeur du composant
     FBalises.Free ;
     FPositions.Free ;
     FParametres.Free ;
     FAttributs.Free ;
     FSource.Free ;
     inherited Destroy ;
end ;
 
function TParserHTML.GetBalises: TStrings ;
begin
     // Renvoie la liste des balises trouvées
     Result := FBalises ;
end ;
 
function TParserHTML.GetPositions: TStrings ;
begin
     // Renvoie la liste des positions (en caractères) des balises trouvées
     Result := FPositions ;
end ;
 
function TParserHTML.GetParametres: TStrings ;
begin
     // Renvoie la liste des paramètres des balises trouvées
     Result := FParametres ;
end ;
 
function TParserHTML.GetAttributs: TStrings ;
begin
     // Renvoie la liste des attributs des paramètres des balises trouvées
     Result := FAttributs ;
end ;
 
function TParserHTML.GetSource: TRichEdit ;
begin
     // Renvoie la source
     Result := FSource ;
end ;
 
procedure TParserHTML.SetBalises(Value: TStrings) ;
begin
     FBalises.Assign(Value) ;
end ;
 
procedure TParserHTML.SetPositions(Value: TStrings) ;
begin
     FPositions.Assign(Value) ;
end ;
 
procedure TParserHTML.SetParametres(Value: TStrings) ;
begin
     FParametres.Assign(Value) ;
end ;
 
procedure TParserHTML.SetAttributs(Value: TStrings) ;
begin
     FAttributs.Assign(Value) ;
end ;
 
procedure TParserHTML.Analyse() ;
begin
     // Lance la procédure d'analyse
     Showmessage('Analyse lancée à partir de ' + FSource.Name) ;
end ;
 
end.

Reply

Marsh Posté le 14-11-2001 à 21:31:38   

Reply

Marsh Posté le 14-11-2001 à 21:51:10    

pas sur que ca soit ca mais dans ton create, cree des TStringList au lieu de creer des TStrings;
 
le TSTrings a plein de methodes virtuelle pures (virtual; abstract; dans delphi) et il ne faut pas le creer directement (cf. l'aide sur TStrings dans Delphi)
 
apres, je sais pas.. au lieu de le poser sur ta form, essaye de le creer dans le code pour tester avant. ca sera nettement plus facile pour debugger


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 14-11-2001 à 21:57:47    

JWhy a écrit a écrit :

pas sur que ca soit ca mais dans ton create, cree des TStringList au lieu de creer des TStrings;
 
le TSTrings a plein de methodes virtuelle pures (virtual; abstract; dans delphi) et il ne faut pas le creer directement (cf. l'aide sur TStrings dans Delphi)
 
apres, je sais pas.. au lieu de le poser sur ta form, essaye de le creer dans le code pour tester avant. ca sera nettement plus facile pour debugger  




 
effectivement, dans un exemple du bouquin, ils font un TSTringList :)
 
merci du conseil

Reply

Marsh Posté le 17-11-2001 à 09:20:52    

up pour mon pb de RichEdit...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed