Forum Liberty Basic France

Le 17/10/2018 à 16h54

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 20
Bonjour !
Je suis en train de réaliser un programme où je souhaite traiter (une par une) deux fenêtres graphiques.
Voici le problème :

Si j'intitule mes deux fenêtres main.graph1 et main.graph2, je peux évidemment faire ceci :

if fenêtreactive=1 then
#main.graph1,"...
#main.graph1,"...
else
#main.graph2,"...
#main.graph2,"...
end if

Malheureusement, cela m'oblige à dédoubler systématiquement toutes les (nombreuses) instructions graphiques (qui sont les mêmes pour les deux fenêtres).

J'ai essayé d'indexer les fenêtres : main.graph(i), mais évidemment ça ne marche pas.

Ne peut-on pas attribuer à main.graph2 le handle de main.graph1 ou quelque chose comme ça ? Cela serait une sorte de "reroutage" automatique des instructions de main.graph1 vers main.graph2.

Merci de vos lumières !

1180michel

   
Le 17/10/2018 à 19h46

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2090
Teste ça:
(note que j'ai testé avec: #main.graph1; #main.graph2 et ça ne veut pas marcher (nom trop long ??? ou boulette de ma part)
Avec #wbt.1; #wbt.2; ça marche
re note que la mise en hand$ doit être dans la boucle et non avant (dehors)
Code VB :
 
     NOMAINWIN
    WindowWidth = 600
    WindowHeight = 400
    UpperLeftX = (DisplayWidth-WindowWidth)-200
    UpperLeftY = 20 ' (DisplayHeight-WindowHeight)
    GRAPHICBOX #w.bt1 5, 5, 100, 360
    GRAPHICBOX #w.bt2 120, 5, 100, 360
    OPEN "test" FOR window_nf AS #w
    #w, "TRAPCLOSE [closetest]"
for x=1 to 2
   hand$="#w.bt" + str$(x)
   #hand$, "down"
   #hand$, "fill blue"
next x
  wait
  [closetest]
    CLOSE  #w
    END
 
____________________
Roro

   
Le 18/10/2018 à 11h28

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 20
Merci beaucoup ! Ca marche même avec des noms plus longs, par exemple :
Code VB :
 
    NOMAINWIN
    WindowWidth = 600
    WindowHeight = 400
    UpperLeftX = (DisplayWidth-WindowWidth)-200
    UpperLeftY = 20 ' (DisplayHeight-WindowHeight)
    GRAPHICBOX #main.graph1 5, 5, 100, 360
    GRAPHICBOX #main.graph2 120, 5, 100, 360
    OPEN "test" FOR window_nf AS #main
    #main, "TRAPCLOSE [closetest]"
   hand$="#main.graph"
 
   hand1$=hand$+"2"
   #hand1$, "down ; place 10 10"
   #hand1$, "\OKOKOK2"
   hand1$=hand$+"1"
   #hand1$, "down ; place 10 10"
   #hand1$, "\OKOKOK1"
 
  wait
  [closetest]
    CLOSE  #main
    END
 

See You later !

1180michel

   
Le 18/10/2018 à 12h20

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2090
Tu a dis que les instructions étaient les mêmes pour les deux fenêtres, c'est pourquoi je t'ai proposé de les mettre dans une boucle; ce qui n'est pas possible si les instructions sont différentes, comme dans ton dernier msg ("\OKOKOK2"; "\OKOKOK1").
Pour deux instructions c'est moins rentable que pour dix; mais ça le devient si l'action est répétée car alors tu peux mettre la boucle en sous programme; et si tu la mets en "sub; tu peux passer l'instruction en paramètre (en faisant gaffe à la portée des variables).
Tu peux aussi mettre l'instruction en chaine$ et définir son contenu avant d'envoyer en "gosub" vers la boucle
____________________
Roro

   
Le 23/10/2018 à 17h30

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 20
Oui, oui, c'était juste pour montrer que la longueur du nom de la fenêtre n'avait pas d'importance...

Merci encore !

   

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie