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
» Logiciel de planétarium.
Quelle option est cochée ? Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Quelle option est cochée ? Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Quelle option est cochée ? Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Quelle option est cochée ? Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Quelle option est cochée ? Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Quelle option est cochée ? Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Quelle option est cochée ? Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Quelle option est cochée ? Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Quelle option est cochée ? Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Quelle option est cochée ? Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Quelle option est cochée ? Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Quelle option est cochée ? Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Quelle option est cochée ? Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Quelle option est cochée ? Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Quelle option est cochée ? Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Code promo Nike : -25% dès 50€ ...
Voir le deal

 

 Quelle option est cochée ?

Aller en bas 
5 participants
AuteurMessage
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Quelle option est cochée ?   Quelle option est cochée ? EmptyDim 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
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyDim 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
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyDim 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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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
http://papydall-panoramic.forumarabia.com/
Jack
Admin
Jack


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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é.

_________________
Quelle option est cochée ? Webdav 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
https://panoramic.1fr1.net
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyLun 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
http://klauspanoramic.comxa.com/index.html
Yannick




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

Quelle option est cochée ? Empty
MessageSujet: Re   Quelle option est cochée ? EmptyMar 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
Jack
Admin
Jack


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyJeu 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

_________________
Quelle option est cochée ? Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyJeu 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
Quelle option est cochée ? Aa110
Il a dû y avoir une confusion dans les fichiers Panoramic.exe...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyJeu 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.

_________________
Quelle option est cochée ? Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


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

Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? EmptyJeu 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
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Quelle option est cochée ? Empty
MessageSujet: Re: Quelle option est cochée ?   Quelle option est cochée ? Empty

Revenir en haut Aller en bas
 
Quelle option est cochée ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Quelle cellule d'un Grid est cliqué
» Quelle version ?
» Help !
» L'argot VERLAN
» Quelle est la résolution de mon écran?

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: