Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Utilisation de MAIN_MENU | |
| | Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Utilisation de MAIN_MENU Ven 9 Mai 2014 - 10:54 | |
| Bonjour a tous ! Quelqu'un aurait il une idée pour tester si un MAIN_MENU (Menu déroulant) existe dans le programme ou la fenêtre active ? En supposant bien entendu que je ne connais pas le numéro du main menu (s'il existe)... J’espère être assez clair... Merci pour vos réponses. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilisation de MAIN_MENU Ven 9 Mai 2014 - 11:38 | |
| A mon avis, il n'y en a pas.
Le seul moyen, c'est de s'imposer une convention de programmation: utiliser systématiquement l'objet 1 comme main_menu, en le créant au début du programme, même si les sous-menus sont créés plus tard. On teste alors l'existence de l'objet 1. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Utilisation de MAIN_MENU Ven 9 Mai 2014 - 11:49 | |
| Oui c'est bien ce que je pense...
Merci Klaus | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilisation de MAIN_MENU Ven 9 Mai 2014 - 12:21 | |
| Eh oui, le problème, c'est que Panoramic ne génère pas d'erreur si l'on crée un deuxième main_menu pour une même form. Un léger manque... | |
| | | Invité Invité
| Sujet: Re: Utilisation de MAIN_MENU Ven 9 Mai 2014 - 14:41 | |
| - Citation :
- Le seul moyen, c'est de s'imposer une convention de programmation: utiliser systématiquement l'objet 1 comme main_menu, en le créant au début du programme, même si les sous-menus sont créés plus tard. On teste alors l'existence de l'objet 1.
En lisant cela , je me demande si il ne serait pas nécessaire de se faire une norme entre Panoramicien. Car maintenant pour tout programme qui est conséquent, j'applique ceci: OPEN_DIALOG 1 : SAVE_DIALOG 2. J'ai vu dernièrement je ne sais plus pour quel programme qui a été présenté, l'emploi de N° d'objet dans les 9900 (je ne sais plus combien) et que c'était des numéro qu'on n'utilisait normalement pas. Ors c'est justement ceci que j'utilise. Les numéro que j'avais utilisé pour faire un débogueur d'un code Panoramic, je les ai revu pris par un autre. C'est vrai qu'ils ne m'appartiennent pas, mais voila! Pour des programmes qui peuvent être commun à tous, il faudrait s'entendre. Je laisse le débogueur de côté, je sais qu'il ne servira plus (comme bien d'autre de mes programmes). EDIT: Bon je vois que vous ne partagez pas cette idée: tenir à jour une liste de numéros réservés lorsque qu'une procédure possède des objets et peut-être récupéré par des includes (entre autre). N'en parlons plus. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 0:09 | |
| Pour ma part, je gère cela en mémorisant les numéros d'objets dont j'ai besoin, dans des variables dont le nom explique clairement de quoi il s'agit. Exemple: - Code:
-
dim no%, no_open%, no_save%, no_mon_memo% dim no_main_menu%, no_menu_fichiers%
no% = no% + 1 : open_dialog no% : no_open% = no% no% = no% + 1 : save_dialog no% : no_save% = no% no% = no% + 1 : memo no% : no_mon_memo% = no% top no%,40 : left no%,20 : bar_both no% no% = no% + 1 : main_menu no% : no_main_menu% = no% no% = no% + 1 : sub_menu no% : no_menu_fichiers% = no% caption no%,"Fichiers" : parent no%,no_main_menu% ...
Et par la suite, je n'ai plus qu'à me servir de ces variables pour accéder ou identifier un objet. Et je crois bien qu'au départ, c'était ton idée, Cosmos70, avec la volonté de "nommer" les objets... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 3:03 | |
| En s'imposant la méthode de Klaus pour désigner les objets, on peut tester la présence ou non de n'importe quel objet_système. Il suffit de déclarer par DIM le nom de l'objet à tester sous la forme - Code:
-
dim no_objet_a_tester% puis faire le test - Code:
-
IF handle(no_objet_a_tester%) = handle(0) ' L'objet_a_tester n'est pas défini ELSE ' L'objet_a_tester existe bel et bien END_IF
Voici un exemple. Testez avec la ligne 3 en REM ou non - Code:
-
dim no%, no_main_menu% ' tester avec la ligne 3 en REM no% = no% + 1 : main_menu no% : no_main_menu% = no% if handle (0) = handle(no_main_menu%) message "Main_menu n'est pas defini" else message "Main_menu existe" end_if
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 5:16 | |
| - Sans blablabla :
- Code:
-
rem ============================================================================ rem Tester si un objet-système existe ou non rem ============================================================================ rem La liste des objets est : rem BUTTON, EDIT, MEMO, COMBO, ALPHA, FORM, LIST, CHECK, OPTION, rem MAIN_MENU, SUB_MENU, SOUND, MOVIE, TRACK_BAR, OPEN_DIALOG, SAVE_DIALOG, rem SCROLL_BAR, PROGRESS_BAR, SCENE2D, SCENE3D. rem ============================================================================ ' On définit les objets par ' DIM no_Objet% ' Le teste se fait comme ceci: ' Objet_exist(no_Objet%) ' La procédure retourne dans la variable globale Objet_Exist% ' la valeur 1 si l'objet existe ' la valeur 0 dans le cas contraire rem ============================================================================
DIM_Objet() : ' Déclarer les objets ' Exemple d'objets définis dans votre programme no% = no% + 1 : movie no% : no_movie% = no% no% = no% + 1 : scroll_bar no% : no_scroll_bar% = no% no% = no% + 1 : form no% : no_form% = no% no% = no% + 1 : main_menu no% : no_main_menu% = no% no% = no% + 1 : button no% : no_button% = no% ' Appel Objet_exist(no_Button%) : message objet_exist% Objet_exist(no_Form%) : message objet_exist% Objet_exist(no_Memo%) : message objet_exist% Objet_exist(no_Combo%) : message objet_exist% Objet_exist(no_Edit%) : message objet_exist% Objet_exist(no_List%) : message objet_exist% Objet_exist(no_Scene2D%) : message objet_exist% Objet_exist(no_Scene3D%) : message objet_exist% Objet_exist(no_Movie%) : message objet_exist% Objet_exist(no_Sound%) : message objet_exist% Objet_exist(no_Option%) : message objet_exist% Objet_exist(no_Check%) : message objet_exist% Objet_exist(no_Main_Menu%) : message objet_exist% Objet_exist(no_Sub_Menu%) : message objet_exist% Objet_exist(no_Progress_Bar%): message objet_exist% Objet_exist(no_Scroll_Bar%) : message objet_exist% Objet_exist(no_Track_Bar%) : message objet_exist% Objet_exist(no_Open_Dialog%) : message objet_exist% Objet_exist(no_Save_Dialog%) : message objet_exist%
end rem ============================================================================ ' Liste des objets système ayant un HANDLE SUB DIM_Objet() dim Objet_Exist%, no% dim no_Button%,no_Form%,no_Memo%,No_Combo%, no_Edit%,no_List%,no_Scene2D% dim no_Scene3D%, no_Movie%,no_Sound%,no_Option%, no_Check%,no_Main_Menu% dim no_Sub_Menu%,no_Progress_bar%,no_Scroll_bar%, no_Track_bar% dim no_Open_Dialog%,no_Save_Dialog%
END_SUB rem ============================================================================ ' teste l'existance de l'objet système transmis comme paramètre SUB Objet_exist(no_objet%) if handle(no_objet%) <> handle(0) Objet_Exist% = 1 : ' "Cet objet existe" else Objet_Exist% = 0 : ' "Cet objet n'est pas défini" end_if END_SUB rem ============================================================================
| |
| | | Invité Invité
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 6:30 | |
| Je ne suis pas trop sûre aujourd'hui de devoir répondre. J'ai pour principe de me mettre sur le côté et de regarder faire les choses. Pour ce qui est de mettre une variable no% qu'on incrémente, je crois que j'en étais à l'origine, et si je me trompe, je vous prie de m'en excuser. Franchement cette méthode bien pratique, je n'aime pas l'utiliser. Il y a des atomes crochus qui parfois ne fonctionnent pas. Je m'étais dit que ce ne serait pas idiot d'avoir une liste au départ d'objets (disons système Panoramic). La plupart des programmes utilise open_dialog, save_dialog main_menu, et peut-être des procédures de base pour faire ces programmes. Je me fais tout petit dans cette histoire, vu que j'ai tendance d'être un frondeur, à m'écarter du droit chemin. Mais pourquoi ne pas partir sur un code déjà tout fait sur ce qu'on fait tout le temps, qui serait un module de départ. Si l'un de vous a un programme qui serait intéressant à être intégré dans ce code de départ, après acceptation des principaux protagonistes, ce code est adapté. Il peut même y avoir un micro programme qui a une liste des parties concernées, et on valide chaque partie utile pour sortir le source qui constituera le début du programme, peut-être avec le code dans le presse papier. Il y a ici des pros de l'informatique qui savent mieux que moi ce qui est bien ou non. Je n'ai que des idées, mais ça s’arrête là! Surtout qu'elles ne sont pas toutes bonnes (mais généralement c'est pas moi qui le dit, sinon je n'en parle pas). |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 9:09 | |
| @cosmos70: à chacun sa méthode. Toutes les solutions sont respectables, et il n'y a pas de méthode miracle qui serait meilleure dans tous les cas. Pour ma part, j'ai intégré le "no%+1" dans mon module #INCLUDE "KGF_OBJ.bas", avec lequel je déclare tous mes objets. et ça permet d'intercaler un objet n'importe ou, en gardant l'écart relatif de numérotation pour tous les autres objets. Si par exemple, je crée 6 objets: n -> container n+1 -> alpha n+2 -> edit n+3 -> check 1 n+4 -> check 2 n+5 -> button Alors, dans le ON_CLICK du button, je sais que NUMBER_CLICK-2 désigne check 1, et NUMBER_CLICK-1 désigne check 2. Si maintenant, j'insère un objet memo entre edit et check 1, je n'ai pas à changer le numéro d'objet pour check 1, check 2 et button, button continue de suivre check 2, etc. Ainsi, je sais que les 6 objets de n+1 à n+6 sont ceux du container.
@Papydall: Belle application, mais malheureusement incomplète. Car il y a plein d'objets qui n'ont pas de handle. Tous les objets invisibles de toutes façons, comme open_dialig, dlist et timer, mais également certains objets visibles comme alpha ou picture. Je pense que la solution consiste simplement à tester si la variable associée au nom existe et si oui, si son contenu est différent de zéro. Alors, et seulement alors, l'objet exists. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 11:25 | |
| Je vois peu d’intérêt de savoir, par exemple, si main_menu (ou tout autre objet) existe ou non dans mon programme. A quoi ça pourrait m’avancer ? Si je veux un open_dialog, je n’ai qu’à le déclarer, non ?
Mais, il se peut qu’il y ait une raison que ma raison n’a pas captée ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 11:38 | |
| La raison, c'est par exemple la réusibilité des bibliothèques de procédures par exemple. Si tu en utilise plusieurs ensemble ou pas, plusieurs peuvent utiliser une fenêtre de dialogue, un player ou autre ... Ce test permet de le savoir. C'est vrai que c'est pour un usage un peu particulier mais qui facilite la vie pour les utilisateurs et qui la complique un peu pour ceux qui veulent fournir des DLL facilement utilisable par tous. Comme on dit, c'est compliqué de faire simple... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilisation de MAIN_MENU Sam 10 Mai 2014 - 12:06 | |
| | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Utilisation de MAIN_MENU Dim 11 Mai 2014 - 18:16 | |
| Bonjour a tous !!! Ayant ouvert ce post, je viens vous expliquer pourquoi j'ai posé cette question ! Sur un autre sujet j'ai créé un nouvel outil comme il en existe déjà sur le forum mais je souhaitais lui ajouter la création d'un MAIN_MENU. Klaus m'a donné l'idée dès le début et créant le MAIN_NENU dès le départ. Il s'agit d'un début et cela peut facilement être amélioré pour d'autres objets. Voici le lien : https://panoramic.1fr1.net/t3629-petite-sub-pour-creer-des-objets-facilement#41457J'ai donc repris l'idée de faire une numérotation auto mais avec la simplification de la création de menu et d'objet sous forme de sub. En espérant que cela sera utile a certains... | |
| | | Contenu sponsorisé
| Sujet: Re: Utilisation de MAIN_MENU | |
| |
| | | | Utilisation de MAIN_MENU | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |