SETCOMPONENT GETCOMPONENT

selma-elec Messages postés 27 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 5 février 2007 - 16 nov. 2004 à 14:49
selma-elec Messages postés 27 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 5 février 2007 - 17 nov. 2004 à 09:01
J'ai ecris le code suivant :

Form1.Button2.click(Sender : TObject)

Begin
RegisterClass(TButton);
Clipboard.SetComponent(Button1);
Button1.name := 'titi';
Clipboard.GetComponent(Self, Self);
End;

et j'obtiens une erreur EClassNotFound
Class TBUTTON non trouvée

or j'ai bien fait RegisterClass(TButton);

QU'EST CE QUI VA PAS ??

JMN

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
16 nov. 2004 à 22:34
Bonsoir,

Tout d'abord, je précise qu'il n'est pas nécessaire d'enregistrer la classe TButton à chaque clic sur Button2. Ici, j'utilise une section Initialization pour enregistrer la classe une seule fois le temps de la session.
Comme je n'ai pas réussi à obtenir l'erreur indiquée, voici un code qui fonctionne :
procedure TForm1.Button2Click(Sender: TObject);
var
  Comp: TComponent;
begin
  Clipboard.SetComponent(Button1);
  {Button1.name := 'titi';}
  FreeAndNil(Button1);
  if Clipboard.HasFormat(CF_COMPONENT) then
  begin
   Comp := Clipboard.GetComponent(Self, Self);
   if Comp is TButton then
    Button1 := Comp as TButton;
  end;
end;

initialization
  RegisterClass(TButton);

end.


Il est aussi préférable de tester le contenu du presse-papiers avant de l'affecter à un composant. Cela dit, la méthode GetComponent renvoie un TComponent. Telle que tu l'utilises dans ton code, on peut se demander où va le résultat de son appel puisque tu ne l'affectes à ...rien ! ?-)
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you
0
selma-elec Messages postés 27 Date d'inscription jeudi 2 octobre 2003 Statut Membre Dernière intervention 5 février 2007
17 nov. 2004 à 09:01
J'ai pris ton code copier dans mon application et j'ai toujours la même erreur.

(Bien sur moi aussi j'avais essayé de registrer la class dans la partie initialization.)

Mais mon application est assez grosse et très complexe. ou tout est crée dynamiquement !!

Par contre si je fais un nouveau projet et que j'essai ce code il marche !!

L'erreur vient de l'application, mais je ne sais pas quoi.

JMN
0
Rejoignez-nous