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

dimdidi 26 Messages postés mercredi 20 juillet 2005Date d'inscription 18 juillet 2006 Dernière intervention - 23 janv. 2006 à 09:43 - Dernière réponse : dimdidi 26 Messages postés mercredi 20 juillet 2005Date d'inscription 18 juillet 2006 Dernière intervention
- 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 

8 réponses

Répondre au sujet
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 23 janv. 2006 à 21:16
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Delphiprog
dimdidi 26 Messages postés mercredi 20 juillet 2005Date d'inscription 18 juillet 2006 Dernière intervention - 24 janv. 2006 à 09:29
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dimdidi
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 24 janv. 2006 à 19:52
0
Utile
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
dimdidi 26 Messages postés mercredi 20 juillet 2005Date d'inscription 18 juillet 2006 Dernière intervention - 25 janv. 2006 à 11:54
0
Utile
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
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 25 janv. 2006 à 20:48
0
Utile
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
dimdidi 26 Messages postés mercredi 20 juillet 2005Date d'inscription 18 juillet 2006 Dernière intervention - 27 janv. 2006 à 07:57
0
Utile
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
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 31 janv. 2006 à 23:41
0
Utile
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
dimdidi 26 Messages postés mercredi 20 juillet 2005Date d'inscription 18 juillet 2006 Dernière intervention - 1 févr. 2006 à 14:09
0
Utile
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.