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
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
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
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'
Registre [ par Gogo700 ]
Bonjour, J'ai créé une fiche et un boutton, Lorsque l'on clique sur le boutton, le code suivant s'execute : [code=pas]var Registre: TRegistry; begin
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
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|