PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil â†’ WINDEV 2024 â†’ [WD14] Ajout/Suppression d'onglet par programmation
[WD14] Ajout/Suppression d'onglet par programmation
Débuté par Cerede, 04 fév. 2009 16:01 - 26 réponses
Posté le 04 février 2009 - 16:01
Bonjour,

Je cherche un moyen d'ajouter ou de supprimer des onglets par programmation.
Je n'ai rien vu a ce sujet dans l'aide.

Est ce faisable, si oui comment?

Merci.
Posté le 04 février 2009 - 16:19
Bonjour,
Vous pouvez le rendre visible ou invisible.
Par exemple:
ONGLET_Ong[1]..Visible=Faux


Je ne sais pas si on peut cloner un onglet par ChampClone() ?

BLMDinf

"Cerede" <cerede2000@yahoo.fr> a écrit dans le message de news:
60a9c3add3ad25cf222e3623e562359e@news.pcsoft...

Bonjour,

Je cherche un moyen d'ajouter ou de supprimer des onglets par
programmation.
Je n'ai rien vu a ce sujet dans l'aide.

Est ce faisable, si oui comment?

Merci.
Posté le 04 février 2009 - 17:46
Oui pour la visibilité je connais.
Mais je souhaite vraiment pouvoir rajouter ou supprimer un volet.

J'ai essayé avec champ clone sans succès :(
Posté le 05 février 2009 - 17:17
Personne n'as d'idée? :(
Posté le 05 février 2009 - 18:58
Bonjour,

Cerede a écrit dans le message de news <670e5647e169176ac2122d1a82cfdbef@news.pcsoft> :
> Personne n'as d'idée? :(

Je ne pense pas que cela soit possible. De manière générale dans Windev, il n'est pas possible de créer des éléments de contrôle dynamiquement par programmation, ainsi il n'est pas possible de créer des menus et sous menus dynamiquement, ou encore ajouter des boutons dans une barre d'outils, ou encore ajouter des cases dans la barre de programmation, etc., etc.

Même si vous pouviez créer un onglet, je ne vois pas comment vous pourriez faire pour lui attribuer des contrôles.

Il y a deux solutions de contournement, mais cela peut s'avérer difficile :
1°) soit créer un Tab Control et de le gérer entièrement via les Api windows.
2°) soit dessiner vous même la barre d'onglet et faire apparaître et disparaître les controles.

amicalement,
--
Eric Boyron
Posté le 06 février 2009 - 00:52
Je ne pense pas que cela soit possible. De manière générale DANS Windev, il n'est pas possible de créer des éléments de contrôle dynamiquement par programmation, ainsi il n'est pas possible de créer des menus ET sous menus dynamiquement, OU encore ajouter des boutons DANS une barre d'outils, OU encore ajouter des cases DANS la barre de programmation, etc., etc.


Petit correctif comme dit plus haut il existe la fonction champclone permettant de créer dynamiquement de nouveau control, comme il existe la fonction menuclone pour les menus certes ce n'est pas très pratique mais ça marche.
Malheureusement pour l'onglet je n'ai pas regardé dans windev 14 encore, mais en WD11 j'avais du faire un control onglet dans un champ dessin avec des plans... Bref pas pratique mais ça restait mieux que les onglets windev (pas possible d'avoir de flèche de navigation si trop d'onglet etc..)

Cordialement
Posté le 06 février 2009 - 10:24
Metem a écrit dans le message de news <4502284144402500585f0fad08eb788d@news.pcsoft> :
Bonjour,

Cerede a écrit dans le message de news <670e5647e169176ac2122d1a82cfdbef@news.pcsoft> :
Personne n'as d'idée? :(

Je ne pense pas que cela soit possible. De manière générale dans Windev, il n'est pas possible de créer des éléments de contrôle dynamiquement par programmation, ainsi il n'est pas possible de créer des menus et sous menus dynamiquement, ou encore ajouter des boutons dans une barre d'outils, ou encore ajouter des cases dans la barre de programmation, etc., etc.

Même si vous pouviez créer un onglet, je ne vois pas comment vous pourriez faire pour lui attribuer des contrôles.

Il y a deux solutions de contournement, mais cela peut s'avérer difficile :
1°) soit créer un Tab Control et de le gérer entièrement via les Api windows.
2°) soit dessiner vous même la barre d'onglet et faire apparaître et disparaître les controles.

amicalement,
--
Eric Boyron



Bonjour,

Qu'est ce que vous appellez Tab Control, et comment le gérer avec les API?

Merci :)
Posté le 06 février 2009 - 14:44
Bonjour,

Cerede a écrit dans le message de news
Qu'est ce que vous appellez Tab Control, et comment le gérer avec les API?

Merci :)


http://msdn.microsoft.com/en-us/library/bb760550(VS.85).aspx

Si vous ne savez pas ce que c'est, vous allez avoir du mal à l'utiliser.

Personnellement, je fais comme Sylvain, j'utilise une image dans laquelle je dessine mes propres onglets, chevron, etc.

amicalement,
--
Eric Boyron
Posté le 06 février 2009 - 15:58
Bonjour,

Je suis fortement intéressé par votre méthode (image) pour créer les onglets.

Je dois mettre en place un application et dans une des fenêtre j'ai les numéros de produits qui remontent et je voudrais afficher chaque numéro dans un onglet. Lors d'un clic sur un onglet j'ai les informations de ce produits.

Pourriez-vous m'expliquer un peu plus en détail comment vous faites ? Et lors d'un clic sur un onglet image c'est quoi qui est géré (des plan, une fenêtre, ...) ?
Posté le 06 février 2009 - 16:30
BATLLE Thierry a écrit dans le message de news <bb6b6166a1479997a6b741942f9882c1@news.pcsoft> :
Bonjour,

Je suis fortement intéressé par votre méthode (image) pour créer les onglets.

Je dois mettre en place un application et dans une des fenêtre j'ai les numéros de produits qui remontent et je voudrais afficher chaque numéro dans un onglet. Lors d'un clic sur un onglet j'ai les informations de ce produits.

Pourriez-vous m'expliquer un peu plus en détail comment vous faites ? Et lors d'un clic sur un onglet image c'est quoi qui est géré (des plan, une fenêtre, ...) ?


Egalement fortement intéresser! Pourriez vous détaillez votre méthode?

Merci
Posté le 06 février 2009 - 17:03
Bonjour,

BATLLE Thierry a écrit dans le message de news
Pourriez-vous m'expliquer un peu plus en détail
comment vous faites ?


Dans le principe, c'est simplement une classe qui dessine les onglets.

Je vais essayer de sortir un controle d'une de mes applications pour vous mettre le code à disposition, ce qui n'est pas forcément facile et ne sera pas immédiat car elles sont apivores.

Et lors d'un clic sur un
onglet image c'est quoi qui est géré (des plan,
une fenêtre, ...) ?


Personnellement j'utilise beaucoup les fenêtres internes, mais cela peut être ce que vous voulez du moment que cela puisse un être conteneur (au sens Windev) comme un plan ou un superchamp.

amicalement,
--
Eric Boyron
Posté le 06 février 2009 - 18:59
Oki on attends ça avec impatience!
Enfin j'ai commencé une classe qui dessine les onglets justement, mais mon premier soucis c'est de savoir par exemple combien fera la taille du texte que l'ont veut mettre dans l'onglet?
Posté le 07 février 2009 - 03:13
Re'

Cerede2000 a écrit dans le message de news <8c427e92bb67b86d6217667bc5986cbc@news.pcsoft> :
Oki on attends ça avec impatience!
Enfin j'ai commencé une classe qui dessine
les onglets justement, mais mon premier soucis
c'est de savoir par exemple combien fera la
taille du texte que l'ont veut mettre dans l'onglet?


tagSIZE is structure
cx is system int
cy is system int
END

stSize is tagSIZE

nHDC is system int = dStartDrawing( "VotreChampImage" )

// dFont(...)

nRet is system int = API("GDI32", "GetTextExtentPoint32A", nHDC, &sVotreTexte, Length(sVotreTexte), &stSize)

LargeurDuTexte is int = stSize:cx


amicalement,
--
Eric Boyron
Posté le 07 février 2009 - 03:15
Pour la taille du texte vous pouvez utiliser GetTextExtentPoint32 de l'API Windows.
Posté le 07 février 2009 - 16:22
Ah oui merci :)
Quelles autres fonction d'API utilisez vous que cela me guide un peu?
Posté le 08 février 2009 - 22:58
Bon pour le moment je dessine des onglet (moche c'est juste un rectangle avec le nom), mais je rencontre des petits soucis.
Je n'arrive pas a scroller ma zone de dessin pour afficher les onglets qui "depassent".
Et je ne voit pas trop comment faire les boutons pour que ça puisse défiler? Vous les mettez dans la zone de dessin ou ce sont des bouton a l'extérieur?

Merci.

Si quelqu'un peut m'envoyer un truc qu'il a fait par mail. Merci ;)
Posté le 13 février 2009 - 10:19
Bonjour,

J'ai réussi à extraire un controle d'onglet de mon appli ce qui a été loin d'être simple car chaque classe s'appuie sur des dizaines d'autres classes, j'ai dû y aller à la hache donc je ne garantis pas le bon fonctionnement.
Pour ceux qui connaissent Eclipse, les onglets arrondis leur rappelleront quelque chose.
Uniquement testé sur Windev 11.
- Ajout, suppression d'onglets par programmation
- Bouton de fermeture d'onglets
- Drap'n drop d'onglet entre controles
- Chevrons
- Personnalisation, bitmap, couleurs, etc.

Je n'ai pas pu sortir de l'appli les fonctionnalités de barre d'outils ou de Docked Tab Mdi et autres, mais c'est pour le principe de programmation.

Copie écran




Disponible ici :
http://eboyron.club.fr/Sauvegarde_MNTLTab_2009-02-13.ZIP

cordialement,
--
Eric Boyron
Posté le 13 février 2009 - 10:39
Metem a formulé ce vendredi :
Bonjour,

J'ai réussi à extraire un controle d'onglet de mon appli ce qui a été loin d'être simple car chaque classe s'appuie sur des
dizaines d'autres classes, j'ai dû y aller à la hache donc je ne garantis pas le bon fonctionnement. Pour ceux qui connaissent
Eclipse, les onglets arrondis leur rappelleront quelque chose. Uniquement testé sur Windev 11.
- Ajout, suppression d'onglets par programmation
- Bouton de fermeture d'onglets
- Drap'n drop d'onglet entre controles
- Chevrons
- Personnalisation, bitmap, couleurs, etc.

Je n'ai pas pu sortir de l'appli les fonctionnalités de barre d'outils ou de Docked Tab Mdi et autres, mais c'est pour le
principe de programmation.

Copie écran




Disponible ici :
http://eboyron.club.fr/Sauvegarde_MNTLTab_2009-02-13.ZIP

cordialement,


Merci de ce partage.

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posté le 13 février 2009 - 11:19
Super merci à toi ;)
Posté le 13 février 2009 - 17:32
Cerede a écrit :
> Super merci à toi ;)

De rien. Certaines choses ont été jetées avec l'eau du bain, notamment ceci est assez important, rajouter dans le constructeur de la classe MNTLCtrl :

nInt is system int = Kernel::GetWindowLong(:m_nControlHwnd, GWL_STYLE)
Flag(nInt, WS_CLIPCHILDREN)
Flag(nInt, WS_CLIPSIBLINGS)
Kernel::SetWindowLong(:m_nControlHwnd, GWL_STYLE, nInt)

// Sous classe le controle


amicalement,
--
Eric Boyron
Posté le 26 novembre 2009 - 12:56
Salut Metem,
Je suis vraiment interessé par ce sujet mais en allant sur le lien ce n'est pas disponible.
Pourriez-vous nous le mettre à nouveau à disposition.
par avance merci.
Posté le 26 novembre 2009 - 12:57
Salut Metem,
Je suis vraiment interessé par ce sujet mais en allant sur le lien ce n'est pas disponible.
Pourriez-vous nous le mettre à nouveau à disposition.
par avance merci.
Posté le 26 novembre 2009 - 14:38
Bonjour,

Très intéressant en effet.
Pour pallier les problèmes liés à la programmation des onglets, je suis passé au systèmes des plans. Tout y est programmable.
Le choix du plan est dépendant d'une combo elle-même remplie de manière dynamique à partie d'un fichier.
Je positionne également les champs de manière dynamique à partie d'une liste
C'est simple et propre.

A+
Posté le 26 novembre 2009 - 15:41
Salut,
Le système de plan je le connais bien et ait implémenté cet aspect dans beaucoup de mes projets déja.
Mais l'approche onglet de METEM m'intéresse beaucoup plus car c'est une approche que j'ai déja beaucoup aimée sous Eclipse;voila pourquoi je demandais la disponibilité de son lien.
Par avance merci.
Posté le 28 novembre 2009 - 23:01
Bonjour tout le monde,

Sinon, si ça ne vous gêne pas de mettre un peu de .Net dans votre appli, vous pouvez construire un TabControl par programmation très facilement, sans passer par les API, avec un champ XAML et les fonctions XAMLxxx.

Cordialement ...
Posté le 08 décembre 2009 - 10:27
Bonjour,

J'ai remis à disposition le contrôle.




http://sedullus.free.fr/Sauvegarde_MNTLTab_2009-02-13.ZIP

amicalement,
--
Eric Boyron


Sessime a écrit dans le message de news <0303a02fe2c9fc1ccbf211221ab278c1@news.pcsoft> :
Salut,
Le système de plan je le connais bien et ait implémenté cet aspect dans beaucoup de mes projets déja.
Mais l'approche onglet de METEM m'intéresse beaucoup plus car c'est une approche que j'ai déja beaucoup aimée sous Eclipse;voila pourquoi je demandais la disponibilité de son lien.
Par avance merci.
Posté le 13 juin 2013 - 16:57
Merci à tous, je signal que c'est la première fois que j'interviens sur un forum, alors ......
j'ai moi aussi longtemps chercher et sans vouloir me vanter , avec tous les crack de windev dans le monde je suis étoné que personne ne veuille bien nous aider en nous donnant le tuyau.
Mais à force de me casser le crâne à chercher, j'ai fini par y arriver. et je tiens à dire ceci: windev n'est pas limité comme le croient certains, je crois plutôt que c'est nous sommes limités dans la connaissance des fonctionnalités de windev. j'aimerais donner un code teste mais je pense que vous orienter dans l'aide de windev serait la meilleure aide. et ensuite laisser parler votre génie: Regardez du côté de la fonction champclone()