FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Planétarium virtuel.
par Pedro Alvarez Hier à 16:57

» Roues dentées
par jean_debord Hier à 10:40

» Attention arnaque !
par mindstorm Jeu 19 Juil 2018 - 19:18

» Qui fait quoi ?
par silverman Mer 18 Juil 2018 - 15:21

» ITEM_SELECT N,L pour synedit
par silverman Mer 18 Juil 2018 - 15:20

» Boussole
par jean_debord Mer 18 Juil 2018 - 11:06

» Roue à n faces
par Marc Dim 15 Juil 2018 - 22:16

» Exemple d'une nouvelle version d'un GRID
par Jean Claude Ven 13 Juil 2018 - 10:32

» Une simple question
par Oscaribout Sam 7 Juil 2018 - 23:20

» BUG sur l'objet TAB
par Jack Sam 7 Juil 2018 - 21:12

» Monopoly moderne
par jjn4 Sam 7 Juil 2018 - 15:06

» Récapitulatif ludothèque panoramic jjn4
par jjn4 Ven 6 Juil 2018 - 17:41

» Lignes ondulées
par JL35 Ven 6 Juil 2018 - 17:39

» bug off_activate 0 : sans d'effet
par silverman Ven 6 Juil 2018 - 13:02

» Position des objets d'un conteneur dans FBPano et Panoramic
par Navigateur Ven 6 Juil 2018 - 12:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2018
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Quelle option est cochée ?

Aller en bas 
AuteurMessage
Klaus

avatar

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

MessageSujet: Quelle option est cochée ?   Dim 19 Fév 2017 - 13:33

Lorsqu'on a un CONTAINER_OPTION avec toute une liste d'options, ou lorsqu'on a simplement une série d'options dans une form, ou lorsqu'on a une série de lignes de menus qui sont susceptibles d'être cochées, une question se pose: quelle(s) est(sont) la(les) objets cochées ?

Actuellement, il faut utiliser la fonction CHECKED() sur chaque objet pour savoir s'il est coché ou non. C'est très fastidieux en cas de larges possibliltées.

Il serait intéressant d'avoir une nouvelle fonction pour les OPTION_CONTAINER:
CHECKED_OPTIONS(N)
avec N étant le numéro d'un objet CONTAINER_OPTION. La fonction retournerait le numéro de l'objet de type OPTION qui est cochée dans l'objet N, ou zéro si aucune option n'est cochée.

De façon analogue, il serait intéressant de savois quelle(s) ligne(s) de menu est(sont) cochée(s). Je propose donc une commande pouvant retourner des valeurs multiples (la liste des lignes de menu cochées dans un menu), selon le modèle suivant:
CHECKED_MENU N,D
avec N étant le numéro d'un MAIN_MENU ou SUB_MENU et D étant le numéro d'un objet DLIST. La commande remplirait la DLIST par les numéros des lignes cochées de type SUB_MENU à l'intérieur de l'objet N, ou effacerait simplement l'objet D si aucune ligne n'est cochée.


Dernière édition par Klaus le Lun 20 Fév 2017 - 9:55, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
silverman

avatar

Nombre de messages : 659
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: Quelle option est cochée ?   Dim 19 Fév 2017 - 23:26

Pour 'option', essaye avec la variable système 'NUMBER_CLICK', ça marche:
Code:
label affichage

dim i
for i=1 to 5
   option i : caption i,"test" : top i,i*20
   on_click i,affichage
next i

end
affichage:
  caption 0,str$(number_click)
return
Le clavier est également pris en compte.
Par contre, je n'ai pas testé pour les menu.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Quelle option est cochée ?   Dim 19 Fév 2017 - 23:47

Je sais bien, Silverman ! Le problème n'est pas de détecter l'option ou le menu, coché au moment où on le coche.

Mon problème est le suivant: j'utilise les options et les lignes des menus pour définir des paramètres de configuration. Imagine un programme de transmission de données par ligne série V24 (je sais, cela semble ancien, mais c'est le principe qui compte). Or, dans ce contexte, il faut configurer plusieurs options:
- vitesse (75, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400 bauds)
- nombre de bits de données (7 ou 8 bits)
- parité (aucune, pair ou impaire)
- contrôle de ligne (CTS/RTS, DTS/DTR, etc)

On configure toutes ce options au départ, possiblement par le chargement d'un fichier de configuration (profil). Et c'est plus tard, au moment de l'exécution, que je veux connaître la vitesse configurée. Faut-il alors parcourir toutes les options du contaner_option contenant les options de vitesse, pour savoir laquelle est cochée ? J'aimerais, avec une seule fonction, récupérer le numéro du seul objet OPTION du CONTAINER_OPTION concerné, qui est cochée. Tu vois la différence et l'utilité de la fonction que le propose ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

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

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 1:08

En ce qui concerne l'objet OPTION coché dans un OPTION_CONTAINER, je peux trouver le hande dans KGF.dll, par un petit code Delphi:
Code:

var
  cwlist: TStringList;

function WindowEnumProc(hwnd:HWnd;lParam:LPARAM):boolean; stdcall;
var
  ClassName: array [0..255] of char;
begin
  FillChar(ClassName, SizeOf(ClassName), #0);
  GetClassName(hwnd, ClassName, SizeOf(ClassName) -1);
  if String(ClassName)='TRadioButton' then begin
    if SendMEssage(hwnd,BM_GETCHECK,0,0)=BST_CHECKED then cwlist.Add(inttostr(hwnd));
  end;
  result := true;
end;

function GetCheckedOptionHandle(hnd: HWND):integer; stdcall; export;
var
  s: string;
begin
  result := 0;
  cwlist := TStringList.Create;
  EnumChildWindows(hnd,@WindowEnumProc,0);
  s := '000'+cwlist.Text;
  result := StrToInt(LeftStr(s,length(s)-2));
  cwlist.Free;
end;

La fonction GetCheckedOptionHandle retourne le handle de l'option cochée dans le CONTAINER_OPTION dont on a passé le handle en paramètre, ou zéro si aucune option n'est cochée. Mais ça ne résoud pas mon problème - il faut toujours parcourir la liste des objets pour trouver à quel objet correspond le handle retourné.

Non - je veux vraiment avoir ne numéro d'objet de l'OPTION cochée dans le OPTION_CONTAINER, et idem pour le numéro d'objet du SUB_MENU coché en passant le handle du MAIN_MENU ou du SUB_MENU supérieur en paramètre.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5980
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 3:13

Le code suivant ne peut pas faire l'affaire ?

Code:

dim i
container_option 10 : height 10,400
for i = 20 to 200 step 10
    option i : parent i,10
    top i,10+(i-20)*2 : left i,10 : caption i,"option "  + str$(i)
next i
mark_on 20*int(rnd(10)+1) : ' On coche une option au hasard
' on cherche quelle option est cochée
for i = 20 to 200 step 10
    if checked(i) > 0
       message "L'option " + str$(i) + " est cochée"
       exit_for
    end_if
next i


Une boucle FOR / NEXT n'est pas si pénalisante du point de vue performance.
L'unique objection concerne le numérotage des objets : ils doivent porter des numéros en progression arithmétique ce qui est toujours possible de réaliser.
Mais, tu as peut-être une autre idée derrière la tête.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 9:54

Oui, Papydall, c'est bien ainsi que je le réalise en ce moment. Mais je trouve ça lourd de répéter cette technique à différents endroits du programme, pour und dizaine de séries d'options indépendantes. Et c'est encore plus contraignant pour les lignes cochées des menus, car il peut y en avoir plusieurs, pas forcément contigues, dans un menu.

J'ai d'ailleurs modifié mon post initial au siujet des menus pour suggérer, non pas une fonction, mais plutôt une commande à deux paramètres. Cela me semble plus dans la logique de Panoramic.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
silverman

avatar

Nombre de messages : 659
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 11:37

@klaus
Ok, je n'avais pas bien saisie.
Pour que cette nouvelle fonction 'checked_option(N)' fonctionne, if faudrait que le bug du 'container_option' soit réglé(l'évènement 'on_click' n'est plus détecté) à mon avis.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 13:14

Pour moi, on_click sur des options marche. Regarde:
Code:
label clic
container_option 1
option 2 : parent 2,1 :caption 2,"aaa" : top 2,10 : left 2,10  : on_click 2,clic
option 3 : parent 3,1 :caption 3,"bbb" : top 3,30 : left 3,10  : on_click 3,clic
option 4 : parent 4,1 :caption 4,"ccc" : top 4,50 : left 4,10  : on_click 4,clic
end

clic:
  message "clic sur option "+str$(number_click)
  return
Je ne rencontre aucun problème avec ça...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5980
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 14:30

Oui Klaus, le ON_CLICK sur OPTION marche, mais Silvermann a parlé du ON_CLICK sur CONTAINER_OPTION qui lui n'est pas pris en compte.
D’ailleurs il ne déclenche rien ni erreur ni Ok

Code:

label clic
container_option 10 : on_click 10,clic
end
clic:
   message "Ce S/P n'est jamais exécuté"
return


Par contre le click sur un CONTAINER est pris en charge.

Code:

label clic
dim i
container 1 : on_click 1,clic
option 2 : parent 2,1 :caption 2,"2" : top 2,10 : left 2,10
option 3 : parent 3,1 :caption 3,"3" : top 3,30 : left 3,10
option 4 : parent 4,1 :caption 4,"4" : top 4,50 : left 4,10
mark_on 3
end

clic:
   for i = 2 to 4
       if checked(i) > 0
          message "L'option " + str$(i) + " est cochée"
          exit_for
       end_if
   next i
   if i > 4 then message "Aucune option n'est cochée !"
return

"REMer" puis "déREMer" la ligne 7.
Cliquer dans le container, en dehors des options.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jack
Admin
avatar

Nombre de messages : 1868
Date d'inscription : 28/05/2007

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 16:17

@Klaus
Voici un exécutable sans éditeur qui contient la fonction CHECKED_OPTION()

*** lien inactivé ***

et voici un petit exemple de mise en oeuvre:

Code:
label affiche
container_option 10
caption 10,"J'ai 4 OPTIONs"
option 50:parent 50,10:top 50,20:left 50,20:caption 50,"Option 50"
option 60:parent 60,10:top 60,40:left 60,20:caption 60,"Option 60"
option 65:parent 65,10:top 65,60:left 65,20:caption 65,"Option 65"
option 70:parent 70,10:top 70,80:left 70,20:caption 70,"Option 70"
on_click 50,affiche
on_click 60,affiche
on_click 65,affiche
on_click 70,affiche
end
affiche:
caption 0,str$(checked_option(10))
return

La fonction renvoie le numéro d' OPTION sélectionné et -1 si rien n'est sélectionné.

_________________
username : panoramic@jack-panoramic password : panoramic123


Dernière édition par Jack le Jeu 23 Fév 2017 - 12:13, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Klaus

avatar

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

MessageSujet: Re: Quelle option est cochée ?   Lun 20 Fév 2017 - 18:07

Merci, Jack ! Pour la fonction CHECKED_OPTION, c'est exactement ça. Super.

En fait, j'ai remanié un peu le source proposé en enlevant les ON_CLICK sur les options, mais en ajoutant un bouton qui fait le test. Et ça marche exactement comme je l'imaginais.

J'ai également ajouté dans ce petit code un menu avec 2 lignes cochées, ainsi que la commande CHECKED_MENU selon ma suggestion, en documentant le résultat attendu (mis en commentaire pour le moment, bien sûr).

Voici ce que ça donne:
Code:
label affiche
main_menu 1
sub_menu 2 : parent 2,1 : caption 2,"Paramètres"
sub_menu 3 : parent 3,2 : caption 3,"aaaaaaa"
sub_menu 4 : parent 4,2 : caption 4,"bbbbbbbbb"
sub_menu 5 : parent 5,2 : caption 5,"ccccccccccc"
sub_menu 6 : parent 6,2 : caption 6,"dddddddddd"
mark_on 4
mark_on 5
dlist 99

container_option 10
caption 10,"J'ai 4 OPTIONs"
option 50:parent 50,10:top 50,20:left 50,20:caption 50,"Option 50"
option 60:parent 60,10:top 60,40:left 60,20:caption 60,"Option 60"
option 65:parent 65,10:top 65,60:left 65,20:caption 65,"Option 65"
option 70:parent 70,10:top 70,80:left 70,20:caption 70,"Option 70"
button 20 : left 20,300 : caption 20,"Tester" : on_click 20,affiche
end
affiche:
caption 0,str$(checked_option(10))
'  checked_menu 2,99  : ' <======= nouvelle commande suggérée
'  ici, on devrait avoir 2 lignes dans la DLIST:
'    4
'    5
return

Je te suis très reconnaissant de l'intérêt que tu portes à ma suggestion, et j'espère en voir le bout du nez dans une prochaine version de Panoramic !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 8077
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Re   Mar 21 Fév 2017 - 1:33

Très intéressant tout çà.
Bon, ben la 28i1 pour... demain... non ?..
lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

Nombre de messages : 1868
Date d'inscription : 28/05/2007

MessageSujet: Re: Quelle option est cochée ?   Jeu 23 Fév 2017 - 12:22

@Klaus
Voici un exécutable sans éditeur qui contient:
- la fonction CHECKED_OPTION()
- la commande CHECKED_MENU
http://panoramic-language.pagesperso-orange.fr/Reference/Executable/PANORAMIC.zip

CHECKED_OPTION(N) : retourne le numéro d'objet de l'OPTION sélectionnée dans le CONTAINER_OPTION numéro N
CHECKED_MENU N,D : remplit le DLIST numéro D avec les numéros des SUB_MENU sélectionnés dans l'objet numéro N
CHECKED_MENU se limite aux SUB_MENUs fils de l'objet numéro N. Les arborescences de sous-menus ne sont pas traitées.

Attention, la fonction OBJECT_PARENT() est remplacée par PARENT()

et voici un petit exemple de mise en oeuvre de CHECKED_MENU:
Code:
dim i%
main_menu 1
sub_menu 2 : parent 2,1 : caption 2,"Paramètres"
sub_menu 3 : parent 3,2 : caption 3,"aaaaaaa"
sub_menu 4 : parent 4,2 : caption 4,"bbbbbbbbb"
sub_menu 5 : parent 5,2 : caption 5,"ccccccccccc"
sub_menu 6 : parent 6,2 : caption 6,"dddddddddd"
mark_on 4
mark_on 5
dlist 99
checked_menu 2,99
if count(99)<>0
  for i%=1 to count(99):print item_read$(99,i%):next i%
end_if

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Klaus

avatar

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

MessageSujet: Re: Quelle option est cochée ?   Jeu 23 Fév 2017 - 12:48

Jack, la définition est exactement ce que je souhaitais. Seulement voilà: le code suivant:
Code:
label affiche
dim i%
main_menu 1
sub_menu 2 : parent 2,1 : caption 2,"Paramètres"
sub_menu 3 : parent 3,2 : caption 3,"aaaaaaa"
sub_menu 4 : parent 4,2 : caption 4,"bbbbbbbbb"
sub_menu 5 : parent 5,2 : caption 5,"ccccccccccc"
sub_menu 6 : parent 6,2 : caption 6,"dddddddddd"
mark_on 4
mark_on 5
dlist 99
list 100 : left 100,200 : top 100,40

container_option 10
caption 10,"J'ai 4 OPTIONs"
option 50:parent 50,10:top 50,20:left 50,20:caption 50,"Option 50"
option 60:parent 60,10:top 60,40:left 60,20:caption 60,"Option 60"
option 65:parent 65,10:top 65,60:left 65,20:caption 65,"Option 65"
option 70:parent 70,10:top 70,80:left 70,20:caption 70,"Option 70"
button 20 : left 20,300 : caption 20,"Tester" : on_click 20,affiche
end
affiche:
caption 0,str$(checked_option(10))
checked_menu 2,99  : ' <======= nouvelle commande suggérée
'  ici, on devrait avoir 2 lignes dans la DLIST:
'     4
'     5
if count(99)>0
  clear 100
  for i%=1 to count(99)
    item_add 100,item_read$(99,i%)
  next i%
end_if
return
produit malheureusement

Il a dû y avoir une confusion dans les fichiers Panoramic.exe...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jack
Admin
avatar

Nombre de messages : 1868
Date d'inscription : 28/05/2007

MessageSujet: Re: Quelle option est cochée ?   Jeu 23 Fév 2017 - 13:12

Non, il n'y a pas eu confusion.

Ton exemple fonctionne parfaitement avec PANORAMIC.zip du lien.

Je viens de télécharger et d'exécuter. Tout est correct.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Klaus

avatar

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

MessageSujet: Re: Quelle option est cochée ?   Jeu 23 Fév 2017 - 13:22

YES !!! Désolé, c'est moi qui ai mélangé des versions de Panoramic.exe !

C'est effectivement exactement ce que le proposais. Ce serait super de trouver cela dans une future version, officielle ou intermédiaire. Tu as limité CHECKED_MENU aus sous-menus directement dépendants de l'objet passé en paramètre, sans chercher dans les sous-menus. C'est exactement l'effet voulu, et je suis très reconnaissant pour cette réalisation !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Quelle option est cochée ?   

Revenir en haut Aller en bas
 
Quelle option est cochée ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» SILIC - CHALENGE BD
» Quelle partie de votre cerveau utilisez-vous ?
» Quelle heure est-il ?
» quelle année ?
» Quelle console préférez-vous ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: