PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Ascenseur
Ascenseur
Débuté par Etienne Poirier, 27 mar. 2009 21:36 - 8 réponses
Posté le 27 mars 2009 - 21:36
J'aimerais savoir comment syncronisé le déplacement d'un ascenceur
d'une table avec l'ascenceur d'une seconde table qui ont le même nombre
de ligne, donc la même hauteur.

Merci

Étienne

PS, j'ai vu des post qui parle de WM_VSCROLL avec un évènement Windows,
mais je n'ai pas réussi à trouver une combinaison gagnante.
Posté le 31 mars 2009 - 09:13
Bonjour Étienne,
Voici le code que j'utilise pour synchroniser le déplacement des ascenseurs de 2 tables, mais horizontalement, pas verticalement. Tu peux peut-être utiliser ce code et le modifier avec les bonnes valeurs pour le déplacement vertical.

Dans le code d'initialisation de la fenêtre:
// Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5
CONSTANT WM_HSCROLL = 276
AppelDLL32( "user32", "SetScrollRange", Handle(Table_A), sbHorz, 0, 4096, True)
AppelDLL32( "user32", "SetScrollRange", Handle(Table_B), sbHorz, 0, 4096, True)


Procédure locale getScrollPos:
Procedure getScrollPos(ObjectName est une chaîne)

hwnd est un entier sans signe = Handle(ObjectName)
nPos est un entier = AppelDLL32("USER32","GetScrollPos", hwnd, sbHorz)
RENVOYER nPos


Procédure locale MakeLong:
Procedure MakeLong(wLow est un entier, wHigh est un entier)

RENVOYER wLow + (0x10000 * wHigh)


Procédure locale SyncTables:
Procedure SyncTables()
nPos est un entier
hwnd_barre_h est un entier

hwnd_barre_h = AppelDLL32( "user32" , "FindWindowExA" , Handle(Table_A) , Null, "WDSCROLLBAR" , Null )

SI hwnd_barre_h ALORS
nPos = getScrollPos(Table_A..Nom)
SendMessage( Handle(Table_B), WM_HSCROLL, MakeLong(SB_THUMBTRACK, nPos), hwnd_barre_h)
FIN


Code 'Ascenseur horizontal (WM_HSCROLL) de Table_A'
SyncTables()


Code 'Touche relachée (WM_KEYUP) de Table_A'
SyncTables()


Le déplacement de l'ascenseur horizontal de la Table_A bouge automatiquement l'ascenseur de la Table_B.

En espérant t'avoir aidé.

Christian


Etienne Poirier a écrit dans le message de news <49cd233c$1@news.pcsoft.fr> :
J'aimerais savoir comment syncronisé le déplacement d'un ascenceur
d'une table avec l'ascenceur d'une seconde table qui ont le même nombre
de ligne, donc la même hauteur.

Merci

Étienne

PS, j'ai vu des post qui parle de WM_VSCROLL avec un évènement Windows,
mais je n'ai pas réussi à trouver une combinaison gagnante.

Posté le 31 mars 2009 - 16:45
Merci, je vais essayer de l'adapter à mon besoin.

Bonjour Étienne,
Voici le code que j'utilise pour synchroniser le déplacement des ascenseurs
de 2 tables, mais horizontalement, pas verticalement. Tu peux peut-être
utiliser ce code et le modifier avec les bonnes valeurs pour le déplacement
vertical.

Dans le code d'initialisation de la fenêtre:
// Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5
CONSTANT WM_HSCROLL = 276
AppelDLL32( "user32", "SetScrollRange", Handle(Table_A), sbHorz, 0, 4096,
True) AppelDLL32( "user32", "SetScrollRange", Handle(Table_B), sbHorz, 0,
4096, True)


Procédure locale getScrollPos:
Procedure getScrollPos(ObjectName est une chaîne)

hwnd est un entier sans signe = Handle(ObjectName)
nPos est un entier = AppelDLL32("USER32","GetScrollPos", hwnd, sbHorz)
RENVOYER nPos


Procédure locale MakeLong:
Procedure MakeLong(wLow est un entier, wHigh est un entier)

RENVOYER wLow + (0x10000 * wHigh)


Procédure locale SyncTables:
Procedure SyncTables()
nPos est un entier
hwnd_barre_h est un entier

hwnd_barre_h = AppelDLL32( "user32" , "FindWindowExA" , Handle(Table_A) ,
Null, "WDSCROLLBAR" , Null )

SI hwnd_barre_h ALORS
nPos = getScrollPos(Table_A..Nom)
SendMessage( Handle(Table_B), WM_HSCROLL, MakeLong(SB_THUMBTRACK, nPos),
hwnd_barre_h) FIN


Code 'Ascenseur horizontal (WM_HSCROLL) de Table_A'
SyncTables()


Code 'Touche relachée (WM_KEYUP) de Table_A'
SyncTables()


Le déplacement de l'ascenseur horizontal de la Table_A bouge automatiquement
l'ascenseur de la Table_B.

En espérant t'avoir aidé.

Christian


Etienne Poirier a écrit dans le message de news <49cd233c$1@news.pcsoft.fr> :
J'aimerais savoir comment syncronisé le déplacement d'un ascenceur
d'une table avec l'ascenceur d'une seconde table qui ont le même nombre
de ligne, donc la même hauteur.

Merci

Étienne

PS, j'ai vu des post qui parle de WM_VSCROLL avec un évènement Windows,
mais je n'ai pas réussi à trouver une combinaison gagnante.

Posté le 14 avril 2009 - 11:54
Salut Etienne,
Ton post est intéressant,
j'ai corrigé mais je ne comprends pas ces valeurs
dans mon cas ce sont pout des ascenceurs verticals

Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5 ou je trouve cette valeur
CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur
AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_A), sbVert, 0, 4096,
True) AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_B), sbVert, 0,
4096, True)

@bientôt
bruno
Posté le 15 avril 2009 - 19:16
Bonjour

> CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur

C:\WinDev 14\Personnel\Externe\Winconst.wl

Cordialement

Albert

abflm wrote in news message <ad3efc98db7e1fffe036939ad5ecccca@news.pcsoft>:
Salut Etienne,
Ton post est intéressant,
j'ai corrigé mais je ne comprends pas ces valeurs
dans mon cas ce sont pout des ascenceurs verticals

Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5 ou je trouve cette valeur
CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur
AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_A), sbVert, 0, 4096,
True) AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_B), sbVert, 0,
4096, True)

@bientôt
bruno
Posté le 16 avril 2009 - 02:05
Voici ce que je pratique depuis longtemps :

res est un entier = TableSelect(TABLE_Anamneses)
TableSelectPlus(TABLE_Hypotheses,res)
TableSelectPlus(TABLE_Conclusions,res)

Et ainsi, toutes les 3 tables sont synchro.

Amicalement




Albert Goes a écrit dans le message de news <7ab2301cea805ab32b7fedb467380dc2@news.pcsoft> :
Bonjour

CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur

C:\WinDev 14\Personnel\Externe\Winconst.wl

Cordialement

Albert

abflm wrote in news message <ad3efc98db7e1fffe036939ad5ecccca@news.pcsoft>:
Salut Etienne,
Ton post est intéressant,
j'ai corrigé mais je ne comprends pas ces valeurs
dans mon cas ce sont pout des ascenceurs verticals

Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5 ou je trouve cette valeur
CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur
AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_A), sbVert, 0, 4096,
True) AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_B), sbVert, 0,
4096, True)

@bientôt
bruno
Posté le 17 avril 2009 - 11:03
Salut ,
J'ai 2 tables côte à côte ou les lignes doivent correspondre
pour la selection pas de prb,
mais au moment ou l'acenseur vertical ce déclanche
je n'ai qu'une table qui descend et je voudrais que la 2eme table bouge également
et là je coinçe...
merci de ton aide André
Bruno


André G. GELB a écrit dans le message de news <e5a17ee514ac24c68bb48317f1eba246@news.pcsoft> :
Voici ce que je pratique depuis longtemps :

res est un entier = TableSelect(TABLE_Anamneses)
TableSelectPlus(TABLE_Hypotheses,res)
TableSelectPlus(TABLE_Conclusions,res)

Et ainsi, toutes les 3 tables sont synchro.

Amicalement




Albert Goes a écrit dans le message de news <7ab2301cea805ab32b7fedb467380dc2@news.pcsoft> :
Bonjour

CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur

C:\WinDev 14\Personnel\Externe\Winconst.wl

Cordialement

Albert

abflm wrote in news message <ad3efc98db7e1fffe036939ad5ecccca@news.pcsoft>:
Salut Etienne,
Ton post est intéressant,
j'ai corrigé mais je ne comprends pas ces valeurs
dans mon cas ce sont pout des ascenceurs verticals

Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5 ou je trouve cette valeur
CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur
AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_A), sbVert, 0, 4096,
True) AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_B), sbVert, 0,
4096, True)

@bientôt
bruno
Posté le 17 avril 2009 - 18:59
Bonjour,
Voici ce que j'ai découvert en version 14, qui fonctionne quand même
bien chez moi.

SauveTable est une chaîne
SauveTable = TableSauvePositionEtSélection(TABLE_Pieces)
TableRestaurePositionEtSélection(TABLE_PiecesDept, SauveTable)


Étienne
Salut ,
J'ai 2 tables côte à côte ou les lignes doivent correspondre
pour la selection pas de prb,
mais au moment ou l'acenseur vertical ce déclanche
je n'ai qu'une table qui descend et je voudrais que la 2eme table bouge
également et là je coinçe...
merci de ton aide André
Bruno


André G. GELB a écrit dans le message de news
<e5a17ee514ac24c68bb48317f1eba246@news.pcsoft> :
Voici ce que je pratique depuis longtemps :

res est un entier = TableSelect(TABLE_Anamneses)
TableSelectPlus(TABLE_Hypotheses,res)
TableSelectPlus(TABLE_Conclusions,res)

Et ainsi, toutes les 3 tables sont synchro.

Amicalement




Albert Goes a écrit dans le message de news
<7ab2301cea805ab32b7fedb467380dc2@news.pcsoft> :
Bonjour

CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur

C:\WinDev 14\Personnel\Externe\Winconst.wl

Cordialement

Albert

abflm wrote in news message <ad3efc98db7e1fffe036939ad5ecccca@news.pcsoft>:
Salut Etienne,
Ton post est intéressant,
j'ai corrigé mais je ne comprends pas ces valeurs
dans mon cas ce sont pout des ascenceurs verticals

Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5 ou je trouve cette valeur
CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur
AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_A), sbVert, 0, 4096,
True) AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_B), sbVert, 0,
4096, True)

@bientôt
bruno
Membre enregistré
15 messages
Posté le 06 octobre 2015 - 18:17
abflm a écrit :
Salut Etienne,
Ton post est intéressant,
j'ai corrigé mais je ne comprends pas ces valeurs
dans mon cas ce sont pout des ascenceurs verticals

Variables pour synchro des ascenseurs des tables
CONSTANT SB_THUMBTRACK = 5 ou je trouve cette valeur
CONSTANT WM_VSCROLL = 276 ou je trouve cette valeur
AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_A), sbVert, 0, 4096,
True) AppelDLL32( "user32", "SetScrollRange", Handle(TABLE_B), sbVert, 0,
4096, True)

@bientôt
bruno