Copier les proprietes d'un objet vers un autre objet [Résolu]

Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
18 juillet 2006
- 23 janv. 2006 à 09:43 - Dernière réponse :
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
18 juillet 2006
- 1 févr. 2006 à 14:09
Bonjour,

Je cherche comment copier les valeurs des proprietes d'un objet vers un autre objet

TInfo =class(TObject)
public
sValeur:string;
sValeur1:string;
sValeur2:string;
....
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Info1,Info2:TInfo;
begin
Info1:=TInfo.create();
Info1.sValeur:='Toto';
ComboBox1.Items.Objects[0]:=Info1;


Info2:=TInfo.create();
StringGrid1.Objects[0,0]:=Info2;

// Je voudrais copier toutes les valeurs des proprietes de
// ComboBox1.Items.Objects[0] vers StringGrid1.Objects[0,0]
// Mais le nombre de propriete de la class TInfo peut changer

StringGrid1.Objects[0,0].sValeur:=ComboBox1.Items.Objects[0].sValeur;
...

//J'aimerais faire une sorte de
//StringGrid1.Objects[0,0]:=ComboBox1.Items.Objects[0];
// Mais on copie "le pointeur"

end;

J'espère que ma question est suffisamment clair.

Si quelqu'un a une idée.

Merci d'avance.


Dimdidi
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 23 janv. 2006 à 21:16
3
Merci
En règle générale, la méthode Assign (déclarée à partir de TPersistent) est surchargée et sert à cela.

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
Meilleure réponse
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
18 juillet 2006
- 24 janv. 2006 à 09:29
3
Merci
Merci pour la réponse
Mais pour mon cas c'est un TObject donc au dessus de TPersistent donc je ne vois pas comment faire (je suis un peu débutant)

J'ai rechercher Assign (à partir de TPersistent)
J'ai regardé les codes et j'ai pensé faire tout simplement

TInfo =class(TObject)
private
public
sValeur:string;
constructor create;
procedure Assign(Source:TInfo);
end;

procedure TInfo.Assign(Source: TInfo);
begin
if Source<>nil then
self.sValeur:=Source.sValeur;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Info1,Info2:TInfo;
begin
Info1:=TInfo.create();
Info1.sValeur:='Toto';
ComboBox1.Items.Objects[0]:=Info1;
Info2:=TInfo.create();
StringGrid1.Objects[0,0]:=Info2;

TInfo(StringGrid1.Objects[0,0]).assign(ComboBox1.Items.Objects[0]);
end;


Dimdidi

Merci dimdidi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de dimdidi
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 24 janv. 2006 à 19:52
0
Merci
Tu as eu le bon réflexe !
Le code est correct. Félicitations.
NB : si tu envisages de sous-classer TInfo, il serait bon de déclarer la méthode Assign en méthode virtuelle.
<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
18 juillet 2006
- 25 janv. 2006 à 11:54
0
Merci
Merci

Quand tu parles de sous classer
c'est bien

TInfo =class(TObject)
private
public
sValeur:string;
procedure Assign(Source:TInfo);
end;
TInfo2 =class(TInfo)
private
public
sValeur2:string;
end;


Dimdidi
Commenter la réponse de dimdidi
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 25 janv. 2006 à 20:48
0
Merci
Oui, c'est exactement ça. On parle aussi de classes dérivées.
Vois-tu l'intérêt ou pas de déclarer "Virtual" la méthode Assign ?
<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
18 juillet 2006
- 27 janv. 2006 à 07:57
0
Merci
Vois-tu l'intérêt ou pas de déclarer "Virtual" la méthode Assign ?

Désolé je ne vois pas car je suis un peu débutant.
Mais je veux bien que tu m'expliques.
Commenter la réponse de dimdidi
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 31 janv. 2006 à 23:41
0
Merci
Plutôt que de me lancer dans de grandes explications pas forcément claires, je te recommande de consulter l'aide en ligne sur "Méthodes virtuelles et dynamiques". Je pense que ce sera beaucoup mieux ...


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
Messages postés
26
Date d'inscription
mercredi 20 juillet 2005
Dernière intervention
18 juillet 2006
- 1 févr. 2006 à 14:09
0
Merci
Merci pour les infos


Dimdidi
Commenter la réponse de dimdidi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.