FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Problème de fenêtre modale. Emptypar Klaus Aujourd'hui à 9:53

» Je teste PANORAMIC V 1 beta 1
Problème de fenêtre modale. Emptypar Klaus Aujourd'hui à 9:52

» bouton dans autre form que 0
Problème de fenêtre modale. Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
Problème de fenêtre modale. Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
Problème de fenêtre modale. Emptypar Klaus Hier à 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème de fenêtre modale. Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Problème de fenêtre modale. Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Problème de fenêtre modale. Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Problème de fenêtre modale. Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Problème de fenêtre modale. Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Problème de fenêtre modale. Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Problème de fenêtre modale. Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Problème de fenêtre modale. Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Problème de fenêtre modale. Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Problème de fenêtre modale. Emptypar jjn4 Lun 22 Avr 2024 - 13:43

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Funko POP! Jumbo One Piece Kaido Dragon Form : ...
Voir le deal

 

 Problème de fenêtre modale.

Aller en bas 
3 participants
AuteurMessage
Pedro

Pedro


Nombre de messages : 1555
Date d'inscription : 19/01/2014

Problème de fenêtre modale. Empty
MessageSujet: Problème de fenêtre modale.   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 9:57

Bonjour.

Dans le code suivant, j'aimerais que la fenêtre n° 2 s'affiche en mode modal, et que le message ne s'affiche pas.
Avez-vous une solution ?
Merci de votre aide.

Ce code étant un extrait très simplifié du code de mon programme général.

Code:
dim res%

dll_on "kgf.dll"

width 0,1600
height 0,900

afficher_f1()
afficher_f2()

message ""

end

sub afficher_f1()
    form 1
    ' res%=DLL_call2("WindowTopMost",handle(1),1)
    res%=dll_call1("BringWindowToForeground",handle(1))

    width 1,500
    height 1,500
    left 1,500
    top 1,300
end_sub

sub afficher_f2()
    form 2
    ' res%=DLL_call2("WindowTopMost",handle(2),1)
    res%=dll_call1("BringWindowToForeground",handle(2))

    width 2,100
    height 2,100
    left 2,600
    top 2,400
end_sub
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Problème de fenêtre modale. Empty
MessageSujet: Re: Problème de fenêtre modale.   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 10:31

Voilà comment on fait les forms modales:
Code:
    label form1, form2, close1, close2
   
    dim res%

    dll_on "kgf.dll"

    width 0,1600
    height 0,900

    creer_f1()
    creer_f2()

    button 11 : top 11,10 :left 11,10 : caption 11,"Form 1" : on_click 11,form1
    button 12 : top 12,40 :left 12,10 : caption 12,"Form 2" : on_click 12,form2

    end

form1:
    afficher_f1()
    return
   
form2:
    afficher_f2()
    return
   
close1:
    hide 1
    active 0 : to_foreground 0
    return

close2:
    hide 2
    active 0 : to_foreground 0
    return

    sub afficher_f1()
      inactive 0
      show 1
    end_sub
   
    sub creer_f1()
        form 1
        hide 1 : on_close 1,close1
        ' res%=DLL_call2("WindowTopMost",handle(1),1)
        res%=dll_call1("BringWindowToForeground",handle(1))

        width 1,500
        height 1,500
        left 1,500
        top 1,300
    end_sub

    sub afficher_f2()
      inactive 0
      show 1
    end_sub
   
    sub creer_f2()
        form 2
        hide 2 : on_close 2, close2
        ' res%=DLL_call2("WindowTopMost",handle(2),1)
        res%=dll_call1("BringWindowToForeground",handle(2))

        width 2,100
        height 2,100
        left 2,600
        top 2,400
    end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1555
Date d'inscription : 19/01/2014

Problème de fenêtre modale. Empty
MessageSujet: Problème d'affichage de Form.   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 10:41

Bonjour.

Merci Klaus, mais la solution que tu me proposes est imparfaite.

En effet, le message ne devrait pas apparaître dans mon cas.
Le traitement des évènements après l'affichage de la 1ère form modale devrait être interrompu.


Code:
 label form1, form2, close1, close2

    dim res%

    dll_on "kgf.dll"

    width 0,1600
    height 0,900

    creer_f1()
    creer_f2()

    ' button 11 : top 11,10 :left 11,10 : caption 11,"Form 1" : on_click 11,form1
    ' button 12 : top 12,40 :left 12,10 : caption 12,"Form 2" : on_click 12,form2

    afficher_f1()
    message ""

    end

form1:
    afficher_f1()
    return

form2:
    afficher_f2()
    return

close1:
    hide 1
    active 0 : to_foreground 0
    return

close2:
    hide 2
    active 0 : to_foreground 0
    return

    sub afficher_f1()
      inactive 0
      show 1
    end_sub

    sub creer_f1()
        form 1
        hide 1 : on_close 1,close1
        ' res%=DLL_call2("WindowTopMost",handle(1),1)
        res%=dll_call1("BringWindowToForeground",handle(1))

        width 1,500
        height 1,500
        left 1,500
        top 1,300
    end_sub

    sub afficher_f2()
      inactive 0
      show 1
    end_sub

    sub creer_f2()
        form 2
        hide 2 : on_close 2, close2
        ' res%=DLL_call2("WindowTopMost",handle(2),1)
        res%=dll_call1("BringWindowToForeground",handle(2))

        width 2,100
        height 2,100
        left 2,600
        top 2,400
    end_sub
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Problème de fenêtre modale. Empty
MessageSujet: Re: Problème de fenêtre modale.   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 11:37

Ca ne peut pas du tout marcher comme ça. Et ce n'est pas parce que tu essaies d'utiliser une fonction de la DLL que ça changera quelque chose au fonctionnement de Windows.

Le seul moyen d'interrompre une séquence linéaire de code, c'est d'ouvrir une fenêtre de dialogue. Et c'est en la quittant que l'exécution continue. Ce sont des fenêtres du genre MESSAGE_CONFIRMATION_YES_NO etc. Il y a aussi des fonctions ShowMessageModal... dans KGF.dll.

Il faut bien voir que toutes les commandes Panoramic (sauf justement celles ouvrant un dialogue, comme MESSAGE et ses clones, et FILE_NAME$) s'exécutent et passent à la suite. Donc, ce n'est pas la commande FORM ni la commande SHOW qui interrompra une suite linéaire de commandes.

Il faut concevoir son programme de sorte à avoir une séquence linéaire initiale qui prépare l'environnement Windows, les initialisations générales, etc. Puis, des actions ponctuelles, déclenchées par des évènements Windows qui sont les ON_CLICK, ON_CHANGE, ON_KEY_DOWN, ON_TIMER etc. A chaque évènement est associé une routine évènement qui est par essence une séquence de code linéaire, la plus limitée possible, et qui se termine par RETURN. Et si dans une telle séquence, il doit être interdit de cliquer ailleurs dans le programme, alors il faut appliquer la technique que j'ai montré dans mon code exemple ci-dessus, en désactivant la form 0 (et d'autres forms qui pourrraient être visibles !) et de la ou les réactiver en sortant du traitement censé être "modal". Tu auras beau essayer toutes les astuces possibles, tu ne pourras pas sortir de ce principe qui est la base du fonctionnement de Windows. Cela ne dépend pas de Panoramic.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1555
Date d'inscription : 19/01/2014

Problème de fenêtre modale. Empty
MessageSujet: Problème de fenêtre modale.   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 13:18

Bonjour.

Merci Klaus pour toutes ces précisions.

Je continuerai donc à utiliser inactive 0, puis active 0 à la sortie.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Problème de fenêtre modale. Empty
MessageSujet: re   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 14:45

@ Pedro,

Que doit faire ta form "modal" ?
- agit elle sur ton programme pendant son affichage ?
- Propose t' elle un choix qui modifie une voir plusieurs variables ?
- affiche t elle un résultat ?

Avec un peu plus de précisions, on pourrait, peut être, t' apporter une solution...
Revenir en haut Aller en bas
Pedro

Pedro


Nombre de messages : 1555
Date d'inscription : 19/01/2014

Problème de fenêtre modale. Empty
MessageSujet: Problème de fenêtre modale.   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 16:27

Bonjour.

Ma form modale affiche des informations, possède les boutons OK et Annuler, puis attend la sélection d'un élément dans une combo.

Le traitement doit donc être interrompu à cet endroit.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Problème de fenêtre modale. Empty
MessageSujet: Re   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 16:39

Tu peux créer un petit programme, comme un "plug in"
Tu lances par execute_wait , cela met le programme en attente.
Ton bouton "ok" passes le résultat par les fonctions de KGF.dll de communication entre programmes, puis ferme la fenêtre.
Le programme principal reprend la main et traite les données passées....

C' est peu académique mais cela peut rendre service... Laughing
Problème de fenêtre modale. Captur30
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Problème de fenêtre modale. Empty
MessageSujet: Re: Problème de fenêtre modale.   Problème de fenêtre modale. EmptyMer 25 Fév 2015 - 19:11

@Pedro:
J'ai mis une nouvelle version en ligne qui apporte un petit truc pour résoudre ton problème. Dans le petit exemple qui suit, le bouton effectue 3 actions:
1. afficher le message "avant'
2. lancer une form en mode modal
3. afficher le message "après"
Et le message "après" ne vient que lorsqu'on ferme la form.
Code:
' MakeFormModal.bas

label modal

dim res%

form 1 : hide 1 : caption 1,"Form devant être modale"
memo 2 : parent 2,1

button 10 : top 10,10 : left 10,10 : caption 10,"Form modale"
  on_click 10,modal


dll_on "KGF.dll"

end

modal:
  message "avant"
 
  res% = dll_call3("SetFormProperties",object_internal(1),2,1)
 
  message "après"
 
  return
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Problème de fenêtre modale. Empty
MessageSujet: Re: Problème de fenêtre modale.   Problème de fenêtre modale. Empty

Revenir en haut Aller en bas
 
Problème de fenêtre modale.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» KGF_dll - nouvelles versions
» Problème d'envoi de touches à une fenêtre.
» Problème avec select case Probleme réglé merci
» Calculer la vitesse d'un PC
» Bordure de Fenêtre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: