|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger 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
Sources en rapport avec celle ci
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
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'
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
application delphi [ par oudihatma ]
J'ai plusieurs tables : Employé (cod_emp,nom,pre,,
Key codes... [ par ELCouz ]
Bonjour,jaimerais savoir si qqn connais un site ou on peu voir tout les codes KEY de F1 a la touche standby etc,,,bref les codes a placer dans la sent
interet du try...finally [ par Guillemouze ]
salut a tous, je me posait une question toute bete : quel est l'interet du try...finally?etant donne qu'on ne peut pas faire de tryexceptfinallyendon
Fonctionnement du DBImage [ par simonpelloquin ]
Bonjour à tous, Suite à une discussion avec (entre autres) Ali_Usto : http://www.delphifr.com/infomsg_IMAGE-DANS-BASE-DONNEE_956002.aspx#25 , nous avo
|
Téléchargements
Logiciels à télécharger sur le même thème :
|