Re: factoriser du code d'ouverture de fiche
Côme de Christen a écrit :
> Salut
>
> Merci à toi ! Cela fonctionne parfaitement.
> (Il va me falloir digérer ces nouveaux aspects de programmation...)
>
> Reste le besoin de passer par un RegisterClass pour ce type de fiche.
> Pensez-vous que je puisse le faire en dynamique dans la routine (et donc
> potentiellement "réenregistrer" une classe déjà enregistrée, à moins de pouvoir
> tester si une classe est déjà enregistrée ?) ou bien faut-il vraiment le faire
> une fois à la création (fiche/datamodule) par :
>
> RegisterClass(TfListeColl);
> RegisterClass(TfListeClient);
> ...
>
> Je vois qu'il existe également un UnregisterClass. Est-ce malin à chaque appel
> de la routine d'enregistrer la classe pour la désenregistrer ensuite ? Je dirais
> que non mais bon c'est tentant de tout centraliser dans la routine qui peut
> alors être réutilisée telle que dans un autre projet.
>
> "blescouet" <si@jes.fr> a écrit dans le message de news:
> foenuh$8b9$1@sd-6836.dedibox.fr...
>> Salut,
>>
>> Côme de Christen a écrit :
>>> Salut et merci de ta réponse
>>>
>>> En fait ça ne passe pas ("Trop de paramètres originaux"):
>>>
>>> f :=
>>> TFormClass(FindClass('fListe'+sClientDataSet)).Cre ate(Application,'blabla',false);
>>>
>>> Il ne sait pas à la compilation que c'est une fiche qui hérite de
>>> fAncetreListe qui dispose donc d'un constructeur différent, comment puis-je
>>> lui indiquer ?
>>>
>> et si dans ta routine de création, tu passais directement la classe de ta
>> fiche plutôt que le nom de classe ?
>>
>> TFormAncetreClass = class of TFormAncetre;
>>
>> La routine devient :
>>
>> procedure CreateFormFromClass(AClass : TFormAncetreClass)
>> var
>> f : TFormAncetre;
>> begin
>> f := AClass.Create(Application, 'blabla', false);
>> f.Show();
>> end;
>>
>>
>> B.L.
>
>
Pourquoi parles-tu de RegisterClass ?
procedure CreateFormFromName(
const FormName : string);
var
fc : TFormClass;
f : TFormAncetre;
begin
fc := TFormClass(FindClass(FormName));
f := TFormAncetre(fc.Create(Application));
f.Show;
end;
|