IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Fenêtre Interne Multi-Tâches - Code sources


Sujet :

WinDev

  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut Fenêtre Interne Multi-Tâches - Code sources
    Bonjour,


    Aujourd'hui, je partage avec vous un bout de code que j'ai mit au point. En fait, le but est de pouvoir utiliser plusieurs fenêtres interne sans forcément les fermer.

    Je m'explique, j'ai une zone (235, 97/1037x919) qui me sert à afficher les fenêtres interne.

    J'ai crée 15 petits champs fenêtre interne (100x100) en dehors de ma fenêtre principal. Je les nommerais "FI_SlotNum1" "FI_SlotNum2" ... "FI_SlotNum15" (Vous pouvez en crée autant que vous voulez, mon code fonctionne peut importe le nombre de "slot" disponible)


    Voici le code : Crée une procédure locale appelé "Nom_de_Procédure_De_Votre_Choix" et copier-y ce code.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    //Résumé de la fonction.
    //Cette fonction à pour but de garder a mémoire(hors écran) les fenêtre interne.
    //15 slot on été crée. Le développeur peut en crée comme il veut.
     
     
    //A chaque appel de la fonction, voici comment ça ce passe;
    //1.On regarde si une fenêtre interne n'est pas déjà en utilisation. Si OUI, on doit la remettre a sa place d'attente (hors-écran)
    //2.On regarde si la fenêtre qui doit être ouverte ne se trouve pas déjà dans une des slot(éviter les doublons et les bug)
    //3.Si la fenêtre n'existe pas, on regarde si une slot est disponible. Si OUI, on assigne la fenêtre à cet slot et on l'affiche. Si NON, on ouvre la fenêtre de fermeture de fenêtre.
     
     
     
     
     
    PROCEDURE CheckForAvailableSlot(windows)
    x est un entier = 1 //Numéro de slot
     
    //ETAPE1 : On regarde si une fenêtre n'est pas déja en place. Si OUI, on doit la remettre a sa place d'attente sauf si la fenêtre demander est déjà affichée
    sChamp est une chaîne = ChampInfoXY(235,97,FEN_Main) //Coin supérieur haut gauche de ma zone d'affichage
     
    SI Gauche(sChamp,10)="FI_SlotNum" ALORS
     
    	SI {sChamp}..FenêtreSource=windows ALORS
    		RETOUR //La fenêtre appeler est déjà affiché.
    	SINON
     
    		{sChamp}..X ={sChamp}..XInitial 
    		{sChamp}..Y ={sChamp}..YInitial
    		{sChamp}..Hauteur ={sChamp}..HauteurInitiale
    		{sChamp}..Largeur ={sChamp}..LargeurInitiale
    	FIN
    FIN

    (PS. Dans vos fenêtre Interne, les coordonnées 0,0 ne doivent comporter aucuns champs. Sinon la fonction ne renvoie pas la bonne choses)

    (Et pour ceux qui me dirons, ne serait-il pas plus facile de mettre un champs fenêtre interne et appeler la fenêtre? Et bien non, car la fenêtre appeler se verra réinitialisé a chaque appelle, d'où le but de mon code, permettre au fenêtre interne de continuer le traitement en tâche de fond.)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    //ETAPE2 :	On regarde si la fenêtre qui doit être ouverte ne se trouve pas déjà dans une des slot(éviter les doublons et les bug)
     
    BOUCLE (15) //À changer selon le nombre de champs fenêtre interne crée. Dans mon cas, 15
    SI {"FI_SlotNum"+x}..FenêtreSource=windows ALORS
    	//La fenêtre existe déja dans une des slot
    		//On l'affiche! Simple changement de coordonnées.
    		{"FI_SlotNum"+x}..Largeur=1039
    		{"FI_SlotNum"+x}..Hauteur=921
    		{"FI_SlotNum"+x}..X=235
    		{"FI_SlotNum"+x}..Y=97
     
    		RETOUR
    FIN
    	x++
    FIN
    x =1
     
     
    //ETAPE3 : Si la fenêtre n'existe pas, on regarde si une slot est disponible. Si OUI, on assigne la fenêtre à cet slot et on l'affiche. Si NON, on ouvre la fenêtre de fermeture de processus.
     
    BOUCLE (15) //À changer selon le nombre de champs fenêtre interne crée. Dans mon cas, 15
    		SI {"FI_SlotNum"+x}..FenêtreSource="" ALORS
     
    ChangeFenêtreSource({"FI_SlotNum"+x},windows)
    		//On l'affiche! Simple changement de coordonées
    		{"FI_SlotNum"+x}..Largeur=1039
    		{"FI_SlotNum"+x}..Hauteur=921
    		{"FI_SlotNum"+x}..X=235
    		{"FI_SlotNum"+x}..Y=97
     
    		RETOUR
    	FIN
    	x++
    FIN
     
     
     
    SI x>15 ALORS //À changer selon le nombre de champs fenêtre interne crée. Dans mon cas, 15
    //on doit fermer des fenêtres inutilisé
    //ouvre(FEN_CloseWindows) //Ouvre une genre de fenêtre montrant tout les slot utilisé pour permettre à l'utilisateur de "flusher" les fenêtres qu'il n'utilise pas.
    RETOUR
    FIN
    Ensuite, un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CheckForAvailableSlot("NomDeTaFenêtreInterne")

    Bien sur, à partir de ce moment, vous pouvez créer vous même vos propre code de notifications pour avertir l'utilisateur qu'une fenêtre interne nécessitent sont attention.

    J’espère avoir donnée une petite fonctionnalité fort sympathique à vos projet. Si vous avez des améliorations à apporter, n'hésiter pas a les poster!

    Sinon un simple merci suffi

    Bonne prog!

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Merci pour le partage.

    J'ai juste une question : est-ce que tu n'as pas refait ce que les fonctions MDI font ? c'est à dire gérer plusieurs fenêtres internes dans une fenêtre principale ...

    à bientôt,

    Nicolas

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 283
    Points : 263
    Points
    263
    Par défaut
    J'ai déjà utiliser les MDI mais j'ai détester ça. Je travaille énormément avec le "flat" design et beaucoup d’amination de mouvement. Je n'est pas sentit la même liberté avec le MDI. On peut dire que ça fait la même chose mais 1 pages est affiché à la fois! (dans mon cas). Comme mes fenêtres interne on a priori tous le même gabarit. Je n'est pas à me casser la tête sur les ancrages et tous. Mes champs sont placés à des endroits stratégique et j'aime mieux ça comme ça.

    Mais non, je n'ai aucunement penser au mdi en créant le code.

Discussions similaires

  1. Code source dans le browser interne d'Eclipse
    Par paragoge dans le forum Eclipse
    Réponses: 6
    Dernier message: 11/12/2009, 22h16
  2. compiler code source en "interne"
    Par kespy13 dans le forum Général Java
    Réponses: 5
    Dernier message: 30/04/2008, 15h46
  3. [Code Source] Moteur d'exécution multi-tâches
    Par SaumonAgile dans le forum Mon programme
    Réponses: 5
    Dernier message: 28/06/2007, 09h08
  4. [Code Source] Moteur d'exécution multi-tâches
    Par SaumonAgile dans le forum Contribuez
    Réponses: 2
    Dernier message: 17/06/2007, 14h40
  5. Réponses: 4
    Dernier message: 01/03/2007, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo