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 |
|
|
| Personnal Panoramic Editor | |
|
+9mindstorm sergeauze Klaus Jicehel Jack papydall Minibug Jean Claude Yannick 13 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 10 Fév 2015 - 11:38 | |
| Je vais voir ton souci Jean Claude, Klaus a raison je n' ai pas mis la réactivation du synedit actif dans mes fonctions, cela fait parti des finitions... si cette fonction clavier fonctionne avec Panoramic Editor, il n' y a pas de raison pour qu' elle ne fonctionne pas avec PPE... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mar 10 Fév 2015 - 11:41 | |
| Si tu fouines un peu dans Synedit_Editor.bas, tu verras que je fais cet appel systématiquement, après chaque action commandée par un bouton, un menu, un raccourci clavier... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 10 Fév 2015 - 11:44 | |
| Oui, cette fonction active un objet synedit dans la doc. En fait, elle lui donne le focus. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mar 10 Fév 2015 - 12:23 | |
| Pour recentrer ici une discussion sur la taille d'écran pour PPE: qu'est-ce que tu penses de l'idée de dimensionner au moins une partie des objets et fenêtres par une fraction de SCREEN_X et SCREEN_Y ? Ainsi, quelque soit la résolution, cela s'afficherait toujours de la même manière, proportionnellement. Par exemple, en employant un facteur x%/1000, x% variant de 0 à 1000. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Personnal Panoramic Editor Mar 10 Fév 2015 - 13:01 | |
| OK pour la sélection d'un texte au clavier, C'est pour les finitions. J'avais craint que j'étais le seul avec ce problème. - Klaus a écrit:
- Pour recentrer ici une discussion sur la taille d'écran pour PPE:
qu'est-ce que tu penses de l'idée de dimensionner au moins une partie des objets et fenêtres par une fraction de SCREEN_X et SCREEN_Y ? Ainsi, quelque soit la résolution, cela s'afficherait toujours de la même manière, proportionnellement. Par exemple, en employant un facteur x%/1000, x% variant de 0 à 1000. Ça serait le top du top. A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 10 Fév 2015 - 13:10 | |
| Je vais rester sur une taille fixe. Ne crier pas, je m' explique. Je suis en train de passer le form principal en 750x1250 et je viens de me rendre compte de la galère pour ajuster mes panneaux glissants. Ce n' est pas une question de dimension à proprement dit, changer des top, left, height, width est assez facile mais ajuster la position d' un objet par rapport à un autre pour éviter des écarts mais surtout des recoupements.... De ce que je vois, cette dimension passe chez tout le monde et la plupart risque de passer vers des écrans 17" plutôt que vers plus petit... Pour la version 3.0 je repenserai les dimensions dès le départ ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mar 10 Fév 2015 - 13:57 | |
| Juste pour ceux que ça intéresse, voici une petite démo qui montre comment on peur ajuster dynamiquement la taille et/ou la position des objets, avec des positions et/ou hauteurs fixes ou variables. Ce n'est pas parfait - c'est juste une maquette pour montrer le principe. Pour simuler les différentes tailles de l'écran, j'ai mis deux scroll_bar. Actuellement dimensionnées à 1...1000, cela me donne deux facteurs factx et facty qui sont des valeurs flottantes entre 0 et 1, obtenues par la position des scroll_bar divisée par 1000. En réalité, il faudrait utiliser un facteur calculé au démarrage du programme, selon les formules: - Code:
-
factx = screen_x /MonScreenX facty = screenY/MonScreenY avec MonScreenX et MonScreenY etant les valeurs de screen_x et screen_y de la machine sur laquelle le logiciel a été développé. Alors, les objets vont s'adapter automatiquemen. Voici la maquette: - Code:
-
' simulation de l'adaptation des objets à la taille de l'écran
label changeH, changeV
dim factx,facty : factx = 0.5 : facty = 0.5
scroll_bar 1 : top 1,10 : left 1,30 : min 1,0 : max 1,1000 position 1,500 : on_change 1,changeH scroll_bar 2 : top 2,30 : left 2,10 : min 2,0 : max 2,1000 position 2,500 : on_change 2,changeV : vertical 2 form 10 :top 10,60 : left 10,200 container 11 : parent 11,10 edit 12 : parent 12,10 ChangerTout()
end
changeH: factx = position(1)/1000 ChangerTout() return changeV: facty = position(2)/1000 ChangerTout() return sub ChangerTout() SetSize(10,-1,-1,800,1200) : ' la position reste inchangée SetSize(11,20,20,600,400) SetSize(12,40,420,-25,230) : ' la hauteur reste inchangée end_sub
sub SetSize(obj%,t%,l%,h%,w%) width obj%,w%*factx if h%>=0 height obj%,h%*facty else height obj%,0-h% end_if if l%>=0 then left obj%,l%*factx if t%>=0 then top obj%,t%*facty if object_type(obj%)= 7 then to_foreground obj% end_sub Bon, j'arrête là sur ce sujet pour ne pas trop polluer ton post, Ygeronimi. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Personnal Panoramic Editor Mar 10 Fév 2015 - 14:26 | |
|
Dernière édition par Jicehel le Mar 10 Fév 2015 - 14:51, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 10 Fév 2015 - 14:28 | |
| Cette pollution là, j' en redemande ! Par contre, si la fonction 2 active l' objet, elle ne lui donne pas le focus pour autant. Si je fais un double clic pour insérer (par exemple une sub ) le curseur clignote bien dans l' objet mais si je presse une touche fleche, le focus est resté sur panoramic et je navigue dans les objets panoramic du panel parent de ma liste. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mar 10 Fév 2015 - 15:21 | |
| Ce qu'il faut faire, c'est d'exécuter ce qu'il faut pour le double-clic. Puis, juste avant de faire RETURN dans la routine évènement du double-click, appeler SyneditFunction avec le code 2 et l'identifiant su Synedit ayant reçu le résultat du double-clic. Je ne sais pas si je me fais bien comprendre. Voici un petit extrait de Synedit_Editor.bas: - Code:
-
' ===== rechercher une chaîne de caractères chercher: if act%=0 then return res% = dll_call3("SyneditFunction",SE%(act%),10,0) : ' ouvrir la fenêtre de recherche res% = dll_call3("SyneditFunction",SE%(act%),2,0) : ' réactiver la page active return
' ===== rechercher l'occurrence suivante cherchersuivant: if act%=0 then return res% = dll_call3("SyneditFunction",SE%(act%),10,1) : ' rechercher avec les mêmes critères res% = dll_call3("SyneditFunction",SE%(act%),2,0) : ' réactiver la page active return ' ===== remplacer une chaîne de caractères remplacer: if act%=0 then return res% = dll_call3("SyneditFunction",SE%(act%),21,0) : ' ouvrir la fenêtre de remplacement res% = dll_call3("SyneditFunction",SE%(act%),2,0) : ' réactiver la page active return
Tu vois le principe ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 10 Fév 2015 - 17:58 | |
| @ Klaus, L' insertion d' une procédure ( par exemple ) agit sur 2 objets synedit. 1 / insertion de l' appel dans l' onglet actif au point du curseur 2 / insertion de la procédure elle même dans l' objet de l' onglet FCT.bas Voila le morceau du on_change : - Code:
-
if NDclic%=Sub_Liste% Syn_num% = dll_call6("TabObjectFunction",Tab%,3,0,0,0,0) SyneditInsertProcedure(Syn_num%) Syn_num% = dll_call6("TabObjectFunction",Tab%,3,0,0,0,0) syn_res% = dll_call3("SyneditFunction",syn%(Syn_num%),2,0) end_if Voilà la procédure appelée : - Code:
-
SUB SyneditInsertProcedure(S%) ' -- Inserer une procedure dim_local t$,SE%,x%,s$,nom$,sep%,a$,p%,NbLigne% ,L%,L2%,appel$ off_double_click Sub_Liste% p%=0 appel$ =item_index$(Sub_Liste%) Clear Sub_Dlist% sep%=instr(appel$,"(") nom$=left$(appel$,sep%-1) file_load Sub_Dlist%,Proc$+nom$+".proc" for x%=1 to count(Sub_Dlist%) s$=s$+item_read$(Sub_Dlist%,x%)+chr$(13)+chr$(10) next x%
SE%=S% Syn_res% = dll_call2("SyneditInsertString",SE%,adr(appel$)) t$=chr$(13)+chr$(10) Syn_res% = dll_call2("SyneditInsertString",SE%,adr(t$))
if count(Proc_list%)>0 for x%=1 to count(Proc_list%) a$=item_read$(Proc_list%,x%) if a$=appel$ p%=1 end_if next x% end_if
if p%=0 ' selection de l' objet SE%=syn%(5) ' recuperation du nombre de ligne NbLigne% = dll_call3("SyneditFunction",SE%,28,0) ' atteindre la derniere ligne Syn_res% = dll_call3("SyneditFunction",SE%,18,NbLigne%+1) ' ajouter la procedure s$=t$+s$ Syn_res% = dll_call2("SyneditInsertString",SE%,adr(s$)) ' memorisation item_add Proc_list%,appel$ end_if on_double_click Sub_Liste%,DClic END_SUB
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mar 10 Fév 2015 - 18:21 | |
| Je ne comprends pas tout à fait ce que tu veux faire. Voici une partie de ton code avec mes annotations: - Code:
-
if NDclic%=Sub_Liste% ' la ligne suivante retourne le numéro de l'onglet sélectionné (1,2,3,...) Syn_num% = dll_call6("TabObjectFunction",Tab%,3,0,0,0,0) ' tu passes le numéro d'onglet, au lieu de passer syn%(Syn_num%), ce qui n'est pas forcément identique ! SyneditInsertProcedure(Syn_num%) ' tu reprends le numéro de l'onglet actif, ce qui devrait produire le même résultat que deux lignes au-dessus... Syn_num% = dll_call6("TabObjectFunction",Tab%,3,0,0,0,0) ' activation et focus sur le Synedit de l'onglet actif - normal syn_res% = dll_call3("SyneditFunction",syn%(Syn_num%),2,0) end_if | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 10 Fév 2015 - 18:29 | |
| J' ai mis la derniere version sur laquelle je travaille sur mon webdav. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 11 Fév 2015 - 0:04 | |
| En attendant la résolution du focus, j' ai rajouté la prévisualisation. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mer 11 Fév 2015 - 1:17 | |
| J'ai trouvé la solution au problème de l'activation des objets ! Cela est dû au fait qu'après un double-clic dans une LIST Panoramic, ce objet reste actif pour Panoramic. Et j'ai beau essayer de changer le focus dans ma DLL, Panoramic évidemment n'en a pas connaissance ! Et la LIST reste active, avec la ligne double-cliquée qui reste sélectionnée. J'ai pris les grands moyens (façon de parler). En ajoutant deux lignes dans cette procédure, le problème est résolu: - Code:
-
SUB MovePanelDG(p%) ' -- Déplacement des panneaux de la droite vers la gauche dim_local x% if PanEtat%(p%)=0 active Pan%(p%) PanEtat%(p%)=1 for x%=1 to Width(Pan%(p%)) step 2 Left Pan%(p%),Left(Pan%(p%))+2 display next x% else inactive Pan%(p%) PanEtat%(p%)=0 for x%=1 to Width(Pan%(p%)) step 2 Left Pan%(p%),Left(Pan%(p%))-2 display next x% end_if END_SUB Ce sont les lignes ACTIVE et INACTIVE que j'ai ajoutées. Mini-correction,, maxi-effet, et 100 % Panoramic. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 11 Fév 2015 - 1:50 | |
| Et la question à 100 balles, tu fais comment pour ceux qui sont visibles en permanence à gauche ? Je me suis fais une mini sub pendant ce temps - Code:
-
SUB SyneditGiveFocus(S%) if S%=0 Syn_num% = dll_call6("TabObjectFunction",Tab%,3,0,0,0,0) Syn_res% = dll_call3("SyneditFunction",syn%(Syn_num%),2,0) else Syn_res% = dll_call3("SyneditFunction",syn%(S%),2,0) end_if END_SUB Je pense que en ajoutant deux bricoles cela devrait faire : - Code:
-
SUB SyneditGiveFocus(S%,Obj%) inactive 0bj% if S%=0 Syn_num% = dll_call6("TabObjectFunction",Tab%,3,0,0,0,0) Syn_res% = dll_call3("SyneditFunction",syn%(Syn_num%),2,0) else Syn_res% = dll_call3("SyneditFunction",syn%(S%),2,0) end_if active Obj% END_SUB L' objet est désactivé donc perd le focus On le passe à l' objet synedit on réactive l'objet mais qui n' a plus le focus Faut que j' essai, je t' en dis plus dans quelques instants....
Dernière édition par ygeronimi le Mer 11 Fév 2015 - 1:59, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mer 11 Fév 2015 - 1:52 | |
| Je ne vois pas bien ce que tu veux dire. La seule modif que j'ai faite, c'est de rajouter ces fameuses deux lignes dans la SUB postée ci-dessus. Est-ce que tu as une autre difficulté ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 11 Fév 2015 - 2:01 | |
| On s' est croisé. Le truc, c' est que ce problème est le même pour tous les objets cliqués et des objets cliquable j' en ai .....je ne les compte plus. J' ai édité au dessus, je vais tester... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mer 11 Fév 2015 - 2:08 | |
| En tout cas, ça devrait être réglé pour tous les volets glissants, puisque cette routine semble les gérer tous. Sinon, il faudra appliquer la même technique. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 11 Fév 2015 - 2:40 | |
| Bon, à première vue, le problème à l' air d' être réglé. Il y a peut être des cas oubliés dans la masse mais bon, je verrai avec les retours d' usage des utilisateurs. Si il y en a.... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mer 11 Fév 2015 - 2:49 | |
| Tant mieux. Au cas où - n'hésite pas ! J'aime bien les défis... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 11 Fév 2015 - 2:57 | |
| Crois tu qu' il y a moyen de savoir qui a le focus dans mon tas d' objet ? J' ai des fonctions qui font intervenir plusieurs objets. et si je fais des ajouts, je risque de finir par oublier comment je suis arrivé à certains résultat ou ne plus savoir qui est le dernier élément à avoir la main. le inactive....active, c' est bien mais à une condition, savoir qui a le focus. C' est pourquoi, je vais ajouter un set_focus sur un objet lambda et inoffensif et l' inactive....active se fera sur cet objet. cela m' évitera un paramètre alléatoire à ma sub. Edit : un exemple concret à la con un form pour être sur de renvoyer le focus, je passe par on_close mais si je veux passer le bon numéro de form, je suis obligé de faire un label par form. si il y a 100 form...bonjour la galère. en donnant le focus à un objet lambda, plus qu' un label...et hop ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Personnal Panoramic Editor Mer 11 Fév 2015 - 3:22 | |
| Je viens de constater que la variable système NUMBER_CLOSE manque, dans Panoramic ! Jack devrait la rajouter dans la prochaine version, pour que tout soit cohérent. Ceci dit, le moyen de contourner ce problème, c'est d'inactiver la croix rouge sur les forms concernées, par: - Code:
-
res% = DLL_call2("SetCloseBox",handle(NuméroDeMaForm%),0)
et d'ajouter un bouton normal de fermeture sur la form. Tu peux alors définir label général pour les boutons de fermeture, et tu as la variable NUMBER_CLICK pour les identifier. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 11 Fév 2015 - 3:48 | |
| Voilà la sub qui fonctionne : - Code:
-
SUB SyneditGiveFocus(S%) Set_focus SetfocusEdit% inactive SetfocusEdit% if S%=0 Syn_num% = dll_call6("TabObjectFunction",Tab%,3,0,0,0,0) Syn_res% = dll_call3("SyneditFunction",syn%(Syn_num%),2,0) else Syn_res% = dll_call3("SyneditFunction",syn%(S%),2,0) end_if active SetfocusEdit% END_SUB L' objet est un edit que j' ai planqué derrière le Panel principal. En fait, je m' aperçois que j' ai monté mon interface comme une page web... ou presque, il manque le dynamisme pour les tailles...mais cela viendra...un jour...peut être... Mais tout çà, c' est la faute à jean claude, il s' est fâché avec sa souris... ...remarque c' était inévitable...à force de la tromper avec son clavier. ça y est, j' ai craqué ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Mer 11 Fév 2015 - 4:05 | |
| Pour les trucs systeme, Focus% ne me déplairait pas... Une petite variable contenant le numéro d' objet ayant le focus...non ?... | |
| | | Contenu sponsorisé
| Sujet: Re: Personnal Panoramic Editor | |
| |
| | | | Personnal Panoramic Editor | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |