Accueil > > > AJOUTER UN SCRIPTING SIMPLE CLAIRE ET EFFICACE A VOTRE APPLICATION DELPHI !
AJOUTER UN SCRIPTING SIMPLE CLAIRE ET EFFICACE A VOTRE APPLICATION DELPHI !
Information sur la source
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 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
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
Historique
- 22 janvier 2007 13:05:51 :
- Ajouter du support de tableaux bidimentionnel et unidimentionnel en variant
déclaration comme ceci "pl:=array(10,20)" puis accés comme delphi "pl[10,20]:=448"
ou "pl:=array(3)"
il existe une différence entre
pl[0]:="ok"
pl[1]:="deux"
pl[2]:="komsto" <- chaine de caractere formaté : "ok·deux·komsto"
ce qui veut dire qu'on peut déclarer un tableau directement en entrant
"·" s'obtient en tapant alt+250
pl:="Paris·Rouen·Montpellier·Lyon"
et declaration directe tel que pl:=array(3) <- pointeur crée sur un tableau de variant de dimesion [3,1]
je ne sais pas si l'une est plus rapide que l'autre
- 22 janvier 2007 22:26:34 :
- avant "for (" au lieu de "for(" et toutes les instructions ne fonctionnait pas. maintenant si !
- 22 janvier 2007 23:09:24 :
- correction d'un petit bug qui supprimer les espaces pour les procedure :
ex : showmsg("Roberto le plus fort") >> en sortie on avait "Robertoleplusfort" !
ahhhhh c'est un peu mieux !
- 22 octobre 2007 13:49:07 :
- Ajout de l'acces aux objets de la fiche par le scripting.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Execution d'Application (EXE) [ par MAsterC ]
Salut à tous,Avec mon programme je voudrai exécuter un jeux... en appuyant sur un "button"...J'ai essayé avec SHELLAPI, ShellExecute(0,'open' ........
Table.emptytable -> erreur ? [ par manson34 ]
Je veux vider une table (apres l'execution d'un tbatchmove) grace a la commande : table.emptytable; Mais a l'execution j'ai le
Execution d'un code en pascal dans un programme en pascal [ par Mokost ]
Bonjour tout le monde,je pense que vous devez trouver le titre de mon sujet un peu vague aussi je vais essayer de l'expliquer du mieux que je le puiss
Afficher des images pendant l'execution d'un code. [ par kacola ]
Bonjour,Voila, j'ai un code qui s'exécute pendant une à deux minutes, il s'agit d'une analyse d'images bmp.Je souhaiterais que ces images s'affichent
compilation de code généré [ par zininf ]
bonjour, ma question est la suivante : comment compiler un code généré pendant l'execution pour qu'il sera executé ? je précise : dans une petite appl
Temps d'acces execution script [ par ludopika ]
Bonjour à tous,J'ai un petit soucis avec l'execution d'un script. En fait mon fichier contient 1000000 d'enregistrements à insérer dans une table...L'
Execution dynamique [ par alichem8 ]
slt , j'ai fait un programme qui sert à verifier le langage d'un automate.J'ai voulu généraliser mon programme pour qu'il reconaisse n'imprte quel au
Deux chaînes à parser [ par corole3 ]
Bonjour,je récupère dans deux fichiers les infos sur les process et services en cours. Je voudrais parser les données du premier fichier qui se présen
Clé Composée !! [ par tmsarts ]
Salut à tousJe travail sur un projet de Budget, et je veut facilité la saisi du code d'opération.Sachant que j'ai :- Une base de donnée "Secteur" avec
Générer un code a partir des champs? [ par abdousoft ]
Sltje suis en Cours de developper un programme de gestion des cartes fiscaleset je trouve un probleme pour generer le numero de ces derniers.Programme
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|