Accueil > Forum > > > > Accéder aux objets dynamique
Accéder aux objets dynamique
vendredi 11 mai 2007 à 11:16:32 |
Accéder aux objets dynamique

gebu34
|
Salut à tous, Je crée dynamiquement un ComboBox sur une Form. J'ai élaguer volontairement le code pour ne pas surchager.... var CmBx: TComboBox; Objects: array of TControl; .............. CmBx := TComboBox.Create(Self); with CmBx do begin Parent := Self; Name := 'CB1'; OnClick := CmBxClick; SetBounds(100, 100, 150, 17); end; SetLength(Objects, Length(Objects) + 1); Objects[High(Objects)] := CmBx; On peut charger la ComboBox par : CmBx.Items.Add(NomVariable); On peut lire sur Click avec : variable := CmBx.Text; Ca c'est bien quand on a 1 ComboBox... Mais avec plusieurs CB1, CB2 ????? A+ Merci
|
|
vendredi 11 mai 2007 à 11:47:54 |
Re : Accéder aux objets dynamique

Loda
|
salut,
var MesCB : array[1..NBCB] of TcomboBox;
for i := 1 to NBCB do begin CmBx := TComboBox.Create(Self); with CmBx do begin Parent := Self; // Name := 'CB1'; // inutile ou CB + inttostr(i) OnClick := CmBxClick; SetBounds(100, 100+i*..., 150, 17); tag := i; // si ça t'aide.... end; MesCB[i]:=cmbx; end; n'oublie pas que les event pass en param le "sender" ! Aussi, rappel toi le champs tag!
A+
Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
|
|
vendredi 11 mai 2007 à 16:03:24 |
Re : Accéder aux objets dynamique

gebu34
|
Re, J'ai pris un tableau TControl car mets dedans aussi du TCheckBox et du TEdit. Ca ne change pas grand chose. J'avais déjà vu la possibilité d'utiliser Tag, qui peut-être fort util dans ce cas. Mais pour accéder aux propriétés du compo, il existe peut-être un manière plus simple que : for i:=0 to Length(Objects)-1 do begin if Objects[i].Tag = 2 ou if Objects[i].Name = 'CB1' end; pour récupérer l'indice de l'objet..... A+
|
|
vendredi 11 mai 2007 à 19:08:21 |
Re : Accéder aux objets dynamique

gebu34
|
Salut Loda, J'étais en train de relire ton message, et je pense que tu as la solution. Je m'acharne à avoir un tableau TControl pour pouvoir mettre toute sorte de composants, alors que déclarer un tableau par composant TComboBox, TCheckBox, TEdit est plus lourd en code, mais plus simple à gérer (remplir des listes, extraire des données...) Qu'en penses-tu ? A+.
|
|
vendredi 11 mai 2007 à 20:36:51 |
Re : Accéder aux objets dynamique

f0xi
|
ptite technique de derriere les fagots : uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Contnrs;
type TControlClass = class of TControl;
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private fDynCtrlList : TObjectList; protected public constructor Create(AOwner : TComponent); override; destructor Destroy; override; function CreateChild(const AName : string; AClass : TControlClass; AParent : TWinControl; const ALeft, ATop : integer; var VIndex : integer) : TControl; property DynamicCtrls : TObjectList read fDynCtrlList write fDynCtrlList; end;
var Form1: TForm1;
implementation
{$R *.dfm}
constructor TForm1.Create(AOwner: TComponent); begin inherited Create(AOwner); fDynCtrlList := TObjectList.Create(true); end;
function TForm1.CreateChild(const AName : string; AClass : TControlClass; AParent : TWinControl; const ALeft, ATop : integer; var VIndex : integer) : TControl; begin result := AClass.Create(nil); VIndex := fDynCtrlList.Add(result); with Result do begin if Length(AName) >= 2 then Name := AName else Name := 'DynamicCtrl'+IntToStr(fDynCtrlList.Count);
if AParent <> nil then Parent := AParent;
SetBounds(ALeft,ATop,Width,Height); end; end;
destructor TForm1.Destroy; begin fDynCtrlList.Clear; fDynCtrlList.Free; inherited Destroy; end;
procedure TForm1.FormCreate(Sender: TObject); var N,II,OT,OH : integer; begin CreateChild('',TEdit,Self,10,10,II); with DynamicCtrls.Items[II]as TEdit do begin Text := 'Hahahahaha'; OT := Top; OH := Height; end;
CreateChild('',TComboBox,Self,10,OT+OH+8,II); with DynamicCtrls.Items[II] as TComboBox do begin for N := 1 to 10 do Items.Add(IntToStr(N)); end; end;
Croc (click me)
|
|
samedi 12 mai 2007 à 08:39:07 |
Re : Accéder aux objets dynamique

gebu34
|
Salut, En ce moment je me connecte en pointillés j'ai des problèmes sur la ligne. La, FOxi nous présente THE code.... J'aime bien, c'est clair et nul doute efficace... Petite question, ta variable II (Vindex) est initialisée comment ? Dans mon cas, je veux faire apparaître les compos "à la volée" (un click sur une cellule d'un STringGrid = visible une autre cellule = libéré). Je pense qu'il suffit de déclaré CreateChild non pas dans FormCreate mais dans OnSelectCell. Par contre pour récupérer les données de ces compos comment utiliser DynamicCtrls ? (Par exemple le OnClick d'un ComboBox remplis la cellule 1,1 d'un TStringGrid) A+ et merci de vos efforts
|
|
samedi 12 mai 2007 à 19:07:53 |
Re : Accéder aux objets dynamique

f0xi
|
Réponse acceptée !
procedure TForm1.FormCreate(Sender: TObject); var N,II,OT,OH : integer; begin CreateChild('',TEdit,Self,10,10,II); with DynamicCtrls.Items[II] as TEdit do begin Text := 'Hahahahaha'; OT := Top; OH := Height; end;
CreateChild('',TComboBox,Self,10,OT+OH+8,II); with DynamicCtrls.Items[II] as TComboBox do begin for N := 1 to 10 do Items.Add(IntToStr(N)); end; end;
function TForm1.CreateChild(const AName : string; AClass : TControlClass; AParent : TWinControl; const ALeft, ATop : integer; var VIndex : integer) : TControl; begin result := AClass.Create(nil); VIndex := fDynCtrlList.Add(result); DynamicCtrls fonctione comme la propriété Items ou Lines d'une ListBox ou Memo, juste que la ce n'est pas des chaines mais des objets. pour assigner les evenements, tu créer des gestionnaire dans l'objet ou la fiche que tu desire, puis, tu assigne les gestionnaires comme suis : CreateChild('DEdit1',TEdit,Self,10,10,II); with DynamicCtrls.Items[II] as TEdit do begin Text := ''; OnClick := DoDEdit1Click; OnChange := DoDEdit1Change; OnKeyPress := DoDEdit1KeyPress; end; Croc (click me)
|
|
dimanche 13 mai 2007 à 00:03:24 |
Re : Accéder aux objets dynamique

gebu34
|
Ok, c'est clair, en plus j'aime bien ce code. Il ne me reste qu'a me mettre au clavier.... Merci A+
|
|
dimanche 13 mai 2007 à 01:57:42 |
Re : Accéder aux objets dynamique

f0xi
|
Réponse acceptée !
ah et pour enlever un objet de la fiche tu fait : DynamicCtrls.Delete(index de l'objet); Delete s'occupera de la suppression et liberation de l'objet. Croc (click me)
|
|
dimanche 13 mai 2007 à 21:44:06 |
Re : Accéder aux objets dynamique
|
Cette discussion est classée dans : combobox, accéder, objets, objects, cmbx
Répondre à ce message
Sujets en rapport avec ce message
combobox [ par Microbsoft ]
Je voudrais bloquer une combobox de l'ecriture est-ce possible si oui repondez. Merci @+
Manipulation de composants [ par finipe ]
Bonjour à tous. Tout d'abord bravo au concepteur web, le site est bien fait et très clair, c'estagréable, ça change...Bon trève de compliments :)Je dé
Combobox [ par lguez ]
Je cherche à mettre à jour la partie texte de la combobox au fur et à mesure que j'ecris dans la combo?par exemple si ma combobox contient :aaaaaaaabb
combobox [ par cldvax ]
Bonjour à tousJe suis débutant en programmation vba et j'ai deux petits problèmes.Dans une combobox j'arrive à extraire une valeur dans une liste, pré
Je veux mmoriser le contenu d'un combobox [ par Youyou0214 ]
J'ai fait un executeur de exe. Un bouton ouvre le opendialog et met le chemin du exe dans une combobox puis un autre bouton permet d'executer le exe c
findnearest dans la Combobox [ par mik38 ]
Bonjour,j'aurais savoir comment faire (a part trouver un autre composant) pour pouvoir saisir dans une combobox et qu'il se place sur l'item le plus p
combobox [ par Resco ]
je cherche comment, dans un combobox, selectionner une valeur mais en envoyer une autre qui ne figure pas dans Items
Propriété "Style" d'un ComboBox [ par jack554 ]
Bonjour.Question pour contrôler la saisie dans un ComboBox :Si on positionne le Style d'un TComboBox à csDropDown, l'utilisateur peut taper des valeur
pb combobox [ par tema ]
Salut, g un petit prob : g associer une bdd access à mon prog et je voudrais faire une combobox avec les valuers d'un champ de ma baz access mais g le
ComboBox.Text [ par magicvinni ]
Bonjour, J'ai un comboBox, avec une liste de choix et j'ai rajoutté un dernier item : "autre". Je voudrais que quand on clique sur autre, il y ai ec
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|