|
| Interdire Agrandissement fenêtre en largeur ! |
| Iniciado por kick71, 29,sep. 2019 18:17 - 16 respuestas |
| |
| | | |
|
| |
Miembro registrado 909 mensajes |
|
| Publicado el 29,septiembre 2019 - 18:17 |
Bonjour à tous,
Je n'arrive pas à gérer ce cas lié à une fenêtre. Celle-ci est redimensionnable en hauteur mais je veux pas que celle-ci le soit en largeur.
Est-ce lié aux modèle utilisé ( Gabarit Zune_style) ? Malgré l'option "Largeur Max à initiale", en faisant un double clic sur la barre de titre, celle-ci prend tous l'écran.
Par conte en utilisant la poignée ( bas droite ) , je ne peux que l'agrandir verticalement comme initialement voulu.
Une solution à ce problème, je ne trouve pas !
Merci pour votre aide Christian
-- Christian - kick71Mensaje modificado, 29,septiembre 2019 - 18:19 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 02,octubre 2019 - 09:04 |
Bonjour
Petit Up ! Personne dans mon cas ?
Merci à vous Christian
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 04,octubre 2019 - 17:31 |
Bonjour,
Je pense que la fonction
FenTaille(<Fenêtre> , <Largeur> , <Hauteur>) doit convenir, à placer dans l'évènement "Modification de la taille de..." de la fenêtre avec la condition de test qui va bien. Voir la doc : https://doc.pcsoft.fr/?3038020
Alain |
| |
| |
| | | |
|
| | |
| |
| Publicado el 05,octubre 2019 - 08:53 |
Bonjour,
le bouton d'agrandissement et le double clic sur la barre de titre seront inactifs.
CONSTANTE WS_MAXIMIZEBOX = 0x00010000 nStyle est entier= GetWindowLong(Handle(MaFenêtre..Nom), GWL_STYLE) nStyle = ETBinaire(nStyle, NONBinaire(WS_MAXIMIZEBOX)) nStyle = API("User32", "SetWindowLongW", Handle(MaFenêtre..Nom), GWL_STYLE, nStyle) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 05,octubre 2019 - 16:46 |
Bonjour et merci Alain
J'avais déjà essayé. . Avec le code Fentaille, lors d'un double click sur le bandeau du menu ( supérieur ) , la fenêtre prend la taille max de l'écran. Et encore plus embêtant, avec le code plus moyen de revenir en mode normal reste en plein écran ! J'y comprend plus rien. Christian

-- Christian - kick71Mensaje modificado, 05,octubre 2019 - 16:47 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 356 mensajes |
|
| Publicado el 06,octubre 2019 - 16:23 |
Bonjour Christian
Je te confirme que le code d'Alain dans la partie "A chaque changement de taille" marche bien et correspond à ce que tu veux faire. Pour être plus précis le code à utiliser :
SI FenTaille("") = TailleMaxi ALORS FenTaille("",FnTstMax..LargeurMax,FnTstMax..HauteurMax) FIN Ou dans mon exemple "FnTstMax" est le nom de ma fenêtre de test. Et surtout ne pas oublier le test de taille maxi.
Bien évidement il faut pour ce code initialiser les largeur et hauteur max dans la description de la fenêtre, ou alors mettre des variables ou des constantes dans le code. Et aucun effet comme tu l'évoque.
Tiens nous au courant.
-- Francis MOREL http://www.SoftProtect.fr |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 07,octubre 2019 - 08:52 |
Bonjour et merci Francis et christian,
J'ai déjà essayé la syntaxe que j'avais normalement déjà transcrite :
SI FenTaille(FEN_produits) = TailleMaxi ALORS FenTaille(FEN_produits,FEN_produits..LargeurMax,FEN_produits..HauteurMax) FIN
Lors du debug, 1171 et 657 c'est bon ( Cf copie ecran )
Réaction similaire, double clic sur barre, je me retrouve en max ! Je vais essayé le code de christian dans la matinée.
Ci-joint la Desc de la fenêtre concernée "Fen_Produits"

Ci-joint trace en debug, une seule condition, mais pour l'explication j'ai fait deux copies pour chq variable

-- Christian - kick71Mensaje modificado, 07,octubre 2019 - 08:54 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 07,octubre 2019 - 09:06 |
Christian,
Merci pour ta présentation de solution avec API. ( je suis bien 32 bits ) Je ne suis pas un grand habitué des utilisations API, et j'ai des erreurs dans le code ( En rouge) :

-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 07,octubre 2019 - 11:31 |
Bon j'ai avancé un peu avec les API mais un problème reste sans réponse, avec le peu de connaissance que j'ai sur les appels API !
CONSTANTE WS_MAXIMIZEBOX = 0x00010000 lehwnd est un entier = Handle(FEN_produits..Nom) nStyle est entier= API("user32","GetWindowLongA",lehwnd, GWL_STYLE) nStyle = ETBinaire(nStyle, NONBinaire(WS_MAXIMIZEBOX)) nStyle = API("user32", "SetWindowLongW", lehwnd, GWL_STYLE, nStyle)
GWL_STYLE est inconnu malgré ma déclaration externe : EXTERNE "WinConst.wl" dans l'initialisation projet ou fenêtre !
Une petite aide ?? Merci
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 07,octubre 2019 - 13:35 |
Re re Bonjour,
J'ai réglé le pb de la variable locale GWL_STYLE par un ancien post de Francis ( merci à lui ). Plus d'erreur de compilation, mais le résultat à mon grand désarroi est le même 
A défaut du résultat attendu, j'ai "fouiné" l'utilisation et la syntaxe des API  C'est fou ce truc !!
Christian
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 310 mensajes |
|
| Publicado el 07,octubre 2019 - 15:38 |
Bonjour, Le problème provient du gabarit utilisé : Zune style ne fait pas appel aux boutons systemes (maximize/iconise) mais un superchamp PSCOFT, Le plus simple est de changer de gabarit...
Bon dev ! |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 07,octubre 2019 - 16:30 |
C'est vraiment la B-------- !! Tout mon projet est sur ce gabarit, et le changer met un bazar sur tous les bouton, libéllés, position image etc ... Pfff la galère.
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 07,octubre 2019 - 18:04 |
Bonsoir, Je confirme, le problème vient bien du style "zune". Il suffit de supprimer le bouton BTN_SYS_MAXIMISER ou modifier le code de ce bouton : passer l'Action prédéfinie. (Bascule Maximer / Restaurer:) à aucune. ------------------------------------------------------------------------ Le code ci-dessous par contre fonctionne parfaitement avec des fenêtres sans le superchamp.
CONSTANTE WS_MAXIMIZEBOX = 0x00010000 GWL_STYLE = -16 FIN nHwnd est un entier = Handle(MaFenêtre..Nom) nStyle est entier= API("user32","GetWindowLongW", nhwnd, GWL_STYLE) nStyle = ETBinaire(nStyle, NONBinaire(WS_MAXIMIZEBOX)) nStyle = API("user32", "SetWindowLongW", nhwnd, GWL_STYLE, nStyle) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 07,octubre 2019 - 19:18 |
Merci à tous, Du taf donc en prévision 
Je vais revoir cela ce soir ... Bonne soirée à tous et merci
Christian
-- Christian - kick71 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 08,octubre 2019 - 09:04 |
Bonjour
Essayez de mettre ceci dans l'événement 'Modification de la taille de <NomFenêtre> :
MaFenêtre..Largeur = Min(MaFenêtre..Largeur,MaFenêtre..LargeurMax) N'oubliez pas de paramétrer la largeur max dans la description de votre fenêtre.
Bon dev.
Laurent M. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 310 mensajes |
|
| Publicado el 08,octubre 2019 - 10:32 |
Une petite combine pour contourner le probleme du zune style (si vous avez bien défini une largeurMax dans le descriptif de la fenêtre) :
dans le code de modification de la taille de fenetre :
SI MoiMême..Largeur>MoiMême..LargeurMax ALORS MoiMême..AffichageActif=Faux Maximise(MoiMême) MoiMême..Largeur=MoiMême..LargeurMax MoiMême..AffichageActif=Vrai FIN
bon dev.Mensaje modificado, 08,octubre 2019 - 10:38 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 909 mensajes |
|
| Publicado el 08,octubre 2019 - 18:13 |
Bonsoir Trust ME ....
Presque bon, mais alors bonjour les ancrages des boutons , images etc ... Tout est à la ramasse malgré le bon ancrage ! Je vais faire comme suivant et cela fonctionne, mais je dois reprendre toutes les fenêtres !! :


-- Christian - kick71 |
| |
| |
| | | |
|
| | | | |
| | |
|