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 |
|
|
| Comment redimensionner une GLIST | |
| | Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Comment redimensionner une GLIST Mar 14 Sep 2010 - 17:19 | |
| Avec mon programme de filtrage de fichier log, Je suis parti pour faire un truc un peu plus complexe que prévu : bon c'est peut être se prendre la tête pour pas grand chose, mais je trouve que c'est un bon exercice et puis si ça peut donner des idées à certains, pourquoi pas ? - J'ai mis en place une GList car ce qui m'intéresse c'est d'avoir des attributs d'affichage différents suivant les items. J'ai prévu d'intercepter le clic droit sur item pour pouvoir changer ces attributs (bold dans un 1er temps, plus tard peut être un menu pop-up ) - Mon formulaire est redimensionnable donc j'ai l'intention que la GList le soit également (c'est pas terrible d'avoir un grand formulaire sur un grand écran avec une Glist toute rikiki ou l'inverse) Donc j'ai commencé à écrire une procédure de redimensionnement. Comme c'est une question un peu technique et qu'à mon avis il n'y a que le concepteur des GLIST qui peut me répondre, je fais une description sommaire de mon problème :
- une GLIST ListFiltre% dans Form 0. (ListFiltre%+1:picture ListFiltre%+2:scrollbar)
- un timer TimerEvent% qui compare les dimensions du formulaire par rapport à des variables de mémorisation. En cas de différence -> appel à une procédure : Resize.
- IndexGestionGlist% qui correspond à GLIST_Index%
Ce qui se passe : Le redimensionnenment du picture et du scrollbar est correct mais: Lorsque je clique sur l'ascenseur vertical, celui-ci s'affole et à même tendance à vouloir bloquer mon prog... Les procédures : - Code:
-
TimerEvent: timer_off MainTimer% : 'comme cela risque d'être long, je coupe le timer... if (ClientW <> width(0) or ClientH <> height(0)) then gosub Resize ClientW = width(0) : ClientH = height(0) timer_on MainTimer% return
Resize: ' je redéfini la hauteur d'affichage par rapport à form 0 + une petite marge de 40 pixels... GLIST_hauteur_affichage%(IndexGestionGlist%) = height(0)-top(ListFiltre%+1)-40 ' conversion en nb de ligne GLIST_lignes_affichage%(IndexGestionGlist%) = GLIST_hauteur_affichage%(IndexGestionGlist%) / 14 ' on applique sur le picture et le scrollbar height ListFiltre%+1,GLIST_hauteur_affichage%(IndexGestionGlist%) height ListFiltre%+2,GLIST_hauteur_affichage%(IndexGestionGlist%)
GLIST_largeur_affichage%(IndexGestionGlist%) = width(0)-left(ListFiltre%+1)-35 width ListFiltre%+1,GLIST_largeur_affichage%(IndexGestionGlist%) left ListFiltre%+2,GLIST_left_affichage%(IndexGestionGlist%) + GLIST_largeur_affichage%(IndexGestionGlist%) + 4
GLIST_nombre_dans_liste%(IndexGestionGlist%) = count(ListFiltre%) GLIST_n% = GLIST_nombre_dans_liste%(IndexGestionGlist%) - GLIST_lignes_affichage%(IndexGestionGlist%)+1 if GLIST_nombre_dans_liste%(IndexGestionGlist%)<GLIST_lignes_affichage%(IndexGestionGlist%) then GLIST_n% = 1 max ListFiltre%+2,GLIST_n% if GLIST_nr%(IndexGestionGlist%)=0 then GLIST_nr%(IndexGestionGlist%) = 1 gosub GLIST_changeb 2d_target_is ListFiltre% + 1 print_target_is ListFiltre% + 1 ' j'en profite pour redimensionner un autre objet (ya pas d'raison !) width EditFiltre%,width(ListFiltre%+1) return Je me suis appuyé sur le code de GLIST_create... J'ai du certainement oublier quelque chose Klaus, pourtant tout me parait correctement initialisé.... J'aimerai bien avoir ton avis d'Expert ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Mar 14 Sep 2010 - 17:51 | |
| Pourrais-tu regarder, juste avant d'appeler GLIST_changeb, les valeurs pour min et max de la scroll_bar ? Je peux aussi de conseiller de faire off_change sur la scroll_bar avant toute modification de ses paramètres, et de refaire on_change xxx,GLIST_change juste avant d'appeler GLIST_changeb. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Mar 14 Sep 2010 - 18:54 | |
| Hello Klaus! Je viens de faire l'essai : J'ai désactivé le scrollbar en début de resize (off_change ListFiltre%+2) puis je le réactive en fin (on_change ListeFiltre%+2, GLIST_change) le max, après chargement d'un fichier log est à 785... Si je fais 1 clic (un seul, bref ~ 0.3 sec) dans le scrollbar en dessous du curseur, celui-ci se déplace jusqu'au pointeur de la souris (le rectangle en dessous du curseur reste noir durant tout le déplacement). Pendant ce temps, le picture clignote à fond. Quand le scrollbar atteint le pointeur de souris, le picture clignote encore quelques secondes avant de s'arrêter...si je redéplace la souris un peu plus bas, le curseur se redéplace ! (alors que le bouton de la souris n'est pas enclenché) Une idée ? le timer pendant toute cette opération est désactivé. PS: J'ai pas bien compris à quoi correspondait GLIST_nr% Ci-joint mon prog. Tu charges n'importe quel fichier texte de plusieurs lignes. Puis amuse toi à cliquer en dessous du curseur du scrollbar... Je viens de m'apercevoir que le problème est présent même si je ne change pas la taille du formulaire... donc cela serait plutôt dans GLIST.bas qu'il faudrait regarder... - Code:
-
hide 0 caption 0,"Log Analyser" dim Verbose%:Verbose%=1
label FinProg,Open_log,Filtre label TimerEvent,Resize label SearchParam
label Plage : dim Plage_return%,Plage_param$ label Search : dim Search_return% label Copy : dim Copy$
' ------------------------------------------------------- ' Déclaration d'une GLIST ' ------------------------------------------------------- label Glist_function : dim GLIST_params$ label GLIST_err
label TimerButtonGlist : ' Timer pour détection bouton souris sur objet GLIST
' ------------------------------------------------------- ' Définition des numéros d'objets ' -------------------------------------------------------
if Verbose% = 1 dim FormDebug%:FormDebug%=1 dim ListDebug%:ListDebug%=2 end_if
dim crlf$: crlf$=chr$(13)+chr$(10)
dim EditFiltre%:EditFiltre%=10 dim TextFiltre%:TextFiltre%=11 dim SelectFile%:SelectFile%=12 dim EditPlage% :EditPlage% =13 dim TextPlage% :TextPlage% =14 dim EditPlage2%:EditPlage2%=15 dim TextPlage2%:TextPlage2%=16 dim TrackBar% :TrackBar% = 17
dim ButtonLoad%:ButtonLoad%=100 dim ButtonQuit%:ButtonQuit%=101 dim ButtonCopy%:ButtonCopy%=102
dim ListBuffer%:ListBuffer%=200 dim ListBuffer2%:ListBuffer2%=201
dim ListFiltre%:ListFiltre%=300
dim MainTimer% :MainTimer% =400 dim TimerButtonGlist%:TimerButtonGlist%=401
' ------------------------------------------------------- ' Déclaration des variables ' ------------------------------------------------------- dim Plage_start%,Plage_end%
dim fichier$,filtre$,ligne$ dim i% dim params$,TabParam$(10,2),j%,k% dim Search_i%,Search_j% dim ClientH,ClientW,OldClientH,OldClientW dim Boucle%:Boucle%=0
dim ListFiltre_left%,ListFiltre_top%,ListFiltre_width%,ListFiltre_height% dim IndexGestionGlist%
' variables pour évènement clic droit sur GLIST dim TimerButtonGlist_x%,TimerButtonGlist_y%,TimerButtonGlist_index%, GLIST_mouse_right%
' ---- Init des variables ClientW=0:ClientH=0 OldClientW=1:OldClientH=1 GLIST_mouse_right% = 0 ' ------------------------------------------------------- ' Déclaration des objets ' ------------------------------------------------------- ' ---- Debug if (Verbose% = 1) form FormDebug% memo ListDebug%:parent ListDebug%,FormDebug% : full_space ListDebug% caption FormDebug%,"Debug" end_if
' ---- IHM open_dialog SelectFile%: filter SelectFile%,"Log Files|*.log|Text Files|*.txt|All Files|*.*" button ButtonLoad%:caption ButtonLoad%,"Open":top ButtonLoad%,height(ButtonLoad%)*2:left ButtonLoad%,5 button ButtonCopy%:caption ButtonCopy%,"Copy":top ButtonCopy%,top(ButtonLoad%)+height(ButtonLoad%)+5:left ButtonCopy%,5 button ButtonQuit%:caption ButtonQuit%,"Exit":top ButtonQuit%,top(ButtonCopy%)+height(ButtonCopy%)+5:left ButtonQuit%,5
dlist ListBuffer% : ' Liste initiale contenant le fichier de log dlist ListBuffer2%: ' Liste après 1er filtrage
ListFiltre_left% = left(ButtonLoad%)+width(ButtonLoad%)+10 ListFiltre_width% = width(0) - ListFiltre_left% - 15
' list ListFiltre% : ' Liste affichée ' left ListFiltre%,left(ButtonLoad%)+width(ButtonLoad%)+10 ' width ListFiltre%,width(0)-left(ListFiltre%)-15 ' height ListFiltre%,height(0)-top(ListFiltre%)-40
edit EditFiltre%:left EditFiltre%, ListFiltre_left% : width EditFiltre%,ListFiltre_width% alpha TextFiltre%:caption TextFiltre%,"Filter :":top TextFiltre%,5 : left TextFiltre%, left(EditFiltre%)-width(TextFiltre%)-10
alpha TextPlage%:left TextPlage%,left(EditFiltre%):caption TextPlage%,"Start : ":top TextPlage%,top(EditFiltre%)+height(EditFiltre%)+10 edit EditPlage%:left EditPlage%,left(TextPlage%)+width(TextPlage%)+10:top EditPlage%,top(EditFiltre%)+height(EditFiltre%)+5 alpha TextPlage2%:left TextPlage2%,left(EditPlage%)+width(EditPlage%)+20:caption TextPlage2%,"End : ":top TextPlage2%,top(EditFiltre%)+height(EditFiltre%)+10 edit EditPlage2%:left EditPlage2%,left(TextPlage2%)+width(TextPlage2%)+10:top EditPlage2%,top(EditFiltre%)+height(EditFiltre%)+5
' top ListFiltre%,top(EditPlage%)+height(EditPlage%)+5 ListFiltre_top%= top(EditPlage%)+height(EditPlage%)+5 ListFiltre_height%= height(0)-ListFiltre_top%-40
GLIST_params$="Create|N="+str$(ListFiltre%)+"|A=8|W="+str$(ListFiltre_width%)+"|T="+str$(ListFiltre_top%)+"|L="+str$(ListFiltre_left%)+"|" gosub GLIST_function : ' ajouter une ligne à la fin GLIST_params$ = "Attributs|1=255,0,0|2=G0,0,255|3=255,255,0|" gosub GLIST_function : ' créer les attributs GLIST_params$ = "Revelation|4|" gosub GLIST_function : ' choisir la révélation GLIST_params$ = "Mode|silent|" : gosub GLIST_function
for IndexGestionGlist% = 1 to GLIST_n_listes% if GLIST_liste_listes%(IndexGestionGlist%)=ListFiltre% then exit_for next i%
timer MainTimer% : Timer_off MainTimer% : timer_interval MainTimer%,500 timer TimerButtonGlist% : Timer_off TimerButtonGlist% : timer_interval TimerButtonGlist%, 100
' ------------------------------------------------------- ' Définition des actions à lancer sur évènements : ' ------------------------------------------------------- on_click ButtonLoad%,Open_log on_click ButtonQuit%,FinProg on_click ButtonCopy%,Copy on_change EditFiltre%,Filtre on_close 0,FinProg
' ---- Affichage du formulaire principal left 0,(screen_x - width(0))/2 top 0,(screen_y - height(0))/2 ' wait 2000 gosub Resize show 0
on_timer MainTimer%,TimerEvent on_timer TimerButtonGlist%, TimerButtonGlist
timer_on TimerButtonGlist% timer_on MainTimer% END
' ***************************************************************************************** ' * FIN D'INITIALISATION DU PROGRAMME ' *****************************************************************************************
FinProg: Boucle%=1 Terminate
TimerEvent: timer_off MainTimer% if (ClientW <> width(0) or ClientH <> height(0)) then gosub Resize ClientW = width(0) : ClientH = height(0) timer_on MainTimer% return
Resize: off_change ListFiltre%+2 GLIST_hauteur_affichage%(IndexGestionGlist%) = height(0)-top(ListFiltre%+1)-40 GLIST_lignes_affichage%(IndexGestionGlist%) = GLIST_hauteur_affichage%(IndexGestionGlist%) / 14 height ListFiltre%+1,GLIST_hauteur_affichage%(IndexGestionGlist%) height ListFiltre%+2,GLIST_hauteur_affichage%(IndexGestionGlist%)
GLIST_largeur_affichage%(IndexGestionGlist%) = width(0)-left(ListFiltre%+1)-35 width ListFiltre%+1,GLIST_largeur_affichage%(IndexGestionGlist%) left ListFiltre%+2,GLIST_left_affichage%(IndexGestionGlist%) + GLIST_largeur_affichage%(IndexGestionGlist%) + 4
GLIST_nombre_dans_liste%(IndexGestionGlist%) = count(ListFiltre%) GLIST_n% = GLIST_nombre_dans_liste%(IndexGestionGlist%) - GLIST_lignes_affichage%(IndexGestionGlist%)+1 if GLIST_nombre_dans_liste%(IndexGestionGlist%)<GLIST_lignes_affichage%(IndexGestionGlist%) then GLIST_n% = 1 max ListFiltre%+2,GLIST_n% if GLIST_nr%(IndexGestionGlist%)=0 then GLIST_nr%(IndexGestionGlist%) = 1 if (Verbose%=1) then item_add ListDebug%,"Resize :"+str$(GLIST_n%) if (Verbose%=1) then item_add ListDebug%,"Resize :"+str$(GLIST_nr%(IndexGestionGlist%)) gosub GLIST_changeb on_change ListFiltre%+2,GLIST_change width EditFiltre%,width(ListFiltre%+1) return
' ------------------------------------------------------- ' Ouverture du fichier de log ' ------------------------------------------------------- Open_log: fichier$ = FILE_NAME$(SelectFile%) if (fichier$ <> "_") FILE_LOAD ListBuffer%,fichier$ ' Timer_on MainTimer% gosub Filtre end_if return
' ----------------------------------------------------------------------------------------- ' ----------------------------------------------------------------------------------------- Copy: Copy$="" for i% = 1 to count(ListFiltre%) Copy$ = Copy$ + crlf$ + item_read$(ListFiltre%,i%) next i% clipboard_string_copy Copy$ return
' ----------------------------------------------------------------------------------------- ' Procédure de mise à jour de l'affichage de la liste en fonction des paramètres de filtre. ' - appelée sur évènement on_change ou après chargement du fichier log ' ListBuffer% contient le fichier original ' ListBuffer2% contient le fichier après traitement du filtre params$ ' ListFiltre% contient ListBuffer2% après traitement des plages horaires ' ----------------------------------------------------------------------------------------- Filtre: params$ = text$(EditFiltre%): gosub SearchParam clear ListBuffer2% ' clear ListFiltre% GLIST_params$="Total|" : gosub GLIST_function if val(GLIST_params$)<> 0 GLIST_params$="Clear|" : gosub GLIST_function end_if
for i%=1 to count(ListBuffer%) ligne$ = item_read$(ListBuffer%,i%) ' Si pas de paramètres de filtrage, on ajoute la ligne if (val(TabParam$(0,1)) = 0) item_add ListBuffer2%,ligne$ ' sinon on regarde par rapport aux critères du filtre else gosub Search if (Search_return%<>0) then item_add ListBuffer2%,ligne$ end_if next i%
' On filtre par rapport à une éventuelle plage horaire if (count(ListBuffer2%) <> 0) Plage_param$ = text$(EditPlage%) if (len(Plage_param$) <> 0) gosub Plage : Plage_start% = Plage_return% else if (Verbose%=1) then item_add ListDebug%,"Pas d'horaire de début" Plage_start%=0 end_if Plage_param$ = text$(EditPlage2%) if (len(Plage_param$) <> 0) gosub Plage : Plage_end% = Plage_return% else if (Verbose%=1) then item_add ListDebug%,"Pas d'horaire de fin" Plage_end%=0 end_if for i% = 1 to count(ListBuffer2%) if ((Plage_start% <> 0) or (Plage_end%<>0)) : ' si plage horaire de définie ' manque test si horaire en début de ligne... Plage_param$ = left$(item_read$(ListBuffer2%,i%),8) if mid$(Plage_param$,3,1)=":" gosub Plage if ((Plage_start%=0) or (Plage_return% > Plage_start%)) and ((Plage_end% = 0) or (Plage_return% < Plage_end%)) GLIST_params$="Item_add|"+item_read$(ListBuffer2%,i%)+"|" : gosub GLIST_function ' item_add ListFiltre%,item_read$(ListBuffer2%,i%) end_if ' if ( (Plage_return% > Plage_start%) and (Plage_return% < Plage_end%)) then item_add ListFiltre%,item_read$(ListBuffer2%,i%) end_if else GLIST_params$="Item_add|"+item_read$(ListBuffer2%,i%)+"|" : gosub GLIST_function ' item_add ListFiltre%,item_read$(ListBuffer2%,i%) end_if next i% end_if return
' ------------------------------------------------------- ' Conversion d'un horaire "HH:MN:SS" en valeur numérique ' ------------------------------------------------------- Plage: if (Verbose% = 1) then item_add ListDebug%,"Plage: param ->"+Plage_param$ if (len(Plage_param$)=2) then Plage_param$=Plage_param$+":00" if (len(Plage_param$)=5) then Plage_param$=Plage_param$+":00" Plage_return% = (val(left$(Plage_param$,2))*3600)+(val(mid$(Plage_param$,4,2))*60)+(val(right$(Plage_param$,2))) if (Verbose% = 1) item_add ListDebug%,str$(Plage_return%) item_add ListDebug%, "---------------------------------------" end_if return
' ------------------------------------------------------- ' ------------------------------------------------------- Search: Search_return% = instr(ligne$,TabParam$(1,0)) for Search_i% = 2 to val(TabParam$(0,1)) if (TabParam$(Search_i%-1,1) = "&") if (instr(ligne$,TabParam$(Search_i%,0)) = 0) Search_return%=0 exit_for end_if end_if if (TabParam$(Search_i%-1,1) = "|") Search_return% = Search_return% + instr(ligne$,TabParam$(Search_i%,0)) end_if if (TabParam$(Search_i%-1,1) = "") if (instr(ligne$,TabParam$(Search_i%,0)) = 0) if (Search_return% = 1) then Search_return% = Search_return% + 1 else Search_return% = 0 end_if end_if next Search_i% return
SearchParam: ' raz du tableau de paramètre for i% = 0 to 10: TabParam$(i%,0)= "" : TabParam$(i%,1) = "" : next i% if (len(params$) = 0) TabParam$(0,1) = "0" return end_if TabParam$(0,1) = "1" : j% = 0 for i% = 1 to len(params$) if (mid$(params$,i%,1) = "&") or (mid$(params$,i%,1) = "|") or (mid$(params$,i%,1) = "") TabParam$(val(TabParam$(0,1)),1) = mid$(params$,i%,1) TabParam$(0,1) = str$(val(TabParam$(0,1))+1) else TabParam$(val(TabParam$(0,1)),0) = TabParam$(val(TabParam$(0,1)),0) + mid$(params$,i%,1) end_if next i% if (Verbose% = 1) Item_add ListDebug%,"Nb de paramètre :"+TabParam$(0,1) Item_add ListDebug%, TabParam$(1,0)+" = "+TabParam$(1,1) Item_add ListDebug%, TabParam$(2,0)+" = "+TabParam$(2,1) Item_add ListDebug%, "---------------------------------------" end_if return
' ------------------------------------------------------- ' TRAITEMENT EVENEMENTS SOURIS SUR GLIST ' ------------------------------------------------------- TimerButtonGlist: timer_off TimerButtonGlist% if left$(GLIST_params$,6)="Liste " message "Prog principal :"+GLIST_params$ GLIST_params$="" end_if ' état du bouton droit de la souris if mouse_right_down(ListFiltre%+1)=1 GLIST_mouse_right% = 1 : ' memo appui sur bouton else if mouse_right_up(ListFiltre%+1)=1 : ' attente relachement bouton GLIST_mouse_right% = 0 : ' raz appui sur bouton end_if end_if
if (GLIST_mouse_right% = 1) if (TimerButtonGlist_index% = 0) : ' si item pas encore défini TimerButtonGlist_x% = 0 : TimerButtonGlist_y% = 0 TimerButtonGlist_x% = mouse_x_right_down(ListFiltre%+1) TimerButtonGlist_y% = mouse_y_right_down(ListFiltre%+1) ' si position de la souris dans la liste : if TimerButtonGlist_x% <> 0 TimerButtonGlist_index% = GLIST_nr%(IndexGestionGlist%) + int((TimerButtonGlist_y%+13)/14) - 1 GLIST_params$ = "Selected|" : gosub GLIST_function if val(GLIST_params$)<>TimerButtonGlist_index% GLIST_params$ = "Item_select|"+str$(TimerButtonGlist_index%)+"|" : gosub GLIST_function ' -------------------------------------------------- ' Application : début du traitement du clic droit ' -------------------------------------------------- ' ici on met ce que l'on veut... ' -------------------------------------------------- ' Application : Fin du traitement ' -------------------------------------------------- end_if end_if end_if ' --- bouton droit relaché else TimerButtonGlist_index% = 0 end_if timer_on TimerButtonGlist% return
' ***************************************************************************************** ' * Objet GLIST ' ***************************************************************************************** #INCLUDE "H:\Perso\Dev\Panoramic\GLIST\GLIST.bas"
' *****************************************************************************************
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Mar 14 Sep 2010 - 19:28 | |
| OK, je debugge cela et te tiens au courant... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Mer 15 Sep 2010 - 12:22 | |
| J'ai pris ton programme et je l'ai utilisé tel quel, après avolir changé le chemin d'accès dans la directive #INCLUDE.
Et je n'ai aucun problème pour redimensionner la fenêtre. Je tire les bords de la form 0 avec la souris, et la GLIST s'adapte parfaitement. On peut bouger l'ascenseur sans problème, et un click en-dessous ou au-dessus du curseur de l'ascenseur produit bien le résultat escompté et aucun bloquage. Je suis perplexe...
Ceci dit, ton code pour le redimensionnement est très intéressant, et j'ai bien envie de rajouter une fonction à l'objet GLIST en utilisant ton code: GLIST_params$ = "Layout|T=n|L=n|H=n|W=n|" avec: T=top L=left H=height W=width Qu'est-ce que tu en penses ?
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Mer 15 Sep 2010 - 13:00 | |
| Why not ?
[edit:]
Par contre, dans mon applic, la liste clignote beaucoup.... (2d_clear à chaque item_add même si l'item ajouté n'est pas visible... peut-on envisager d'avoir la construction de la liste en fct de nb ligne en arrière-plan/ caché de manière à ce qu'elle s'affiche d'un coup. qu'en penses-tu ? cela éviterait d'avoir ce clignotement. En gros lorsque le nb de ligne visible est atteint, ne faire que le redraw du scrollbar...
Le problème du scrollbar apparait lorsque l'on charge un gros fichier (ce qui sera la plupart du temps mon cas), genre 800/900 lignes. Sur de petits fichiers le problème n'apparait pas...
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Mer 15 Sep 2010 - 18:52 | |
| Merci pour ton accord - je vais m'y mettre !
Pour ce qui est des gros fichiers: j'ai chargé GLIST.bas qui fait 1085 lignes. Est-ce que tu as essayé de déplacer le curseur après avoir cliqué en_dessous du bouton de l'ascenseur ? Tant que le curseur reste dans cet espace qui est le rectangle de la scroll_bar entre le bouton mobile et la butée, le déplacement continue, ligne par ligne. Dès que tu sors le curseur (sans cliquer, juste en bougeant la souris), cela s'arrête dès que le nombre de décalages prévus est atteint. Si tu repositionnes le curseur dans cet espace, le déplacement reprend, etc jusqu'à ce que le bouton de la scroll_bar atteigne le curseur.
Si tu sors le curseur de la scroll_bar, il n'y a pas de blocage du programme, tout fonctionne normalement.
C'est vrai que je n'avais pas conscience de ce comportement auparavant; je vais voir d'où cela vient. C'est comme si la scroll_bar recevait en permanence un évènement "on_change" tant que le curseur reste dans l'espace décrit plus haut. Je te tiendrai au courant.
Ceci dit, l'effet du redimensionnement est saisissant: en tirant les bords de la fenêtre avec la souris, ou en maximisant la fenêtre, tout s'adapte automatiquement - c'est impeccable !
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Mer 15 Sep 2010 - 19:22 | |
| J'ai regardé un peu le fonctionnement de la scroll_bar. En fait, c'est un problème qui semble lié à Panoramic et qui correspond au fonctionnement normal de la scroll_bar. Si tu prends soin de faire un seul clic dans la zone en_dessous du bouton, la liste remonte bien d'une seule ligne, pas plus. S'il y a double clic ou maintien de la souris, alors, l'évènement est reproduit jusqu'à ce que le bouton rejoigne le curseur, ou que le curseur quitte la zone. Le signe visuel de cette action, est la couleur noire de l'espace entre le bouton et la butée. Tant que la couleur est noire, il y a répétition automatique. Tu peux le reproduire très simplement avec: - Code:
-
label change_10
scroll_bar 10 : vertical 10 : top 10,10 : left 10,10 on_change 10,change_10
alpha 20 : top 20,10 : left 20,50
end
change_10: caption 20,str$(position(10)) return
Essaie de cliquer en-dessous du bouton en laissant le bouton de la souris enfoncé... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Mer 15 Sep 2010 - 19:32 | |
| nos messages ce sont croisés :
ce que je voulais dire avant ton post :
on a vraiment l'impression d'avoir une floppé de on_change... du coup j'ai fait un essai :
dans GLIST.bas juste avant avant le label GLIST_changeb, j'ai rajouter :
off_change GLIST_numero_objet%+2
puis juste avant le return (en dessous de GLIST_fin2) j'ai réactivé le on_change: on_change GLIST_numero_objet%+2,GLIST_change
ce n'est certainement pas très beau et cela ne doit pas forcement marcher dans tout les cas mais en faisant ces modifs je constate une nette amélioration dans le comportement du scrollbar.... (je reste moins bloqué pdt le déplacement du curseur) Qu'en penses-tu ? C'est une idée que je me fais ou cela apporte quelque chose ? (par analogie : c'est comme l'histoire des timers où il est préférable de le stopper pdt l'execution de la routine non?)
EDIT: Le problème est réapparu lorsque j'ai installé la dernière version de pano... Si tu as encore la version de juin, fait l'essai : le comportement est différent et j'ai l'impression que le rafraichissement du picture est plus rapide...
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Mer 15 Sep 2010 - 23:45 | |
| Je regarderai ça - c'est une idée à creuser. Et non, je n'ai plus les versions précédentes... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Jeu 16 Sep 2010 - 7:13 | |
| Une autre idée qui m'est venu, concernant le clignotement : Pourquoi ne pas faire une permutation de picture? (un peu dans le même style que pour effacer un tab) l'inconvénient c'est que cela rajoute un objet supplémentaire: le défilement me parait plus "doux"... Qu'en penses-tu ? bon je sais que c'est pas évident, que les GLIST sont adaptées pour des petites listes. Si tu trouves que j'essaye d'enfoncer des portes ouvertes, dis-le moi.... - Code:
-
label endProg,redraw on_close 0,endProg
dim i,nb_ligne,idPic,idLigne nb_ligne=20:idLigne = 1
picture 1 : hide 1 : height 1, 400 : idPic=1 picture 2 :hide 2 : height 2, 400 dlist 3 for i=1 to 200 : item_add 3,"ligne "+str$(i):next i ' init gosub redraw for idLigne = 1 to 200 gosub redraw wait 300 next idLigne
END
endProg: terminate return
redraw: print_target_is idPic for i=idLigne to idLigne+nb_ligne print item_read$(3,i) next i show idPic idPic = bin_xor(idPic,3) hide idPic 2d_target_is idPic 2d_clear : ' <-- cette instruction me plais pas, mais y a pas vraiment de choix, à part file_load d'une liste vide et encore on y gagne pas grand chose return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Jeu 16 Sep 2010 - 10:20 | |
| Le problème est réellement lié à la scroll_bar de Panoramic. Essaie de double-cliquer sur la flèche en bas de la scroll_bar...
Je suis en train de remplacer la scroll_bar par un picture dans lequel je gère moi-même les boutons et déplacements, et du coup, le problème sera résolu. Un peu de patience... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Jeu 16 Sep 2010 - 10:46 | |
| Bonjour Klaus ! Attend !!!Essaye le petit programme ci-dessous... --> pas de pb sur le scrollbar. Il fonctionne !!! - Code:
-
label endProg,redraw,TestScroll ' on_close 0,endProg : rem cette commande plante
dim i,largeur,nb_ligne%,idPic,idLigne,nb_elements%,a$ nb_ligne%=20 idLigne = 1 largeur = 200 nb_elements%=14*50
picture 1 : hide 1 : width 1,largeur : height 1, 14*nb_ligne% : idPic=1 picture 2 :hide 2 : width 2,largeur : height 2, 14*nb_ligne% dlist 3 scroll_bar 4 : vertical 4: left 4,largeur+3: height 4, 14 * nb_ligne% min 4,1 : max 4,nb_elements%-nb_ligne% on_change 4, TestScroll button 5: on_click 5, endProg: left 5,10: caption 5,"Quitter": top 5,height(1)+10
' init for i=1 to nb_elements%+1 a$="ligne "+str$(i) item_add 3,a$ next i gosub redraw
END
endProg: terminate return
TestScroll: idLigne=position(4) caption 0,str$(idLigne)+":"+str$(count(3)) gosub redraw return
redraw: print_target_is idPic for i=idLigne to idLigne+nb_ligne% if (i/7)=int(i/7) font_color idPic,255,0,0 font_bold idPic else font_color idPic,0,0,0 font_bold_off idPic end_if print item_read$(3,i) next i show idPic idPic = bin_xor(idPic,3) hide idPic 2d_target_is idPic 2d_clear : ' <-- cette instruction me plais pas, mais y a pas vraiment de choix, à part file_load d'une liste vide et encore on y gagne pas grand chose return
[Edit:] je ne comprend pas : tous les caractères '+' avaient disparu dans le code.... bizarre... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Jeu 16 Sep 2010 - 12:55 | |
| Je suis d'accord avec toi: pas de problème apparent. Mais le fonctionnement est identique au programme que tu as posté auparavant, celui avec le filtre... Là aussi, la scroll_bar fonctionne de la même manière. Le problème devient visible si l'on garde le bouton de la souris enfoncé au_dessus de la scroll_bar, ou en double-cliquant sur le bouton du bas eu dans la zone de défilement rapide qui se met alors en noir et passe en mode répétition - tout comme dans le programme que tu viens de poster. Un simple programme de deux lignes avec une scroll_bar par défaut montre cela également.
Puis, je me suis aperçu que je ne peux pas programmer un décalage autre que 1 pour la croll_bar, et seul l'évènement on_change est utilisable. On ne peut pas intercepter on_click ni connaître la position du clic de la souris dans la zone de défilement rapide. C'est pourquoi je suis en train de me faire une scroll_bar "maison" qui permet tout cela.
Ton astuce avec les deus picture pour l'affichage est intéressante - j'ai de mon côté ajouté un hide avant le réaffichage du picture et un show après. Cela améliore l'aspect visuel de façon similaire. J'étudierai la différence et adapterai la meilleure solution. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Jeu 16 Sep 2010 - 14:01 | |
| Au sujet du pas d'incrementation ou de décrémentaion du curseur:Ce qui est bien dommage, c'est qu'apparemment toutes les commandes MOUSE_X_#### et MOUSE_Y_#### ne fonctionnent pas sur un scrollbar... Un truc qui manque aussi c'est de pouvoir adapter la dimension du curseur du scrollbar en fct de sa plage MIN/MAX et de la zone d'affichage... L'ordre des HIDE / SHOWJ'ai volontairement mis le show avant le hide, car dans le cas inverse, on risque de voir apparaitre pendant un bref instant le fond du form 0. Ce qui provoquerai un clignotement visible... Dans mon cas, le clignotement existe aussi mais entre 2 fonds blancs, cela est moins flagrant... Le scrollbar en lui-mêmeJ'ai bien peur que, comme tu dis, il faille faire un scrollbar "maison" pour avoir l'évènement on_click... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Jeu 16 Sep 2010 - 23:57 | |
| 1. Je partage ton analyse sur la possibilité/impossibilité de traiter les évènements souris sur la scroll bar. Effectivement, dommage.
2. J'avais bien compris l'ordre show/hide dans ton code. C'est effectivement bien comme ça. Quand je parlais de show/hide, c'étaient des commandes que j'ai ajoutées dans le traitement de changement de scroll_bar dans mon source, pour éviter les preturbations d'affichage en manipulant la scroll_bar. Cela apporte un mieux, mais ce n'est pas la panacée.
3. Je suis en train de coder la scroll_bar maison, et ça avance bien... A bientôt pour des nouvelles plus précises !
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Ven 17 Sep 2010 - 0:11 | |
| Bonsoir Klaus, je regarde GLIST.bas pour voir si il n'y a pas des appels à changeb en trop...car je vois un clignotement de la liste alors qu'il n'y a aucun scroll (déplacement d'item) de réalisé... dans GLIST_delete: la 1ere boucle GLIST_k% ne sert à rien car il y a un return juste avant le next.... idem dans GLIST_free idem GLIST_select + message d'erreur en fin incorrect PS: il est possible que je reedite ce post si je trouve autre chose... A+ J'ai fini de consulter... je vois rien d'anormal... bizarre... pourtant le clignotement doit bien provenir d'un ou plusieurs appels à changeb en trop... (dans une boucle ?) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Ven 17 Sep 2010 - 2:13 | |
| Les boucles que tu as trouvées, ne servent pas à rien ! C'est pour le cas où tu as plusieurs GLIST: cela permet d'identifier la bonne GLIST, on fait le travail, puis un fait return sans se préoccuper bien sûr du reste de la boucle... Je pense que ce clignotement vient du fait d'afficher les lignes par des print successifs dans la picture - chaque fois, Panoramic réaffiche TOUTE la picture ! C'est pour cela que j'ai introduit des hide et show dans le programme, dans ma version. Pour le moment, je ne l'ai pas encore mise en ligne car je n'ai pas fini les tests. Pour la scroll_bar, j'ai bien avancé. Voici une première version de la scroll_bar, pour le moment sans lien avec une liste quelconque - juste pour voir le fonctionnement de la scroll_bar. Mais malheureusement, je me heurte à une autre limitation de Panoramic: il faudrait pouvoir "tirer" le curseur de la scroll_bar vers le haut ou vers le bas. Or, une picture n'a qu'un sel évèmenent: c'est on_click qui ne se déclenche que au moment du relâchement de la souris. On ne peut donc pas tirer le curseur. Mais les boutons Up et Down ainsi que le défilement rapide vers le haut et le bas fonctionnent, et SANS répétition automatique ! Voici le code: - Code:
-
label click_20 label GLIST_SB_cursor_hide, GLIST_SB_cursor_show, GLIST_SB_button_show
dim GLIST_SB_height%, GLIST_SB_start_x%, GLIST_SB_start_y%, GLIST_SB_x%, GLIST_SB_y% dim GLIST_SB_position%, GLIST_SB_max%, GLIST_aff_ligne%, GLIST_SB_delta% dim GLIST_SB_max_y%, GLIST_SB_min_y%, GLIST_SB_buttonsize%
alpha 30 : top 30,10 : left 30,100
GLIST_SB_buttonsize% = 18 : ' taille des boutons carrés GLIST_SB_height% = 120 : ' hauteur de la scroll bar GLIST_SB_max% = 57 : ' valeur maxi de la scroll bar (1...57) GLIST_SB_position% = 1 : ' position initiale du curseur GLIST_aff_ligne% = 8 : ' lignes d'affichage de la GLIST GLIST_SB_delta% = GLIST_aff_ligne% - 1 : ' pour déplacement rapide GLIST_SB_max_y% = GLIST_SB_height%-3*GLIST_SB_buttonsize% : ' hauteur - bouton up - bouton down - curseur GLIST_SB_min_y% = GLIST_SB_buttonsize% : ' 0 + bouton up
' dessiner la scroll bar picture 20 : top 20,10 : left 20,50 : width 20,20 : height 20,GLIST_SB_height% : color 20,236,233,216 on_click 20,click_20 print_target_is 20 font_name 20,"Wingdings 3" 2d_target_is 20 : 2d_fill_color 236,233,216 2d_pen_color 172,168,153 : 2d_rectangle 0,0,20,GLIST_SB_height% 2d_pen_color 255,255,255 : 2d_line 19,0,19,GLIST_SB_height%
' bouton "up" GLIST_SB_start_x% = 1 : GLIST_SB_start_y% = 1 gosub GLIST_SB_button_show print_locate GLIST_SB_start_x%+4,GLIST_SB_start_y%+4 : print chr$(129)
' bouton "curseur" gosub GLIST_SB_cursor_show
' bouton "down" GLIST_SB_start_x% = 1 : GLIST_SB_start_y% = GLIST_SB_height%-20+1 gosub GLIST_SB_button_show print_locate GLIST_SB_start_x%+4,GLIST_SB_start_y%+4 : print chr$(130)
caption 30,"Début 1/"+str$(GLIST_SB_max%)
end
click_20: GLIST_SB_x% = mouse_x_position(20) GLIST_SB_y% = mouse_y_position(20)
' bouton "up" if GLIST_SB_y%<20 if GLIST_SB_position%>1 gosub GLIST_SB_cursor_hide GLIST_SB_position% = GLIST_SB_position% - 1 gosub GLIST_SB_cursor_show end_if caption 30, "Vers le haut "+str$(GLIST_SB_position%)+"/"+str$(GLIST_SB_max%) return end_if
' bouton "down" if GLIST_SB_y%>GLIST_SB_height%-GLIST_SB_buttonsize% if GLIST_SB_position%<GLIST_SB_max% gosub GLIST_SB_cursor_hide GLIST_SB_position% = GLIST_SB_position% + 1 gosub GLIST_SB_cursor_show end_if caption 30, "Vers le bas "+str$(GLIST_SB_position%)+"/"+str$(GLIST_SB_max%) return end_if
' curseur if GLIST_SB_y%>(int(((GLIST_SB_height%-3*GLIST_SB_buttonsize%)*(GLIST_SB_position%-1))/GLIST_SB_max%)+GLIST_SB_buttonsize%) if GLIST_SB_y%<(int(((GLIST_SB_height%-3*GLIST_SB_buttonsize%)*(GLIST_SB_position%-1))/GLIST_SB_max%)+2*GLIST_SB_buttonsize%) while mouse_left_down(20)=1 GLIST_SB_x% = mouse_x_position(20) GLIST_SB_y% = mouse_y_position(20) caption 30, "Ascenseur --> "+str$(GLIST_SB_y%)+"/"+str$(GLIST_SB_max%) end_while caption 30, "Ascenseur "+str$(GLIST_SB_position%)+"/"+str$(GLIST_SB_max%) return end_if end_if
' défilement rapide vers le haut if (GLIST_SB_y%>GLIST_SB_buttonsize%) and (GLIST_SB_y%<(int(((GLIST_SB_height%-3*GLIST_SB_buttonsize%)*(GLIST_SB_position%-1))/GLIST_SB_max%)+GLIST_SB_buttonsize%)) if GLIST_SB_position%>1 gosub GLIST_SB_cursor_hide GLIST_SB_position% = GLIST_SB_position% - GLIST_SB_delta% if GLIST_SB_position%<1 then GLIST_SB_position% = 1 gosub GLIST_SB_cursor_show end_if caption 30, "Rapide vers le haut "+str$(GLIST_SB_position%)+"/"+str$(GLIST_SB_max%) return end_if
' défilement rapide vers le bas if (GLIST_SB_y%>(int(((GLIST_SB_height%-3*GLIST_SB_buttonsize%)*(GLIST_SB_position%-1))/GLIST_SB_max%)+2*GLIST_SB_buttonsize%)) and (GLIST_SB_y%<(GLIST_SB_height%-GLIST_SB_buttonsize%)) if GLIST_SB_position%<GLIST_SB_max% gosub GLIST_SB_cursor_hide GLIST_SB_position% = GLIST_SB_position% + GLIST_SB_delta% if GLIST_SB_position%>GLIST_SB_max% then GLIST_SB_position% = GLIST_SB_max% gosub GLIST_SB_cursor_show end_if caption 30, "Rapide vers le bas "+str$(GLIST_SB_position%)+"/"+str$(GLIST_SB_max%) return end_if return
' effacer le curseur GLIST_SB_cursor_hide: 2d_pen_color 236,233,216 GLIST_SB_start_x% = 1 : GLIST_SB_start_y% = int(((GLIST_SB_height%-3*GLIST_SB_buttonsize%)*(GLIST_SB_position%-1))/GLIST_SB_max%)+GLIST_SB_buttonsize% 2d_rectangle 1,GLIST_SB_start_y%,GLIST_SB_buttonsize%+1,GLIST_SB_start_y%+GLIST_SB_buttonsize%+1 return
' afficher le curseur en fonction de GLIST_SB_position GLIST_SB_cursor_show: GLIST_SB_start_x% = 1 : GLIST_SB_start_y% = int(((GLIST_SB_height%-3*GLIST_SB_buttonsize%)*(GLIST_SB_position%-1))/GLIST_SB_max%)+GLIST_SB_buttonsize% ' afficher le curseur en fonction de GLIST_SB_start_y% GLIST_SB_button_show: 2d_pen_color 255,255,255 2d_line GLIST_SB_start_x%+1,GLIST_SB_start_y%+GLIST_SB_buttonsize%-1,GLIST_SB_start_x%+1,GLIST_SB_start_y%+1 2d_line GLIST_SB_start_x%+1,GLIST_SB_start_y%+1,GLIST_SB_start_x%+GLIST_SB_buttonsize%-1,GLIST_SB_start_y%+1 2d_pen_color 241,239,226 2d_line GLIST_SB_start_x%+1,GLIST_SB_start_y%+GLIST_SB_buttonsize%-2,GLIST_SB_start_x%+1,GLIST_SB_start_y%+2 2d_line GLIST_SB_start_x%+1,GLIST_SB_start_y%+2,GLIST_SB_start_x%+GLIST_SB_buttonsize%-2,GLIST_SB_start_y%+2 2d_pen_color 172,168,153 2d_line GLIST_SB_start_x%+1,GLIST_SB_start_y%+GLIST_SB_buttonsize%-2,GLIST_SB_start_x%+GLIST_SB_buttonsize%-2,GLIST_SB_start_Y%+GLIST_SB_buttonsize%-2 2d_line GLIST_SB_start_x%+16,GLIST_SB_start_y%+GLIST_SB_buttonsize%-1,GLIST_SB_start_x%+GLIST_SB_buttonsize%-2,GLIST_SB_start_y% 2d_pen_color 113,111,100 2d_line GLIST_SB_start_x%,GLIST_SB_start_y%+GLIST_SB_buttonsize%-1,GLIST_SB_start_x%+GLIST_SB_buttonsize%-1,GLIST_SB_start_y%+GLIST_SB_buttonsize%-1 2d_line GLIST_SB_start_x%+GLIST_SB_buttonsize%-1,GLIST_SB_start_y%+GLIST_SB_buttonsize%-1,GLIST_SB_start_x%+GLIST_SB_buttonsize%-1,GLIST_SB_start_y%-1 return
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Comment redimensionner une GLIST Ven 17 Sep 2010 - 7:49 | |
| Bonjour Klaus! Tu ne dors jamais ? J'avais bien compris le but de tes boucles mais si tu fais attention à celles que j'ai indiqué, tu constatera que quelque-soit les conditions, tu ne passes qu'une seule fois dans ces boucles... A mon avis les 'return' sont de trop... ou alors il y a une subtilité qui m'échappe... Concernant ton scrollbar : Tu n'aimes pas les timers hein ? Je me suis permis de rajouter le code ci-dessous. Tu l'insères juste avant le end. tu mets le on_click sur l'objet 20 en commentaire (il n'est plus nécessaire dans ce cas) -> tu as la répétition et un semblant de 'tirage' du curseur. Pour bien faire, il faudrait tester si les coordonnées de la souris sont sur le curseur. auquel cas appeler une procédure spécifique. - Le timer est à 100 ms... mais on pourrait très bien le ralentir si la souris est en dehors du curseur (genre 1 seconde, pour avoir un défilement pas trop rapide) et au contraire l'accélérer si la souris se trouve sur le curseur (pour être plus réactif si on cherche à le "tirer"). - Code:
-
label GLIST_SB_Evenement dim GLIST_SB_Evenement%,GLIST_SB_mouse_left,GLIST_SB_mouse_right GLIST_SB_Evenement%=1234
alpha 4321: top 4321,150 timer GLIST_SB_Evenement%: timer_interval GLIST_SB_Evenement%,100: timer_on GLIST_SB_Evenement% on_timer GLIST_SB_Evenement%,GLIST_SB_Evenement
end
GLIST_SB_Evenement: timer_off GLIST_SB_Evenement% if MOUSE_RIGHT_DOWN(20)=1 GLIST_SB_mouse_right=1 else if MOUSE_RIGHT_UP(20)=1 then GLIST_SB_mouse_right=0 end_if if MOUSE_LEFT_DOWN(20)=1 GLIST_SB_mouse_left = 1 else if MOUSE_LEFT_UP(20)=1 then GLIST_SB_mouse_left=0 end_if caption 4321,"Mouse left:"+str$(GLIST_SB_mouse_left)+" - Mouse right:"+str$(GLIST_SB_mouse_right) timer_on GLIST_SB_Evenement% if GLIST_SB_mouse_left = 1 then goto click_20 return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Ven 17 Sep 2010 - 10:05 | |
| Effectivement, me nuits sont souvent aléatoires...
En ce qui concerne tes deux boucles, en fait, tu as raison: je n'avais pas tilté car chez moi, j'avais déja mis le "return" juste avant le "next GLIST_k%" en commentaire. En fait, ces boucles servent à appliquer la modif d'une GLIST dans toutes les GLIST synchronisées. Cette version n'est peut-être pas encore en ligne car je suis en train de tester.
Et en fait, je vais y intégrer la scroll_bar "maison" qui grâce à ta modif de timer (MERCI) fait exactement ce que je voulais. Je pense qu'on va arriver à quelque chose d'intéressant de cette manière.
| |
| | | Invité Invité
| Sujet: Re: Comment redimensionner une GLIST Dim 19 Sep 2010 - 20:18 | |
| Ceci est une parenthèse et rien à voir avec le sujet, mais c'est le site d'activité de Klaus, et je ne vais pas ouvrir un sujet spécial pour ça.
Dans le programme je suis en train de faire, j'ai 2 form, dont je mets la form en icône pendant que je ne m'en sert pas (ou pour lire ce qui est dessous. la form supplémentaire est hide pendant que le programme est en icône, et la lorme 0 réduite en carré. J'utilise les possibilités de ta dll pour rester en avant sur le restant de l'écran. Lorsque je clique sur l'icône (soit la forme 0) je réaffiche tout normalement, mais tout en mettant partout la fonction de rester au dessus, la seconde forme ne tient pas, elle s'efface. Il n'y a que form 0 qui reste dessus. J'ai essayé, je mets partout show x:res%=... avec le numéro de la form, mais ça ne marche pas. Il n'y a qu'à linitialisation avant que je mette en icône, que cela fonctionne. Après hide x, ça ne marche plus. As-tu une idée?
Salutation |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Comment redimensionner une GLIST Lun 20 Sep 2010 - 0:25 | |
| | |
| | | Contenu sponsorisé
| Sujet: Re: Comment redimensionner une GLIST | |
| |
| | | | Comment redimensionner une GLIST | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |