FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Version instantanée V 0.9.28i8 possédant l'objet SYNEDIT
par Laurent (Minibug) Aujourd'hui à 14:42

» KGF_dll - nouvelles versions
par Yannick Aujourd'hui à 13:17

» @Klaus
par Yannick Aujourd'hui à 13:06

» Compilateur FBPano
par jean_debord Aujourd'hui à 11:47

» Form [formulaires annexes]
par Jean Claude Aujourd'hui à 1:39

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Jeu 25 Mai 2017 - 22:50

» KG.dll - nouveautés en cours de préparation
par Klaus Jeu 25 Mai 2017 - 22:48

» Outils couleurs
par Yannick Jeu 25 Mai 2017 - 19:22

» bug number_events : toujours égal à 0
par silverman Mer 24 Mai 2017 - 15:36

» bug ON_MOVE N,L : actif que sur form 0
par silverman Mer 24 Mai 2017 - 15:30

» Testez vos connaissances
par Yannick Mar 23 Mai 2017 - 13:37

» Castle game Engine
par Jicehel Lun 22 Mai 2017 - 12:05

» Pb pour matheux
par Yannick Dim 21 Mai 2017 - 20:47

» Othello
par Laurent (Minibug) Dim 21 Mai 2017 - 11:04

» Problème au lancement de Panoramic.
par Marc37 Dim 21 Mai 2017 - 10:10

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2017
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 Synchroniser deux LISTs

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5872
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Synchroniser deux LISTs   Jeu 20 Oct 2016 - 19:11

J'ai deux LIST parallèles qui doivent être synchronisées, c'est à dire que le déplacement de l'ascenseur de l'une doit entraîner le déplacement en parallèle de l'autre.
Le problème a déjà été soulevé il y a quelques années, sans solution simple à ma connaissance.

En fait mon problème était un peu plus simple, genre éditeur simplifié: un LIST qui contient le contenu d'un fichier texte (donc avec apparition d'ascenseur), et un petit LIST parallèle à gauche, qui contient les numéros de lignes du premier. Si je me déplace avec l'ascenseur, je veux que les numéros de ligne suivent.
C'est faisable en faisant appel à des fonctions de user32.dll, mais comme il n'y a pas d'événement déclenché par le déplacement de l'ascenseur, il faut mettre un Timer pour le surveiller, ce qui est beaucoup plus contraignant.

Par exemple:
Code:
LABEL Quit
DIM i%,f$,pr%,nl%
f$ = "C:\TEXTES\ANNU.txt": ' un  fichier texte quelconque
HEIGHT 0,800: FONT_NAME 0,"Lucida Console": ON_CLOSE 0,Quit
LIST 1: WIDTH 1,35: HEIGHT 1,HEIGHT(0)-40: ' List des numéros de lignes
LIST 2: LEFT 2,WIDTH(1): WIDTH 2,WIDTH(0)-WIDTH(1)-20: HEIGHT 2,HEIGHT(1)
MEMO 3: HIDE 3: WIDTH 3,900
FILE_LOAD 3,f$: FOR i% = 1 TO COUNT(3): ITEM_ADD 2,ITEM_READ$(3,i%): NEXT i%
Hlign(1): nl% = HEIGHT(1)/hlig%-1: ' nombre de lignes affichables dans List 1
pr% = -1: ' 1ère ligne affichée
WHILE 1>0: ' juste pour la démo
    Listelem(2)
    IF prem%<>pr%
        CLEAR 1
        FOR i% = prem% TO prem%+nl%-1: ITEM_ADD 1,RIGHT$("000"+STR$(i%),4): NEXT i%
        pr% = prem%
    END_IF
    PAUSE 200
END_WHILE
END
' ==============================================================================
Quit:
TERMINATE
' ==============================================================================
SUB Listelem(lst%)
' Renvoie dans prem% le rang du 1er élément de lst% affiché dans la fenêtre visible
' du liste (cas des ascenseurs).
IF VARIABLE("prem%") = 0 THEN DIM prem%
DLL_ON "User32"
  prem% = DLL_CALL4("SendMessageA",handle(lst%),398,0,0)
DLL_OFF
prem% = prem%+1: ' les numéros rendus commencent à 0
END_SUB
' ==============================================================================
SUB Hlign(lst%)
' Renvoie dans hlig% la hauteur en pixels d'une ligne du List lst%,
IF VARIABLE("hlig%") = 0 THEN DIM hlig%
DLL_ON "User32"
  hlig% = DLL_CALL4("SendMessageA",handle(lst%),417,0,0)
DLL_OFF
END_SUB
' ==============================================================================

C'est juste un exemple vite fait, et il y a des contraintes. Par exemple il faut que les polices des deux List soient les mêmes et de même taille. Entre autres. Et ce satané Timer.
L'action sur l'ascenseur n'est prise en compte qu'au relâchement de la souris.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Synchroniser deux LISTs   Jeu 20 Oct 2016 - 20:16

Déjà soulevé sans solution simple ? Alors, regarde mon pseudo-objet GLIST (100 % Panoramic, sans DLL !). Tu peux avoir un nombre quelconque de listes synchronisées (2, 3, ... 7, ...). Un défilelent dans une des listes défile les autres simultanément. Les insertions, les suppressions - tout est géré. Voir sur mon site, rubrique "Panoramic", lien "Pseudo-objet GLIST", ou utiliser le lien suivant (identique):
http://klauspanoramic.comxa.com/versions/GLIST.zip
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5872
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Synchroniser deux LISTs   Jeu 20 Oct 2016 - 23:28

Dont acte et mea culpa... je dois perdre un peu la mémoire... Rolling Eyes

Le pire, après vérification, c'est que j'ai bien ton GLIST dans mes archives, depuis sa création, avec son mode d'emploi détaillé (.rtf) mais je ne l'ai encore jamais utilisé...
Bon, eh bien il ne me reste plus qu'à m'y plonger, avec mes remerciements Klaus !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Synchroniser deux LISTs   

Revenir en haut Aller en bas
 
Synchroniser deux LISTs
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] addition de deux variable.
» j'ai deux question qui m'intrigue
» [script] Division euclidienne de deux entiers
» Un ascenseur pour deux memos
» Coller deux objets

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Présentation et bavardage-
Sauter vers: