Utilisation de FindComponent dans une unité

Résolu
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 - 30 janv. 2018 à 18:22
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 - 6 févr. 2018 à 12:41
Bonjour,
J'essaie de faire une unité avec des fonctions et procédures qui fonctionnent parfaitement lorsqu'elles sont intégrées à une application, mais produisent une erreur si je les passe en unités.
Voici le code :
unit uCreaPanel;

//############################//
         INTERFACE
//############################//   

uses SysUtils,
     StrUtils,
     Classes,
     controls,
     graphics,
     extctrls
     ;

    /// ========================= BMulti Panels  ===============================
    procedure CreaPAN(NL,NC:integer; L,H:integer; X,Y:integer; c:Tcolor;
                      KNOM:string; papa:TWincontrol; PROC:TNotifyEvent);
    procedure FreePAN(NL,NC:integer; KNOM:string);
    procedure TextePAN(n:integer; T:string; KNOM:string);
    procedure ColorPAN(n:integer; C:Tcolor; KNOM:string);
    //procedure ClicBP(Sender: TObject);


//############################//
         IMPLEMENTATION
//############################//



//##############################################################################
///*****************************************************************************
///*************************** MULTIPANEL **************************************
///*****************************************************************************
//##############################################################################

//--------------------------------------------------
procedure CreaPAN(NL,NC:integer; L,H:integer; X,Y:integer; c:Tcolor;
                 KNOM:string; papa:TWincontrol; PROC:TNotifyEvent);
var i,j,xx:Integer; z:string; bb:TPanel;
// panels créés : PAN1 à PANx  avec x = NC*NL      
begin
for j:=0 to NL-1 do
    for i:=0 to NC-1 do
        begin
        xx := j*nC+i+1;
        z := KNOM + IntToStr(xx);
        bb := TPanel.Create(papa);
        bb.Name    := z;
        bb.Left    := i*L+X;
        bb.top     := j*H+Y;
        bb.width   := L;
        bb.height  := H;
        bb.Color   := c;
        bb.BevelWidth := 1;
        bb.caption := '';
        bb.Parent  := papa;
        bb.visible := true;
        bb.Tag     := xx;
        bb.Caption := inttostr(xx);
        bb.BringToFront;
        bb.OnClick := PROC;
        end
end;

//----------------------------------------------------
procedure FreePAN(NL,NC:integer; KNOM:string);
var i:integer;
begin
for i:=0 to NL*NC-1 do Tpanel(findComponent(KNOM + inttostr(i))).Free
end;
//----------------------------------------------------
procedure TextePAN(n:integer; T:string; KNOM:string);
begin
Tpanel(tpanel.findComponent(KNOM + inttostr(n))).Caption := T
end;

//----------------------------------------------------
procedure ColorPAN(n:integer; C:Tcolor; KNOM:string);
begin
Tpanel(findComponent(KNOM + inttostr(n))).Color := C
end;


END;


Erreur à la compilation : "identificateur non déclaré : findComponent"
FindComponent appartient à priori à Tcomponent contenu lui même dans "Classes"
Bref je sêche !
merci
A voir également:

2 réponses

korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
30 janv. 2018 à 19:28
Salut,

sans trop rentrer dans le détail, pour la procedure FreePan, par exemple, je ferais :

procedure FreePAN(NL, NC: integer; KNOM: string; papa: TWincontrol);
var
  i: integer;
begin
  for i := 0 to NL * NC - 1 do
    with papa do
      Tpanel(FindComponent(KNOM + IntToStr(i))).Free;
end;


Faut pas oublier le "papa"...
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
31 janv. 2018 à 07:54
Salut Korgis
J'étais sur que tu interviendrais, tu m'avait déjà aidé pour une histoire de mouse bouton il n'y a pas si longtemps
Je vais essayer cela et je te tiens aucourant
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
31 janv. 2018 à 08:28
ça marche impec, mais cela me crée une erreur justement dans le fameux module panel cité précédemment
Peut être soumettrai-je ce pb plus tard !!
Merci, l'unité fonctionne
0
Rejoignez-nous