PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Modifier le Curseur Souris de tous les Champs de Saisie
Modifier le Curseur Souris de tous les Champs de Saisie
Iniciado por toph1971, 22,may. 2020 10:46 - 4 respuestas
Miembro registrado
21 mensajes
Publicado el 22,mayo 2020 - 10:46
Bonjour,

Historiquement mon application a un curseur différent du standard pour tous les champs de saisie (idem pour les boutons, les listes, ...). Ce curseur est modifiée directement via la fenêtre Description du champ UI/Curseur.

J'ai tenté plusieurs solutions sans succès :
- utilisation de SaisieCurseur(""). La doc stipule que la fonction n'a pas d'effet si la propriété ..CurseurSouris, a été modifiée (par programmation ?). Mais cela ne fonctionne que si au départ la propriété est fixée à Standard
- modification du curseur par programmation avec EnumChamp mais j'ai beaucoup d'onglets de sous champs et l'énumération n'est pas récursive ... donc solution insatifaisante
- la propriété Curseur ne peut pas être définie dans un style ...

Si quelqu'un a une solution miracle qui m'éviterait de modifier à la main les milliers de champs ...

Merci d'avance
Publicado el 22,mayo 2020 - 11:28
Monsieur TOPH avait énoncé :
Bonjour,

Historiquement mon application a un curseur différent du standard pour tous
les champs de saisie (idem pour les boutons, les listes, ...). Ce curseur est
modifiée directement via la fenêtre Description du champ UI/Curseur.

J'ai tenté plusieurs solutions sans succès :
- utilisation de SaisieCurseur(""). La doc stipule que la fonction n'a pas
d'effet si la propriété ..CurseurSouris, a été modifiée (par programmation
?). Mais cela ne fonctionne que si au départ la propriété est fixée à
Standard
- modification du curseur par programmation avec EnumChamp mais j'ai
beaucoup d'onglets de sous champs et l'énumération n'est pas récursive ...
donc solution insatifaisante
- la propriété Curseur ne peut pas être définie dans un style ...

Si quelqu'un a une solution miracle qui m'éviterait de modifier à la main les
milliers de champs ...

Merci d'avance


bonjour,

voila une piste.

dans l'init de la fenêtre faire ceci :
//WM_MOUSEMOVE = 512
Evénement(MouseMove, "F_Fenêtre1.*", WM_MOUSEMOVE)

// proc locale à la fenêtre
PROCEDURE MouseMove(Message, wParam, lParam)

szNameField est une chaîne = ChampSurvol()

QUAND EXCEPTION DANS
WL.Trace(szNameField + " : " + {szNameField}..Type)
FAIRE
WL.Trace(szNameField)
FIN

--
Cordialement JeAn-PhI
Miembro registrado
151 mensajes
Publicado el 22,mayo 2020 - 17:08
Evenement(MouseCursor, Fenêtre, WM_SETCURSOR)

FUNCTION MouseCursor()
nRet is system int = API(USER32, "SetCursor", API(USER32, "LoadCursorFramFileA", FullPathToCurFile.cur)
result nRet

--
Patrice Terrier
www.zapsolution.com
Miembro registrado
21 mensajes
Publicado el 25,mayo 2020 - 10:45
Merci pour vos retours.
J'espérai une solution miracle sans rentrer dans le code de chaque fenêtre .... :-(
Miembro registrado
4.362 mensajes
Publicado el 25,mayo 2020 - 11:35
Monsieur TOPH a écrit :
J'espérai une solution miracle sans rentrer dans le code de chaque fenêtre ....

Eventuellement tu peux tenter une compilation dynamique lors de l'initialisation du projet, du style :
FONCTION ModifCurseur() : booléen
sNomFenêtre est chaîne
sMasqueCommande est chaîne
sCommande est chaîne

sMasqueCommande=[
Evenement(MouseCursor, %1, WM_SETCURSOR)
]

sNomFenêtre=EnumèreElémen(enumFenêtre)
TANT QUE sNomFenêtre <>""
sCommande=ChaîneConstruit(sMasqueCommande,sNomFenêtre)
Compile("ChangerCurseur",sCommande)
sMasqueCommande=[
Evenement(MouseCursor, %1, WM_SETCURSOR)
]
sNomFenêtre=EnumèreElément()
FIN
RENVOYER Vrai

CAS ERREUR :
ErreurConstruit("Erreur dans le processus de changement de curseur de la souris",ErreurInfo())
RENVOYER Faux


--
Il y a peut être plus simple, mais, ça tourne