[..] Création d'un trombinoscope. Besoin d'aide.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

[..] Création d'un trombinoscope. Besoin d'aide.

#1

Message par BeCool »

Bonjour et bonne année a tous !

Il y a quelques semaines de cela, je me suis lancer dans le projet de faire un trombinoscope (notamment pour là ou je travail) qui n'avance pas car j'avoue planter un peu. :( Donc si vous auriez des idées pour m'aider ce serrait cool :)

Je met la liste des choses qui ne vont pas :

- [R] Faire en sorte que les boutons marchent (Quand on va dans la fenêtre "Ajouter" et qu'on quitte cette dernière, les boutons ne marchent plus),
- [R] Créer un fichier .ini et écrire les informations que je veux (variables) dedans,
- [R] Et juste une question, a tout hasard, quelqu'un aurait une idée pour les fiches personnelles ? Faut il créer une sorte de base de données pour stocker les informations des personnes ? Ou y a t'il un moyen plus simple ?
- [..] Faire fonctionner la partie "Recherche" par catégorie etc...
- [..] Afficher l'image que je veux, et que je sélectionne dans mes dossiers,
(J'en rajouterais surement au fur et a mesure :p)

Je met le code que j'ai fais pour le moment, n'hésitez pas a le modifier / remettre en ordre comme vous le souhaitez.
► Afficher le texte

Voilà. Je vous remercie beaucoup par avance.

P.S: Je tiens juste a préciser que je ne demande pas qu'on me ponde tout le code tout cuit dans les mains, mais juste un tout petit peu d'aide pour me faire avancer parce que là, je stagne^^
Modifié en dernier par BeCool le lun. 12 janv. 2009 09:07, modifié 12 fois.
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Trombinoscope. Besoin d'aide.

#2

Message par jbnh »

"[..] Afficher l'image que je veux, et que je sélectionne dans mes dossiers "

Utilise GUICtrlSetImage

quelqu'un aurait une idée pour les fiches personnelles ?

Utilise les fichiers ini (voir doc et valable aussi pour ta fonction recherche)

Bonne chance !
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#3

Message par BeCool »

Ok, merci bien. Je vais aller y jeter un coup d'oeil dès que j'ai quelques minutes a moi.

Et sinon, pour mon problème de bouton, quelqu'un a une idée ?

Edit : jbnh avez vous essayé mon script ? Si non, essayez le, vous comprendrez ce que je voulais dire par "Afficher l'image que je veux et que je sélectionne dans mes dossiers". Mon but n'est pas d'afficher une icône utilisable pour un contrôle, mais juste afficher une image (ou l'on ne peut pas cliquer dessus), avec, dans la partie ajout, un bouton qui fait en sorte que quand on clique dessus, on peut mettre l'image que l'on veut.
Je ne sais pas si je suis très clair, mais essayez mon script et vous comprendrez tout de suite mieux ;)
Modifié en dernier par BeCool le jeu. 08 janv. 2009 09:06, modifié 1 fois.
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Trombinoscope. Besoin d'aide.

#4

Message par Yogui »

tout est expliqué ICI Bonne journée
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#5

Message par BeCool »

Hey merci beaucoup ! :D
Je l'avais déjà vu ce poste, mais je n'arrivais plus a le retrouver. :oops:

Jbnh, j'ai beau avoir cherché, je n'ai pas trouver d'aide sur la création d'un fichier ini pour ce que je veux faire. A part CECI qui ne m'aide pas beaucoup, j'ai rien trouvé ...
Pourriez-vous m'en dire un peu plus ?

Edit : Bon là j'avoue ne pas y arriver ... Je n'arrive pas a faire ce que je veux avec ces satanés boutons ...

Edit 2 : C'est bon, j'y suis arriver en reprenant exactement votre exemple Yogui (dans le lien que vous m'avez passer).
Mise a jour du script du premier poste.
Modifié en dernier par BeCool le jeu. 08 janv. 2009 09:07, modifié 1 fois.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#6

Message par BeCool »

Petit up :roll:

Au passage, j'en profite pour demander de l'aide (encore) par rapport a quelque chose que j'ai éventuellement trouvé pour la création de mes fichiers ".ini" .

J'aimerais savoir comment faire pour récupéré une valeur d'une Input (GUICtrlRead($nom_de_l'input)) pour s'en servir pour créer un fichier (.ini par exemple :roll: ) et le nommer suivant ce qui est écrit dans l' Input.

J'ai pensé a ça :

Code : Tout sélectionner

$file = FileOpen('_' & GUICtrlRead($Nom_fiche_input) & '.ini' & @CRLF, 1)
Mais ça ne marche pas :(
Modifié en dernier par BeCool le jeu. 08 janv. 2009 09:08, modifié 1 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#7

Message par ani »

J'aimerais savoir comment faire pour récupéré une valeur d'une Input (GUICtrlRead($nom_de_l'input)) pour ...
Vous donnez la réponse, c'est bien guictrlread(lecontrole)

Fileopen = ouverture d'un fichier.
Dans l'exemple que vous donnez on y voit un retour a la ligne, vaut mieux le retirer.

le flag à utilisé est 9 (dans la cas ou la structure du dossier et fichier est inexistante).

Exemple:

Code : Tout sélectionner

$Fichier = FileOpen("_" & GuictrlRead($Nom_fiche_input) & ".ini",9)
FileWrite($Fichier,".....")
FileClose($Fichier)
Mais y a bien des fonctions juste pour l'extension INI (iniwrite,iniread,inireadsection,inidelete, ect)

Pourriez vous etre un peu plus précis sur la structure de votre fichier ?
voulez vous créer fichier par fichier ou un seul fichier contenant des informations ?

Merci et bonne continuation (j'aime bien votre projet ;))
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#8

Message par BeCool »

Merci beaucoup :)

Je savais que je n'en étais pas loin, mais je ne voyais pas d' où venait le problème. Maintenant je comprend mieux :mrgreen:

Pour ce qui est des fonctions propre aux .ini, je le savais, mais il n'y a, apparemment pas de fonction du genre CreateIni ou quelque chose dans le genre (même OpenIni) donc, a moins d'avoir mal regardé, ces fonctions ne faisaient pas l'affaire. En revanche, maintenant que j'arrive a créer mon .ini comme je veux, je vais surement en avoir besoin ;)

Pour ce qui est de la structure des fichiers, j'aimerais arriver a faire en sorte qu'il n'y ait que un .ini par fiche personnel et a coté, créer automatiquement un fichier qui contient tout les noms des fiches personnel (recensement.ini par exemple) pour faire en sorte que quand j'en crée une nouvelle, le programme regarde avant dans recensement.ini si il n'y a pas déjà une fiche avec ce nom. Si oui, il renvoit un message en disant qu'elle est déjà créer, et si non, il la crée.

Pour finir, moi aussi j'aime bien ce projet, même si c'est mon tuteur qui en a eu l'idée :p
Si vous avez des suggestions ou autre pour l'améliorer, n'hésitez pas ;)
Et suivez souvent ce poste pour en voir l'avancement s'il vous intéresse. Puis j'aurais surement pas mal de questions encore (dont 2 ou 3 pour le moment pas résolue :p)

P.S: Je vais essayé de mettre le script a jour le plus souvent possible.

Edit : Nouveau problème :p J'ai voulu reprendre la même chose que le poste d'au dessus en l' adaptant pour un "If FileExists" pour voir si, avant de créer là fiche, elle existe déjà, mais ça ne marche pas ...

Code : Tout sélectionner

Case $Creer_button
     If FileExists ("_" & $Nom_fiche_input & ".ini") Then
          MsgBox(0, "Erreur", "La fiche existe déjà")
          GUISetState(@SW_hide)
          Ajouter()
     ElseIf Not FileExists ("_" & $Nom_fiche_input & ".ini") Then
          $file = FileOpen("_" & GuictrlRead($Nom_fiche_input) & ".ini",9)
          If $file = -1 Then
               MsgBox(0, "Erreur", "Impossible de créer la fiche.")
               GUISetState(@SW_hide)
               Ajouter()
          EndIf
     EndIf
GUISetState(@SW_hide)
Ajout_fiche_perso()
Je pourrais également utiliser la même technique pour la fonction Recherche quand ça marchera.

Edit : En fait c'est bon, j'ai trouvé. J'ai changé d'endroit 2 lignes et j'ai modifié les lignes

Code : Tout sélectionner

If FileExists ("_" & $Nom_fiche_input & ".ini") Then
et

Code : Tout sélectionner

ElseIf Not FileExists ("_" & $Nom_fiche_input & ".ini") Then
par

Code : Tout sélectionner

If FileExists ("_" & GuictrlRead($Nom_fiche_input) & ".ini") Then
et

Code : Tout sélectionner

ElseIf Not FileExists ("_" & GuictrlRead($Nom_fiche_input) & ".ini") Then
Je mets le script du premier poste a jour ;)

P.S: Tlem, désolé pour les balises autoit ?
Modifié en dernier par BeCool le jeu. 08 janv. 2009 17:29, modifié 2 fois.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#9

Message par BeCool »

A nouveaux un problème (décidément ...)

Quelqu'un sait comment écrire dans un label suivant une variable ?

Je m'explique. Grâce a ma fonction "recherche" qui regarde si un la fiche personnel existe, j'aimerais faire en sorte que si elle existe, ça me lise mon fichier .ini et que suivant la section, ça me mette automatiquement les bonnes données aux bons endroit.

Je ne sais pas si je suis assez claire... Un petit bout de code vous aidera surement a mieux comprendre ;)

Code : Tout sélectionner

Case $Rechercher
     $filee = GuictrlRead($Recherche)
     If FileExists("_" & GuictrlRead($Recherche) & ".ini") Then
          $Result_nom = IniReadSection($filee, "Nom")
           [color=#FF0000][b]Met moi le résultat de la section "Nom" qui se trouve dans GuictrlRead($Recherche) (fichier.ini)  dans le label nommé "$Nom_label_info"[/b][/color]
     ElseIf Not FileExists("_" & GuictrlRead($Recherche) & ".ini") Then
          Exit
     EndIf
Es-ce possible ?

Edit : J'ai trouvé quelque chose

Code : Tout sélectionner

GUICtrlSetData($Nom_label_info, $Result_nom)
Ça affiche effectivement quelque-chose dans le label mais pas ce que je veux ... Il m'affiche "1" au lieu du nom de la personne ... O_o
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#10

Message par Tlem »

Sans doute :

Code : Tout sélectionner

GUICtrlSetData($Nom_label_info, GuictrlRead($Recherche))
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#11

Message par BeCool »

Je viens d'essayer, et même avant d'avoir essayé, ça me paraissait bizarre.

Je ne veux pas qu'il m'affiche se que l'on tape dans recherche mais je veux qu'il m'affiche ce qu'il trouve (en fonction du nom que l'on recherche) dans la partie [Nom] du .ini .

Je ne pense pas être assez claire... :(

Edit : Voilà , j'ai fait un petit montage. En image ça parle toujours mieux :p

Image
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#12

Message par Tlem »

Puisque le nom du fichier .ini est indiqué dans cette partie :

Code : Tout sélectionner

If FileExists("_" & GuictrlRead($Recherche) & ".ini") Then
Je dirait qu'il vous faut faire :

Code : Tout sélectionner

Case $Rechercher
     $filee = "_" & GuictrlRead($Recherche) & ".ini"
     If FileExists($filee) Then
         GUICtrlSetData($Nom_label_info, IniRead ( $filee, "Nom", "key", "")) 
     Else
          Exit
     EndIf
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#13

Message par tolf »

Ca ne répond pas forcément à la question, mais je pense que c'est un problème qu'il faudra un jour ou l'autre résoudre :
- Votre script appelle la fonction "trombi" au démarrage.
- Ensuite, la fonction "Ajouter" est appelée quand on clique sur le bouton ajouter.
- Enfin, et c'est là que ça pose problème, si on ferme la fenêtre, il se passe ceci :

Code : Tout sélectionner

Case $GUI_EVENT_CLOSE
    GUISetState(@SW_hide)
    Trombi()
Cela veut dire que vous cachez la fenêtre d'ajout et que vous appelez à nouveau la fonction "Trombi".
Le problème, c'est que si vous ajoutez beaucoup de gens, vous aurez plein de fenêtres cachées, et votre programme va prendre de plus en plus de mémoire inutilement :evil:
De plus, vous n'avez pas besoin d'appeler une nouvelle fois la fonction "Trombi" : vous avez juste à sortir de la fonction "Ajouter".
Je vous conseille donc de remplacer le code ci-dessus par ceci :

Code : Tout sélectionner

Case $GUI_EVENT_CLOSE
    GUIDelete()
    Return
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#14

Message par BeCool »

Merci beaucoup ça marche impec' :D

En fait, je n'étais pas si loin de la solution ... Comme d'habitude :|

Encore une petite question, quelqu'un aurait une idée pour faire la recherche par catégorie ? Du genre :

Si "A. Nom" est sélectionner, alors tu recherche dans _fichier.ini la catégorie nom et tu affiche les informations,
Si "B. Prénom" est sélectionner, alors tu recherche dans _fichier.ini la catégorie prénom, et tu affiche les informations,
Etc...
Je voudrais aussi faire en sorte que si on recherche un service , ça m'affiche, dans la listview "Résultat" les noms de toutes les personnes travaillant dans ce service. Et il suffirait de cliquer sur le nom/prénom pour afficher les informations de la personne concernée.

En fait ce que je voudrais savoir, c'est comment faire pour dire "Si ceci EST SéLECTIONNER, alors....."

Merci beaucoup de votre aide.

P.S: Script du premier poste mis à jour.
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#15

Message par BeCool »

Petit up :roll:

J'en profite pour dire que j'ai trouvé quelque chose avec GuiSetState et GUICtrlGetHandle, mais ça ne fait aucun effet (pas de bug détecté, c'est déjà ça ^^)

Suis-je sur la bonne voie ?
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#16

Message par BeCool »

Up :cry:

Personne pour m'aider svp ?

Je n'avance plus ... Ce serrait dommage que ce projet tombe a l'eau ...
Avatar du membre
Voodoo
Niveau 6
Niveau 6
Messages : 298
Enregistré le : ven. 20 juil. 2007 20:45
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#17

Message par Voodoo »

Bonjour,

je n'ai pas encore testé le code mais la structure du fichier ini est plus que bizarre.

On devrait avoir quelque chose du style d'après votre capture d'écran:

[tintin]
prenom=Toto
service=informatique
fonction=alternant...

Tous sa dans un fichier tintin.ini. Ce n'est pas une obligation, mais un conseil car les fonctions ini sont faites pour traiter des fichiers sous cette forme la.

Ensuite votre trombinoscope ressemble plus à une base de donnée. La solution des *.ini n'est pas adapté. Tournez vous vers les fonctions _sqlite3_. Vous aurez accés alors à des possibilitées de recherche de tout type en tappant 1 ligne de code.


Cette partie la semble être la même que celle évoquée par Tolf et doit être modifiée avec le guidelete():

Code : Tout sélectionner

               
 Case $Annuler
    GUISetState(@SW_hide)
    Trombi()
 
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#18

Message par BeCool »

Pour ce qui est de la structure de mes .ini, il ont tous cette ossature :

Code : Tout sélectionner

[Nom]
key=Tintin
[Prenom]
key=Duran
[Service]
key=Informatique
[Fonction]
key=Administrateur réseau
[Numero de telephone externe]
key= xx xx xx xx xx
[Numero de telephone interne]
key=xx xx
[Mail]
key=blabla@blabla.fr
(Bien évidement, les informations sont des infos bidon :p)

Pour ce qui est de la case $Annuler, je vais modifier ça de ce pas. Bien que ça marche très bien actuellement (ça ne me créer pas de fenêtre invisible etc dans le gestionnaire des tâches.)

Je vais aller me renseigner pour les fonctions _sqlite3_.

Merci bien en tout cas.
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#19

Message par tolf »

BeCool a écrit :Pour ce qui est de la structure de mes .ini, il ont tous cette ossature :

Code : Tout sélectionner

[Nom]
key=Tintin
[Prenom]
key=Duran
[Service]
key=Informatique
[Fonction]
key=Administrateur réseau
[Numero de telephone externe]
key= xx xx xx xx xx
[Numero de telephone interne]
key=xx xx
[Mail]
key=blabla@blabla.fr
Si vous voulez utiliser des ini, il serait plus judicieux d'avoir plusieurs "key" dans chaque section :

Code : Tout sélectionner

[625]
Nom=Tintin
Prenom=Duran
Service=Informatique
Fonction=Administrateur réseau
Numero de telephone externe= xx xx xx xx xx
Numero de telephone interne=xx xx
Mail=blabla@blabla.fr
Pour ce qui est des titres de sections, vous pouvez utiliser un numéro arbitraire pour chaque personne, ou mettre quelque chose comme "Nom_Prénom".
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
BeCool
Niveau 5
Niveau 5
Messages : 173
Enregistré le : jeu. 30 oct. 2008 08:48
Status : Hors ligne

Re: [..] Création d'un trombinoscope. Besoin d'aide.

#20

Message par BeCool »

voilà, j'ai modifié ça.
Résultat :

Code : Tout sélectionner

[Information]
Nom=Tintin
[]
Prenom=Toto
Service=Informatique
Fonction=Apprentis
Numero de telephone externe=xx xx xx xx xx
Numero de telephone interne=xx xx
Mail=blabla@ville-vif.fr
 
Il y a un [] qui se balade en plein milieu, je ne sais pas pourquoi. J'ai regardé plusieurs fois la partie de script concernée, et ceci n'a pas lieu d'être mais bon, au final ce n'est pas bien graver car ça ne gène en rien le fonctionnement.

Voici la partie concernée :

Code : Tout sélectionner

Case $Rechercher
     $filee = "_" & GuictrlRead($Recherche) & ".ini"
     If FileExists($filee) Then
          GUICtrlSetData($Nom_label_info, IniRead ( $filee, "Information", "Nom", ""))
          GUICtrlSetData($Prenom_label_info, IniRead ( $filee, "", "Prenom", ""))
          GUICtrlSetData($Service_label_info, IniRead ( $filee, "", "Service", ""))
          GUICtrlSetData($Fonction_label_info, IniRead ( $filee, "", "Fonction", ""))
          GUICtrlSetData($Num_tel_ext_label_info, IniRead ( $filee, "", "Numero de telephone externe", ""))
          GUICtrlSetData($Num_tel_int_label_info, IniRead ( $filee, "", "Numero de telephone interne", ""))
          GUICtrlSetData($Mail_label_info, IniRead ( $filee, "", "Mail", ""))
          GUICtrlSetData($Resultat, "")
Par contre, auriez-vous de la documentation ou des exemples concret de script avec les fonction SQLite ?
Parce que j'ai regardé hier dans la doc de AutoIt, et je n'ai pas compris grand choses ... :roll:
Répondre