Hum hum ....

StiriX Messages postés 67 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 2 septembre 2009 - 8 juil. 2007 à 22:10
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 10 juil. 2007 à 19:37
Bonjour à tous,

alours voila mon probleme est le suivant:
Dans le cadre d'un projet delphi contenant des fenêtres très répétitives, j'aimerais faire une classe qui stocke toutes les fonctions récursivent qui vont etre exploité dans mon projet.
A savoir j'aimerais faire une classe qui ait uen fonction qui grace à un tableau permette d'afficher ou non une liste de bouton.
Pour cela voici la partie de ma classe qui va pas :

// mes types
type
    T_array_edit = array[0..10] of TButton;

    TOperationsForms = class
    private
       PTab_TEdit : T_array_edit;
       procedure WriteTab_TButton(index : integer; valeur : string);
       function ReadTab_TButton() : T_array_edit;
    published
       property Tab_TButton[index : integer] : T_array_edit read ReadTab_TButton write WriteTab_TButton;
end;

// les fonctions

procedure TOperationsForms.WriteTab_TButton(index : integer; valeur : TButton);
begin
       PTab_TButton[index] : = valeur;
end;

function TOperationsForms.ReadTab_TButton : T_array_TButton;
begin
       Result := PTab_TButton;
end;

l'erreur retournée est Published property 'Tab_TButton' cannot be of type ARRAY.
J'avous être un peu dépassé par le code et merci à ceux qui me répondrons :)

8 réponses

nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
9 juil. 2007 à 00:06
salut,
et bienvenue sur delphifr apparemment c'est ton premier message !
j'ai pas vraiment tres bien compris ta question
"A savoir j'aimerais faire une classe qui ait uen fonction qui grace à un tableau permette d'afficher ou non une liste de bouton."
merci de preciser plus ! et ecrit le sujet au lieu de "hum hum ..."

**************************************************************
nethacker
hacking is not just an art it's a lifestyle
***************************************************************
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
9 juil. 2007 à 00:18
Bonsoir,

Tout simplement tu ne peux pas déclarer des tableaux dans la section published d'une classe. Soit tu mets la déclaration dans la partie public, soit tu crées 11 propriétés TButton, c'est au choix.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
9 juil. 2007 à 07:59
Bonjour

peut etre faudrait il oriete vos recherche sur les listes d'objet (TObjectList)
ou les collections
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 juil. 2007 à 12:01
uses stdctrls;

type
  TButtonList = class
  private
    fList : TList;
    procedure SetButton(index : integer; val : TButton);
    function GetButton(index : integer) : TButton;
  public
    constructor Create;
    destructor Destroy; override;
    property Buttons[index : integer] : TButton read GetButton write SetButton;
    function Add(Button : TButton) : integer;
    procedure Delete(index : integer);
    function IndexOf(Button : TButton) : integer;
    function Count : integer;
  end;
 
 
constructor TButtonList.Create;
begin
  fList := TList.Create;
end;

destructor TButtonList.Destroy;
var N : integer;
begin
  for N := fList.Count-1 downto 0 do
    Delete(N);
  fList.Free;
  Inherited Destroy;
end;

procedure TButtonList.SetButton(index : integer; val : TButton);
begin
  TButton(fList.Items[index]).Assign(Val);
end;

function TButtonList.GetButton(index : integer) : TButton;
begin
  result := TButton(fList.Items[index]);
end;

function TButtonList.Add(Button : TButton) : integer;
begin
  result := fList.Add(Button);
end;

procedure TButtonList.Delete(index : integer);
begin
  TButton(fList.Items[index]).Free;
  fList.Delete(index);
end;

function TButtonList.IndexOf(Button : TButton) : integer;
begin
  result := fList.IndexOf(Button);
end;

function TButtonList.Count : integer;
begin
  result := fList.Count;
end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
9 juil. 2007 à 12:04
exemple d'utilisation :

var BTL : TButtonList;

procedure TForm1.FormCreate(Sender: TObject);
begin
  BTL := TButtonList.Create;
  with BTL do
  begin
    Add(TButton.Create(Self));
    Add(TButton.Create(Self));
    Add(TButton.Create(Self));

    Buttons[0].Parent := Self;
    Buttons[0].Left   := 15;
    Buttons[0].Top    := 10;

    Buttons[1].Parent := Self;
    Buttons[1].Left   := 15;
    Buttons[1].Top    := 40;

    Buttons[2].Parent := Self;
    Buttons[2].Left   := 15;
    Buttons[2].Top    := 70;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  BTL.Free;
end;
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
9 juil. 2007 à 17:29
@f0xi: avec le TObjectList ou le TComponentList, pas besoin de s'occuper de la libération des conposants.... plus pratique donc !
0
StiriX Messages postés 67 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 2 septembre 2009
9 juil. 2007 à 21:42
impecable c'est sque j'attendais !!! Un grand merci pour la rapidité et surtout la qualité des réponses !
merci !!!
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
10 juil. 2007 à 19:37
je sais flo, tu as deja du voir que j'aimais beaucoup deriver TObjectList pour ce genre de choses :)
c'est juste que la, j'ai fait l'exemple avec TList :)
0
Rejoignez-nous