Ajouter un scripting simple claire et efficace a votre application delphi !

Description

En faisant un tour sur le net j'ai trouvé cette source qui permet de faire du scripting.
Elle est tellement compréhensible que j'ai pu ajouter un support pour les tableaux unidimentionnel :) et l'instruction goto
Donc si j'y ai pu apporter des modifications avec aisance je n'imagine meme pas ce que VOUS vous pouvez en faire !
Ps : si vous ajouter de nouvelles fonctionnalité prevenez moi !

Source / Exemple :


exemple de script avec un tableau contenant un mélange de chaine et de valeur

	u[0]:="Ligne 1 du tableau"
	u[1]:="Deuxiemme ligne du tableau"
	u[2]:=2
	showmsg(u[2])

exemple avec accées aux composant
        memo1.lines.add("petit teste");

    • 22/10/2007**
Pour permettre au script d'acceder aux composants contenu dans la fiche vous devrez creer 3 fonction : -1 pour la lecture des champs et dont la déclaration est la suivante : VotreMethodeGet(sfield:string;param:TVariantArray):variant; sfield : contient le nom complet du champ param : est un tableau de variant contenant tout les parametres. ex : dans le script "x := monobjet.tableau[0].line[5].cell[1,2];" lors de l'apelle sfield vaudra "monobjet.tableau.line.cell" et param = [0,5,1,2] function VotreFiche.VotreMethodeGet(sfield:string;param:TVariantArray):variant; begin if sfield='self.alphablend' then result := AlphaBlend else if sfield='self.alphablendvalue' then result := AlphaBlendValue else if sfield='self.caption' then result := Caption else if sfield='self.left' then result := left else if sfield='self.top' then result := top else if sfield='memo1.lines.count' then result := memo1.lines.Count else if sfield='memo1.lines.names' then result := memo1.lines.Names[param[0]] else if sfield='memo1.lines.text' then result := memo1.lines.Text else if sfield='memo1.lines' then result := memo1.lines[param[0]] else if sfield='memo1.align' then result := memo1.Align else if sfield='stg.cells' then result := stg.Cells[param[0],param[1]]; end; -2 pour l'ecriture des champs et dont la déclaration est la suivante : VotreMethodeSet(sfield:string;param:TVariantArray;value:variant); sfield : contient le nom complet du champ param : est un tableau de variant contenant tout les parametres. value : est variant contenant la valeur a affecter. ex : dans le script "monobjet.tableau[0].line[5].cell[1,2] := 125;" lors de l'apelle sfield vaudra "monobjet.tableau.line.cell", param = [0,5,1,2] et value = 125 procedure VotreFiche.VotreMethodeSet(sfield:string;param:TVariantArray;value:variant); begin if sfield='self.alphablend' then AlphaBlend:=value else if sfield='self.alphablendvalue' then AlphaBlendValue:=value else if sfield='self.caption' then Caption:=value else if sfield='self.left' then left:=value else if sfield='self.top' then top:=value else if sfield='memo1.color' then memo1.Color := value else if sfield='memo1.lines.text' then memo1.lines.Text := value else if sfield='memo1.lines' then memo1.lines[param[0]] := value else if sfield='memo1.align' then memo1.Align := value else if sfield='stg.cells' then stg.Cells[param[0],param[1]]:=value; end; -3 pour l'appelle de méthode et dont la déclaration est la suivante : VotreMethodeMethode(sname:string;param:TVariantArray):variant; sname : contient le nom complet de la méthode param : est un tableau de variant contenant tout les parametres. result : est variant contenant le résultat de la méthode si il y en a un. ex : dans le script "memo1.lines.add("125");" lors de l'apelle sname vaudra "memo1.line.add", param = [125] function VotreFiche.VotreMethodeMethode(sname:string;param:TVariantArray):variant; begin if sname='application.processmessages' then Application.ProcessMessages else if sname='memo1.lines.add' then result := memo1.lines.Add(param[0]) else if sname='memo1.lines.indexof' then result := memo1.lines.IndexOf(param[0]) else if sname='memo1.lines.indexofname' then result := memo1.lines.IndexOfName(param[0]) else if sname='memo1.lines.delete' then memo1.lines.delete(param[0]); end; -enfin une fois créer faut les affecter a l'objet du script de cette maniere Exec := TExecute.Create; with Exec do begin FObjetS := VotreFiche.VotreMethodeSet; FObjetG := VotreFiche.VotreMethodeGet; FObjetM := VotreFiche.VotreMethodeMethode; end; Et voila vous avez accees a vos objets. D'autre exemple sont dans le zip

Codes Sources

A voir également

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.