Bonjour,
Je voudrais lire toutes les propriétés d'une composante mais ne sait pas comment lire certaine valeur.
Exemple j'ai un TListBox et je voudrais être capable de lister les propriétés, de lire la valeur d'une propriété et de l'affecter d'une nouvelle valeur pour la propriété Items (qui est un TString).
Ou encore j'ai la propriete FONT dans le listbox mais dans cette propriete elle contient le charset, color,heigth,name,pitch,size et le style je voudrais etre capable de lire toutes les sous-propriété et de voir ou d'écrire des nouvelles valeur.
Voici le code qui me permet de lire les propriétés mais je ne suis pas capable de voir les sous-composantes de ce qui m'affiche.
Est-ce quelqu'un sait comment je pourrais faire avec D7 ?
Je sais comment lire et affecter une valeur avec GetPropList et SetPropList
mais si ca fonctionne d'une autre façon pour les sous-propriétés j'aimerais savoir comment
Merci de votre aide
si vous executez ce code n'oubliez pas de mettre dans les uses TypInfo et mettre un listbox sur la form
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 procedure TForm1.FormCreate(Sender: TObject) ; var Count, Loop: Integer; List: PPropList; method : TMethod; begin Count := GetPropList(TypeInfo(TLISTBOX), [tkUnknown, tkInteger, tkChar, tkEnumeration,tkFloat, tkString, tkSet, tkClass, tkMethod, tkWChar,tkLString, tkWString, tkVariant, tkArray, tkRecord,tkInterface], nil) ; GetMem(List, Count * SizeOf(PPropInfo)) ; try GetPropList(TypeInfo(TLISTBOX),[tkUnknown, tkInteger, tkChar, tkEnumeration,tkFloat, tkString, tkSet, tkClass, tkMethod, tkWChar,tkLString, tkWString, tkVariant, tkArray, tkRecord,tkInterface], List) ; for Loop := 0 to Pred(Count) do begin Listbox1.Items.Add(List[Loop]^.Name) ; method := GetMethodProp(ListBox1, List[Loop]^.Name) ; end; finally FreeMem(List, Count * SizeOf(PPropInfo)) end; end;
Partager