gaudetm
Messages postés44Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention13 décembre 2004 17 oct. 2004 à 15:26
@f0xi
suffit de creer un boolean par exemple pour n'executer une partie du OnShow qu'une seule fois (donc au demarrage)
;)
suffit d'avoir une imagination :)
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 17 oct. 2004 à 14:07
Gaudetm > LOL oui effectivement, ou avais-je la tete ?
mille excuse pour le gourage !
mais, sans vouloir persister dans ma connerie, quand tu "minimise" dans le systray ton appli (donc Hide la plupart du temps) dés que tu réouvre l'appli le traitement recommence (c'est ça que je voulais demontrer en fait).
donc OnShow oui, mais pas sur des traitements qui ne demande a etre fait qu'une seule fois.
enfin ça depend du cas.
mais je pense que tu avais compris ce que je voulais dire par la, meme si je me suis tromper avec le minimize.
gaudetm
Messages postés44Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention13 décembre 2004 16 oct. 2004 à 16:41
@f0xi
le OnShow est uniquement apellé après la création de la form oubien en apelant Show après un Hide ou un close!!!!
minimiser une form n'effectue pas un hide et ni un close, donc quand elle sort du mode minimisé, le OnShow n'est pas appellé
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 16 oct. 2004 à 11:51
tu utilise le onshow ?
le probleme c'est que onshow se produit a l'affichage de form.
donc si on minimise et qu'on réagrandi Form, on recommence le traitement.
le mieux, utiliser OnCreate pour etre sur que ça soit appelé qu'une seule fois.
moi c'est ce que je fait pour tester quelque chose...
par contre le C j'aime vraiment pas (trop consommé de pascal peut etre)
je comprend pas la logique ni la syntaxe du C.
gaudetm
Messages postés44Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention13 décembre 2004 3 oct. 2004 à 11:02
pareil, une application GUI qui a pour exe 'test.exe' peut se lancer avec des paramtres (comme certains l'ont dit au-dessus)
c'est là òu vient tout l'interret du "Ouvrir Avec"
lance ton exe avec des arguments genre:
test.exe arg1 arg2 arg3
(oubien en le lançant par ligne de commande oubien en changeant le contenu du raccourci...)
et dans ton OnShow de ta Form met ceci, et tu verras bien ;)
for i:=1 to ParamCount do
ShowMessage(ParamStr(i));
TheWhiteShadow
Messages postés135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention 7 avril 2006 1 oct. 2004 à 17:21
bon ben je vais aller me recoucher moi...
;-)
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 1 oct. 2004 à 17:05
lol c kler que les GUI utilisent aussi les lignes de commande, si ne c'est plus !
quand tu double clic sur un fichier (.txt, .bmp, .pdf, etc) tu lance en fait quelquechose comme :
c:\dossier\programme\executable.exe "%1" où %1 est l'argument (ton fichier.txt)
ouvre la base de registre pour verifier :d (classes_root)
+++
cs_MAURICIO
Messages postés2106Date d'inscriptionmardi 10 décembre 2002StatutModérateurDernière intervention15 décembre 20145 1 oct. 2004 à 10:42
Je ne suis pas d' accord avec toi TheWhiteSHadow quand tu dis que ça n' a aucun interet pour les applications GUI. Toutes les applications GUI du type MDI utilisent les parametres pour determiner un fichier à ouvrir par exemple.
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 30 sept. 2004 à 23:33
Comme bien souvent, c'est par méconnaissance de l'existence qu'on produit du code compliqué.
Bref, ce qui correspond à
Langage C -> Langage Delphi
argc -> ParamCount
argv -> ParamStr()
Voila 2 fonctions qui étaient déjà présentes du temps du Turbo Pascal et qui ont su traverser le temps puisqu'elles fonctionnent toujours avec les applications GUI.
***Bonus*** ;o)
commutateurs de la ligne de commande : voir la fonction FindCmdLineSwitch.
"corrigez moi si je des c*nneries" : trop tard... :o(
Pense à utiliser le forum quand il y a quelque chose que tu ne sais pas.
Pour info, l'instruction WriteLn accepte beaucoup de types d'arguments et réalise un transtypage implicite.
Ainsi, l'ensemble de tes lignes que tu as écrites peuvent être aisément remplacées par :
program Project1;
{$APPTYPE CONSOLE}
var
i: integer;
begin
for i:= 1 to ParamCount do
WriteLn('Ligne ', i, ':' , ParamStr(i));
end.
Soit 8 lignes de code !
Mais bon, c'est pas facile de se défaire des habitudes du C.
Pas trop compliqué ?
Réponse par une qutre question : pourquoi faire simple quand on peut faire compliqué ?!...
Bienvenue dans le monde du Pascal.
TheWhiteShadow
Messages postés135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDernière intervention 7 avril 2006 30 sept. 2004 à 16:40
au fait je crois qu'on peut aussi utiliser ça pour récupérer les arguments passés en ligne de commandes à une application Windows (avec interface graphique, une fenêtre quoi ;-)), mais j'ai pas vérifié... et pis de toute façon y'a pas trop d'interêt pour les app windows. C'est interessant essentiellement pour les app console.
vlà... si vous voulez poser une question ou savoir un détail qui vous échappe, y'a pas de problème.
17 oct. 2004 à 15:26
suffit de creer un boolean par exemple pour n'executer une partie du OnShow qu'une seule fois (donc au demarrage)
;)
suffit d'avoir une imagination :)
17 oct. 2004 à 14:07
mille excuse pour le gourage !
mais, sans vouloir persister dans ma connerie, quand tu "minimise" dans le systray ton appli (donc Hide la plupart du temps) dés que tu réouvre l'appli le traitement recommence (c'est ça que je voulais demontrer en fait).
donc OnShow oui, mais pas sur des traitements qui ne demande a etre fait qu'une seule fois.
enfin ça depend du cas.
mais je pense que tu avais compris ce que je voulais dire par la, meme si je me suis tromper avec le minimize.
16 oct. 2004 à 16:41
le OnShow est uniquement apellé après la création de la form oubien en apelant Show après un Hide ou un close!!!!
minimiser une form n'effectue pas un hide et ni un close, donc quand elle sort du mode minimisé, le OnShow n'est pas appellé
16 oct. 2004 à 11:51
le probleme c'est que onshow se produit a l'affichage de form.
donc si on minimise et qu'on réagrandi Form, on recommence le traitement.
le mieux, utiliser OnCreate pour etre sur que ça soit appelé qu'une seule fois.
moi c'est ce que je fait pour tester quelque chose...
par contre le C j'aime vraiment pas (trop consommé de pascal peut etre)
je comprend pas la logique ni la syntaxe du C.
3 oct. 2004 à 11:02
c'est là òu vient tout l'interret du "Ouvrir Avec"
lance ton exe avec des arguments genre:
test.exe arg1 arg2 arg3
(oubien en le lançant par ligne de commande oubien en changeant le contenu du raccourci...)
et dans ton OnShow de ta Form met ceci, et tu verras bien ;)
for i:=1 to ParamCount do
ShowMessage(ParamStr(i));
1 oct. 2004 à 17:21
;-)
1 oct. 2004 à 17:05
quand tu double clic sur un fichier (.txt, .bmp, .pdf, etc) tu lance en fait quelquechose comme :
c:\dossier\programme\executable.exe "%1" où %1 est l'argument (ton fichier.txt)
ouvre la base de registre pour verifier :d (classes_root)
+++
1 oct. 2004 à 10:42
30 sept. 2004 à 23:33
Bref, ce qui correspond à
Langage C -> Langage Delphi
argc -> ParamCount
argv -> ParamStr()
Voila 2 fonctions qui étaient déjà présentes du temps du Turbo Pascal et qui ont su traverser le temps puisqu'elles fonctionnent toujours avec les applications GUI.
***Bonus*** ;o)
commutateurs de la ligne de commande : voir la fonction FindCmdLineSwitch.
"corrigez moi si je des c*nneries" : trop tard... :o(
Pense à utiliser le forum quand il y a quelque chose que tu ne sais pas.
Pour info, l'instruction WriteLn accepte beaucoup de types d'arguments et réalise un transtypage implicite.
Ainsi, l'ensemble de tes lignes que tu as écrites peuvent être aisément remplacées par :
program Project1;
{$APPTYPE CONSOLE}
var
i: integer;
begin
for i:= 1 to ParamCount do
WriteLn('Ligne ', i, ':' , ParamStr(i));
end.
Soit 8 lignes de code !
Mais bon, c'est pas facile de se défaire des habitudes du C.
Pas trop compliqué ?
Réponse par une qutre question : pourquoi faire simple quand on peut faire compliqué ?!...
Bienvenue dans le monde du Pascal.
30 sept. 2004 à 16:40
vlà... si vous voulez poser une question ou savoir un détail qui vous échappe, y'a pas de problème.
Twis++;