Créé par D-évolution / Created by D-evolution -=@=- 2004-2008 QTButton v2 (Édition Lite): QTButton2LiteA = QButton > QTButtonL (nouveau) QTButton2LiteB = QCoolBtn > QTCoolBtnL (non disponible) Contient 2 SUBs vous permettant de transformer vos BUTTONs et COOLBTNs en TBUTTONs (True Buttons) Cette méthode réduite, offre en grande partie toutes les fonctionnalités de QTButton v2, incluant la fonction enjolivure. Elle réduit grandement votre code et permet l'utilisation de tableaux d'objet, qui d'ailleurs est la raison principale pour laquelle l'AddOn existe... Contient QTBUTTONL, une version réduite de QTBUTTON utilisant l'AddOns pour réduire le code... Vous allez réellement rehausser le look de vos programmes grâce à QTButton! L'un des points les plus important est qu'il est un vrai QButton et non un objet sur lequel est dessiné l'image d'un bouton, même si c'est le cas de QTButton. Le support XP vient ajouter un plus, permettant d'appliquer le thème en lieu du skin ou de simplement désactiver l'OwnerDraw pour permettre à Windows de dessiner le thème en cours. Toutes traductions est autorisées tant que la version originale est livrée avec la nouvelle! You are free to localize, as long the original version is packed with the new one! Comment ce projet est-il partie ? QTButton a été créé suite à une mauvaise manipulation d'une image que je désirais afficher sur un bouton, oui, essais et erreurs! C'est ainsi que j'ai découvert qu'en plaçant une simple image couvrant entièrement le bouton, je pouvais donc l'enjoliver, bien plus que d'y placer une simple icône à côté d'un texte. Il ne me restait plus qu'à créer un algorithme, jetez un coup d'oeil du côté de la source vous comprendrez, pour que l'image soit correctement affichée à tous les coups ou presque. Et voilà ! QTButton est né ! Maintenant, il me fallait une méthode simple et légère pour appliquer l'enjolivure sans trop de manipulation. Malheureusement, même si en principe tout ce que vous devez faire pour transformer un QButton en QTButton est de remplacer "As QButton" par "As QTButton", plus vous intégrez de QTButton, plus la taille finale de l'application augmente, et ce même si vous ne désirez/planifiez pas utiliser toutes les fonctions avancés de QTButton. Alors l'AddOns, le complément de QTButton, est né! =========================================================================== Utilisation :______________________________________________________________ Pour commencer, créez une ressource "btn_BMP" contenant l'image bitmap qui sera l'enjolivure de tous les QTButtons. NOTE: corrigé le message d'erreur lié à l'absence de btn_BMP lors de la compilation, donc $DEFINE skip_btn_BMP est sans effet... ex : $REsource btn_BMP As "Boutons.bmp" NOUVEAU La structure QTBtnParam reçoit tous les paramètres à passer à do_QTBtn de cette façon plusieurs groupes avec des apparences différentes peuvent être créés... L'AddOn intègre maintenant des paramètres QTBtnParam pré-réglés pour accélérer son utilisation; QTBtn.defParams ' Pour un bouton classique à la XP QTBtn.defTabParams ' Pour un bouton de type Onglet QTBtn.defToolParams ' Pour un bouton de type Barre d'outil Type QTBtnParam NumBMPs As Integer ' Puisque celui de rapidq est limité à 4 KindBMPDisabled As Integer AutoCheck As Integer AutoGroup As Integer Checked As Integer StyleEnabled As Integer XPThemeEnabled As Integer BtnType As Integer 'As String * 20 IconCount As Integer ' Même que NumBMPs, sera retiré IconWidth As Integer PushFXDisabled As Integer HotTrackEnabled As Integer ' HotFontEnabled As Integer ' Retiré; utiliser MouseEnter et MouseLeave ' HotFontColor As Integer ' HotFontStyles As String * 30 Rotation As Integer IconHandle As Long HideFocus As Integer ' MimicFocus As Integer ' Imite le focus en utilisant l'état survole ShowHintEx As Integer Transparent As Integer End Type ex : Dim mesBtnsParam As QTBtnParam WiTH mesBtnsParam .BtnType = xpbt_push .NumBMPs = 4 .Spacing = 4 ' .HotTrackEnabled = False ' .HotFontEnabled = False ' .HotFontColor = clBtnText ' .HotFontStyles = "Bold,Italic,Underline" End WiTH do_QTBtn ( _ mesBtnsParam, _ Bouton1 _ ) ou do_QTBtn ( _ QTBtn.defParams, _ Bouton1 _ ) Note: aucun des champs n'est obligatoire, surtout pour des valeurs comme False ou 0 Les méthodes; Pour un QButton do_QTBtn ( _ mesBtnsParam As QTBtnParam, _ Me As QButton _ ) Pour un QCoolBtn do_QTCBtn ( _ BtnType As String, _ PartID As Integer, _ NumBMPs As Integer, _ EnabledXPTheme As Integer, _ Me As QCoolBtn _ ) Les paramètres;____________________________________________________________ BtnType (Seul XP sera affecté) : Définit le type de bouton sous XP, 16 options possibles; -xpbt_Push = 0 (Bouton) <-défaut -xpbt_ToolBar = 1 (Barre d'outil) -xpbt_Tab = 2 (Onglet) -xpbt_ToolBarSplit = 3 -xpbt_ScrollBarVert = 4 -xpbt_ScrollBarHorz = 5 -xpbt_TrackBarVert = 6 -xpbt_TrackBarHorz = 7 -xpbt_Radio = 8 -xpbt_CheckBox = 9 -xpbt_ComboBox = 10 -xpbt_ToolTipClose = 11 -xpbt_Spin_Up = 12 -xpbt_Spin_Down = 13 -xpbt_Spin_Left = 14 -xpbt_Spin_Rigth = 15 ATTENTION: BtnType est désormais un entier... (valeur de 0 à 15) PartID : (N'est plus valide!) NumBMPs : Définit le nombre d'index contenue dans l'image à afficher sur le bouton... Puisque celui de RapidQ est limité à 4 et que QTBtnL peut utiliser un maximum de 5 images... (valeur de 1 à 5, ce sont les mêmes de QButton) Kind : (N'est plus valide! Récupère la propiété Kind du bouton) KindBMPDisabled : Conserve ou non l'icône que la propriété Kind applique à un bouton NOTE: Sera ignoré si LookForIcon = True (valeur Vrai ou Faux) Layout : (N'est plus valide! Récupère la propiété Layout du bouton, mais les valeurs sont utilisables) Définit l'emplacement du texte et de l'icône sur le bouton. -balBMPLeft = 0 ' RAPIDQINC blBMPLeft -balBMPRight = 1 ' RAPIDQINC blBMPRight -balBMPTop = 2 ' RAPIDQINC blBMPTop -balBMPBottom = 3 ' RAPIDQINC blBMPBottom -balBMPLeftFixed = 4 ' Nouveau -balBMPRightFixed = 5 ' Nouveau (valeur de 0 à 5, ce sont les mêmes de QButton) Spacing : (N'est plus valide! Récupère la propiété Spacing du bouton) Checked (anciennement DownState) : Force l'état enfoncé en modifiant la position de l'index enfoncé sur l'image. (valeur Vrai ou Faux) StyleEnabled (NOUVEAU) : Active le style QTButton, sans quoi le bouton est dessiné par RapidQ... (valeur Vrai ou Faux) XPThemeEnabled : (Seul XP sera affecté) : Active ou désactive le support XP sur un bouton donné. (valeur Vrai ou Faux) NOUVEAU placer la valeur 2 pour désactiver l'enjolivure et passer en mode vrai support XP... vous aurez besoin d'un fichier Manifest! LookForIcon : (N'est plus valide, avec la disparission de QTBtn.Icon) IconCount : (Idem que NumBMPs, sera retiré!) ICO (Version OBJET) : (N'est plus valide, utiliser la propriété BMP du bouton) NumICOs (Version OBJET) : (N'est plus valide, voir NumBMPs) (voir IconCount) RePaint (Version OBJET) : Applique les changements apportés à la version objet de QTButtonL (SUB) IconHandle (NOUVEAU) [Propriété icône, voir plus bas pour la version Objet]: Contient l'handle d'une icône valide... PushFXDisabled (NOUVEAU) : (Inactif pour le moment) Élimine l'effet enfoncé de l'image et du texte, lorsque l'on clique sur le bouton. (valeur Vrai ou Faux) HotTrackEnabled (NOUVEAU) : Applique un effet survole au Button, en plus de retourner les messages MouseEnter et MouseLeave à l'aide de QTBtn.MouseEnter et QTBtn.MouseLeave. (valeur Vrai ou Faux) NOTE: OnMouseMouse n'est plus hérité... HotFontEnabled (NOUVEAU) : (Inactif utiliser QTBtn.MouseEnter et QTBtn.MouseLeave) Active / désactive les nouvelles propriétés de police lorsque .HotTrack = True. (valeur Vrai ou Faux) HotFontColor (NOUVEAU) : (Inactif utiliser QTBtn.MouseEnter et QTBtn.MouseLeave) Défini la couleur du texte lorsque le bouton est survolé. (valeur de couleur) HotFontStyles (NOUVEAU) : (Inactif utiliser QTBtn.MouseEnter et QTBtn.MouseLeave) Défini les nouveaux styles (Gras, Italique, Sous-ligner, ...) du texte lorsque le bouton est survolé. (valeur chaîne de texte) ex: .HotFontStyles = "Bold, Italic, Underline" HideFocus (NOUVEAU) : Ce dernier empêche les rectangle de sélection d'être dessiné (valeur Vrai ou Faux) ShowHintEx (NOUVEAU) [ShowHint pour la version Objet]: Ce dernier permet d'afficher l'info-bulle, style classique (RapidQ) ou style personnalisé... (valeur Vrai ou Faux [2 pour appliquer le style personnalisé dans la version objet]) NOTE: la version objet surclasse la propriété ShowHint existante Transparent (NOUVEAU) : Imite la transparence en utilisant l'arrière-plan du contrôle parent comme fond. (valeur Vrai ou Faux) AutoCheck (NOUVEAU) : Agit comme une case à cocher... (valeur Vrai ou Faux) AutoGroup (NOUVEAU) : Agit comme un bouton radio. Les boutons avec cette propriété ayant le même parent réagiront lorsque l'état de l'un eux sera modifié... (valeur Vrai ou Faux) [Propriété de l'icône de la version objet] Icon.FileName ' Le chemin du fichier .ico Icon.Count ' Récupère le nombre d'icône contenu dans le fichier .ico Icon.Handle ' Contient l'handle d'une icône et sera effacé après utilisation ' Utilisé pour afficher correctement les icônes XP Icon.Index ' Contient l'index de l'icône à afficher Icon.Small ' Détermine si la taille de l'icône à récupérer est Petite (Vrai) ' ou Large (Faux) Icon.Width ' Taille en pixel de l'icône Me : Spécifier ici le nom de votre bouton que vous désirez transformer en QTButton... Les options spéciales :____________________________________________________ $DEFINE skip_btn_BMP: (N'est plus valide!) QTBtn_DefPixelFormat: (N'est plus valide!) do_QTBtn_MouseMove(...) (N'est plus valide!) do_XPizeBtn (Me As QButton) Pour appliquer le support XP simplement Note: Utiliser QTBtn.CheckXPManifest() pour créer un fichier .manifest do_QTBtnHot(...) (N'est plus valide!) QTBtn.CheckXPManifest (Relaunch As Integer) Vérifie si un fichier Manifest doit être créé et en crée un au besoin... Si Relaunch = True, l'application est relancée au besoin, évitant de devoir la relancer manuellement pour que le thème de Windows XP soit utilisé. Utile lors d'une première compilation! NOTE: Vérifie aussi la présence de la ressource "24" (RT_MANIFEST) intégrée à l'application. Les arguments de la ligne de commande sont eux aussi retournés lors du relancement, de façon à que ce soit le plus transparent possible! $DEFINE __ADDONASOBJECT (N'est plus valide! QTButtonL est officiel!) Active la version objet de l'AddOn... elle n'est pas intégrée par défaut n'étant pas officielle... ex: $DEFINE __ADDONASOBJECT CREATE Form AS QFORM ... CREATE Button1 AS QTBUTTONL Caption = "Bouton1" ... XPThemeEnabled = True HotTrackEnabled = True RePaint ' Applique les changements END CREATE ... END CREATE TTIP.AttachToolTip (m_hControl As Long, m_sHint As String) Assigne une info-bulle à un objet et passe le texte à afficher m_hControl: est l'handle du contrôle m_sHint: est l'astuce à afficher NOTE: Peut ne pas fonctionner avec certains objets (QEdit, QListView, ...) ex: ' pour l'AddOn Button1.Hint = "Allo!" Dim mesBtnsParam As QTBtnParam WiTH mesBtnsParam .StyleEnabled = True .BtnType = xpbt_push .HotTrackEnabled = False '... .ShowHintEx = True ' Active la nouvelle info-bulle End WiTH do_QTBtn ( _ mesBtnsParam, _ Bouton1 _ ) ou ' pour la version objet Button1.Hint = "Allo!" Button1.ShowHint = 2 ' 0 -Aucune astuce, 1 -Astuce classique, 2 -Nouvelle info-bulle ou Button1.Hint = "Allo!" TTIP.AttachToolTip (Button1.Handle, Button1.Hint) TTIP.DetachToolTip (m_hControl As Long) Retire l'info-bulle associée à un objet m_hControl: est l'handle du contrôle Exemple d'utilisation :____________________________________________________ Utilisation simple : ex: Dim mesBtnsParam As QTBtnParam do_QTBtn( mesBtnsParam, Button1) 'Button1 étant un QButton existant Appliquer une icône à un bouton : ex: Button1.BMP = votre_image.BMP ou Button1.BMPHandle = nom_de_la_ressource_bmp Dim mesBtnsParam As QTBtnParam WiTH mesBtnsParam .StyleEnabled = True '.XPThemeEnabled = True .BtnType = xpbt_push End WiTH do_QTBtn( mesBtnsParam, Button1 ) 'Button1 étant un QButton existant Pour récupérer le survole et la sortie utiliser QTBtn.MouseEnter et QTBtn.MouseLeave NOTE: Ne pas utiliser si le vrai support XP est activé sur ce bouton! ex: ' Lancé lorsque le curseur survole le bouton Sub QTBtn.MouseEnter(hWnd As Long) ' hWnd contient l'handle du bouton Select Case hWnd Case Button1.Handle Button1.Font.Color = clHilight Case Button2.Handle Button2.Font.Color = clHilight Case Else End Select End Sub ' Lancé lorsque le curseur quitte le bouton Sub QTBtn.MouseLeave(hWnd As Long) ' hWnd contient l'handle du bouton Select Case hWnd Case Button1.Handle Button1.Font.Color = clBtnText Case Button2.Handle Button2.Font.Color = clBtnText Case Else End Select End Sub Personnaliser l'info bulle ' Couleur de l'info-bulle ' Couleur du texte de l'info-bulle ' Index de l'icône (TTI_NONE, TTI_INFO, TTI_WARNING, TTI_ERROR) ' Style d'info-bulle (ToolTipBalloon, ToolTipStandard) ' Centre l'info-bulle en rapport à son parent ' Marge intérieur ' Délais avant d'afficher l'info-bulle ' Durée d'affichage de l'info-bulle ' Degrée d'opacité ' Largeur de l'info-bulle ' Titre de l'info-bulle ' Image à intégrer (peut être un fichier existant ou l'handle ' d'un bitmap), "Size" contient les coordonnées et les ' dimensions de l'image ex: Button1.Hint = "Button1 classe::QTButtonL" +rqSL +"Ma nouvelle info-bulle" +rqNullChar + _ "" Button1.ShowHint = 2 ' Active la nouvelle info-bulle ou WiTH mesBtnsParam '... .ShowHintEx = True ' Active la nouvelle info-bulle End WiTH do_QTBtn ( _ mesBtnsParam, _ Bouton1 _ ) ou TTIP.AttachToolTip (Button1.Handle, Button1.Hint) =========================================================================== ' MISE À JOUR ' (??/??/2005) ------------- ' -L'addon est désormais indépendant de QTButton, vous pouvez donc l'utiliser ' seul ' (02/09/2006) ------------- ' -Le texte d'un bouton inactif est corrigé et apparaît dans la bonne couleur ' -DownState force l'état enfoncé en modifiant la position de l'index enfoncé ' sur l'image ' -Renommé Fast_QBtnToQTBtn -> do_QTBtn (Mettre vos sources à jour!) ' -Renommé Fast_QCBtnToQTBtn -> do_QTCBtn (Mettre vos sources à jour!) ' -Renommé Fast_QTBtn_MouseMove -> do_QTBtn_MouseMove (Mettre vos sources à jour!) ' -XPThemeEnabled active/désactive le support XP d'un bouton donné ' (05/09/2006) ------------- ' -Ajouté le support de l'icône perso sur le bouton à l'aide de QTBtn_IconBtnContainer ' (14/02/2007) ------------- ' -Édition Lite A, est une version allégée, sans support QCoolBtn ' -Édition Lite B, est une version allégée, sans support QButton ' -Vrai support XP finalement intégré (désolé pour le délais) ' do_XPizeBtn(QButton) ou placer 2 dans le paramètre XPThemeEnabled ' -Utiliser do_QTBtnHot(QButton) pour appliquer le support du survole rapidement ' attention cette méthode annuler OnMouseMove, utiliser do_QTBtn_MouseMove ' dans votre propre méthode pour ne pas l'annuler et n'oubliez pas d'hériter. ' -Ajouter une astuce pour contourner l'ajout obligatoire d'une ressource nommée ' btn_BMP. Jusqu'ici QTButton obligeait la création d'une ressource nommée btn_BMP, ' sans quoi le compilateur produisait une erreur, avec cette astuce, ce ne sera ' plus le cas et votre source finale sera plus petite puisque btn_BMP n'est plus ' obligatoire. ' Pour l'utiliser : ' placer $DEFINE skip_btn_BMP avant d'inclure QTButton_AddOns???.inc ' (15/02/2007) ------------- ' -Tous les paramètres de QBtn placés dans une structure (Type) à passer à do_QTBtn. ' do_QTBtn(myType, QButton) ' De cette façon il y aura une meilleurs compatibilité entre les versions. ' (16/10/2007) ------------- ' -Corrigé une erreur de frappe dans QTBtn_IconBtnContainer ' -Explique comment résoudre le problème avec des icônes différents pour chaque ' boutons, voir "Appliquer une icône au bouton" ci-haut. Ce problème pourrait être ' corrigé avec l'utilisation d'une imageList. ' -myParam.Layout = 4 place le texte centré à gauche à 4 pixel du bord. ' -Support partiel du multi-ligne ' (21/10/2007) ------------- ' -À cause de certains problèmes d'affichage que peut donner un bitmap 15bit, le ' nombre de couleur du skin avait été restreint à 15bits (256 couleurs indexés), ' maintenant cette fonction est déverrouillée. ' Par défaut, elle correspond désormais aux paramètres d'affichage et en cas de soucis, ' elle pourra donc être modifiée... ' Pour modifier le nombre maximal de couleur, ajouter cette ligne après avoir inclu ' QTButton_AddOnsXX.inc; ' QTBtn_DefPixelFormat = pfFormat ' voir "Les options spéciales" pour les choix ' -myParam.DisablePushFX élimine l'effet enfoncé pour l'image et le texte, lorsque ' l'on clique sur le bouton. ' -L'effet survole peut aussi être activé par la structure QTBtnParam avec ' myParam.HotTrack = True ' (23/10/2007) ------------- ' -Corrige enfin la disparition du rectangle de sélection lorsque l'effet survole ' est activée... génère un léger scintillement, mais comme je n'utilise pas de hook ou ' de Procédure, je n'vois pas comment faire mieux... ' -Corrige certains problèmes lorsque des données sont absentes de la structure ' -Ajouté une option pour modifier les propriétés de police pour le survole ' myParam.HotFontEnabled ' Active/Désactive les nouvelles propriétés ' myParam.HotFontColor ' Défini la nouvelle couleur du texte ' myParam.HotFontStyles ' Redéfini le style ' (28/10/2007) ------------- ' -Corrigé un problème avec les QBitmaps. Normalement à chaque appel, ils devaient se vider, ' hors ce n'était pas le cas, l'appel précédent était présent à chaque création de bouton, ' ce qui avait pour cause de redessiner l'image du bouton/de l'icône précédente derrière ' la nouvelle. Ce problème n'était pas réellement visible, mais avec les récents ' changements, il est devenu visible! ' -QTButton est de retour, mais cette fois QTButtonLite... ! ' Loin d'être officiel, compense pour ceux qui préfèrent les objets. Toute fois ce dernier ' est simplifié face à son grand frère et réutilise donc le code de l'AddOn, en outre que ' la portion enjolivure... ' Voici une liste des nouvelles propriétés: ' QTButtonL: ' BtnType As Integer ' DownState As Integer ' KindBMPDisabled As Integer ' XPThemeEnabled As Integer ' PushFXDisabled As Integer ' HotTrackEnabled As Integer ' HotFontEnabled As Integer ' HotFontColor As Integer ' HotFontStyles As String ' ICO AS QBitmap ' remplace IconContainer ' NumICOs AS Integer ' remplace IconCount ' ' QTButton pourrait peut-être revu... avec une dépendence inverse à l'AddOn... =P ' -Corrigé la transparence suite à l'utilisation de Button.Color... ' Button.Color contient la couleur d'arrière-plan, celle du parent, en utilisant .Color ' l'AddOn redessine le fond du skin avec la bonne couleur d'arrière-plan ' (29/10/2007) ------------- ' -Intégration du multi-ligne terminée! ' -Ajouter balBMPRightFixed ' -Corrections mineurs de la source ' (31/10/2007) ------------- ' -myParam.Kind est retiré du groupe, .kind avait été principalement intégré pour récupérer ' l'image que le paramètre Button.Kind applique au bouton après avoir appliqué l'Addon... ' L'AddOn récupère maintenant cette dernière directement depuis l'exécutable, ce qui devrait ' aider à corriger le problème connu qui affecte une fenêtre invisible contenant un bouton ' dont l'AddOn est appliqué... ' -myParam.KindBMPDisabled; Conserve ou non l'icône que .Kind applique au bouton... ' -Si Button.Kind est supérieur à bkNone, l'AddOn vérifie si le titre est en anglais et ' si c'est le cas, il le traduit en français... ' -myParam.PartID disparaît et myParam.BtnType devient un Entier, il sera donc plus facile de ' le modifier sans avoir à consulter la doc pour connaître les types disponible... Et de ' nouveaux types de bouton viennent s'ajouter à myParam.BtnType ' (2/11/2007) ------------- ' -Corrigé l'état enfoncé de l'image lorsque myParam.DownState = True pour le thème Xp ' (7/11/2007) ------------- ' -Ajouter QTBtn.CheckXPManifest(), il vérifie si un fichier Manifest doit être créé et en crée ' un au besoin... ' -Attention, certaines propriétés ont été renommées...! ' (8/11/2007) ------------- ' -QTBtn.CheckXPManifest() vérifie aussi la présence de la ressource "24" (RT_MANIFEST) en plus ' de relancer l'application si besoin... ' -Mis à jour GetVersion pour prendre en compte Vista... ' (10/11/2007) ------------- ' -J'ai inclu un QTBtnParam rapide d'accès pour débuter rapidement, évitant ainsi de devoir en ' créer un pour une utilisation de base... ' do_QTBtn (QTBtn.defParams, monBouton) ' (12/11/2007) ------------- ' -Renommé QTBtn_IconBtnContainer -> QTBtn_Icon, ' QTBtn_IconBtnContainer ça faisait vraiment long! =P ' (16/11/2007) ------------- ' -Corrigé le doublon clNone qui provoque une erreur lors de la compilation ' -Ajouté les paramètres manquants de la version Objet dans la doc (ICO, RePaint) ' (25/11/2007) ------------- ' -Corrigé les exemples suite aux changements de QTBtn_Icon ' -Ajouté un nouveau paramètre ValidIconHandle, pour le moment ce paramètre n'est pas officiel, ' comme j'avais besoin d'une fonction permettant d'afficher correctement une icône 32bits, le ' voici... ' Comme son nom l'indique, il doit contenir l'handle valide d'une icône, idéalement une icône ' 32bits, sinon il vaut mieux passer par QTBtn_Icon ou ICO pour la version objet. ' -Ajouté un paramètre pour empêcher le rectangle de sélection d'apparaître, utile pour les ' boutons de type "Barre d'outil" ou "Onglet" où le rectangle n'est pas toujours le bienvenue. ' Merci à Jacque pour son alternative à WndProc! ' Pour masquer le rectangle de sélection ajouter le paramètre .HideFocus = True, fonctionne ' tant pour la version Objet que pour la version Lite. ' -Cette nouvelle version utilise une Procédure Windows, alors si vous éprouvé des problèmes, ' il serait bon de les partager... ' (1/12/2007) ------------- ' -L'AddOn intègre un nouveau contrôle Info-bulle (Hint) personnalisable, qui substitue l'ancien. ' Pour l'utiliser, il suffit de passer 2 dans le paramètre .ShowHint du bouton... À noter que ' la version objet sur-classe .ShowHint, alors que pour la version AddOn il faut utiliser ' .ShowHintEx = True! ' l'info-bulle n'est pas totalement dépendant de l'AddOn et devrait donc être utilisable pour ' la plupart des objets en utilisant TTIP.AttachToolTip(HandleDuContrôle, AstuceDuContrôle) pour ' l'assigner et TTIP.DetachToolTip(HandleDuContrôle) pour le détacher/détruire du contrôle. ' Pour connaître les détails comment personnaliser l'info-bulle voir la doc ci-haut... ' -Corrige un problème lorsque l'info-bulle se masque et que le curseur se trouve sur le btn ' ' (13/12/2007) ------------ ' -Good Bye! QTButton! et Joyeuses Fêtes à QTButton v2... ! ' -Encore une nouvelle version, cette fois-ci il sagit d'une révision complète, l'AddOn brise ' la compatibilité avec QTButton et devient QTButton2 grace à sa version objet introduite ' récemment! ' Le code source a été nettoyé de certains morceaux de code de l'ancienne version de QTButton... ' Certaines propriétés de l'AddOn ont carrément disparues alors que d'autres se sont ajoutées... ' Cette nouvelle version utilise un sur-classement pour mieux gérer certaines propriétés; ' Masquer le rectangle de sélection, État sélectionné, État coché, nouvelle info-bulle, ' événement MouseEnter, événement MouseLeave, AutoCheck, AutoRadio, Transparence, ... ' L'événement OnMouseMove et la propriété BMP du bouton sont libérés et agissent comme pour une ' QButton standard... ' Le fastidieu QTBtn_Icon (QTBtn_IconBtnContainer) n'est plus valide, QTBtn récupère ' l'image du bouton... ' -Fini le message d'erreur "Line X: ERROR: Expected a resource handle but got BTN_BMP", ' lorsque la ressource "BTN_BMP" n'est pas créé avant d'inclure "QTButton2LiteX.inc" ou ' que "skip_btn_BMP" n'est pas défini! Note: skip_btn_BMP n'existe plus... ' (15/12/2007) ' -Nouvelle propriété "Transparent", applique un effet de Transparence, en récupérant ' l'arrière-plan du parent... utile lorsque l'on dessine une image sur le fond de la fenêtre ' parent. ' -Revu la façon de vérifier si l'application est thèmée... ' (20/01/2008) ' -Toujours le même vieux bogue, les boutons des fenêtres additionnelles doivent être initialisés ' dans OnShow, sinon y'a un risque de conflit... ' Affin d'éviter tout conflit, il est préférable de créer un premier bouton non utilisable ' (Astuce à utiliser dans le cadre d'un projet contenant plusieurs fenêtres) ' (21/01/2008) ' -Corrige la transparence des boutons lorsque l'application n'est pas thèmée et que la Propriété ' Transparent du bouton est True ' (27/01/2008) ' -La doc est prête pour la version objet... puis suivra l'AddOn... =) ' -L'état sélectionné (coché) est automatiquement modifié, sans passer par RePaint, si l'on passe ' par la propriété .Checked autre que dans la construction ' (30/01/2008) ' -Mise à jour de la doc, deux versions sont disponible, l'une classique (sans image) et la seconde ' contient des images fusionnées par IE7 (pour FireFox et Mozilla, je crois qu'il existe une ' extension pour pouvoir afficher cette dernière)... ' (02/02/2008) ' -Corrections mineurs dans la doc... futur optimisation à prévoir... ;) ' (04/02/2008) ' -Un bouton sans parent est créé par défaut pour résoudre un vieux bogue avec RapidQ, où le premier ' bouton est mal dessiné. ' -Bogue détecté avec OpenDialog, mais peut aussi affecter d'autres dialogues. Le problème est causé ' par l'événement WM_MouseLeave qui tente de retourner l'événement à travers QTBtn.MouseLeave ou ' QTBtn.MouseEnter qui n'existe pas alors que HotTrack est activé pour ce bouton. Pour résoudre ' le problème d'intégrer les SUBs QTBtn.MouseLeave et QTBtn.MouseEnter dans votre code... : ' SUB QTBtn.MouseLeave ' END SUB ' SUB QTBtn.MouseEnter ' END SUB ' (06/02/2008) ' -Corrige un bogue important causé par TrackMouseEvent et ModalResult. Dû à un bogue le message ' ModalResult retourné lorsqu'une fenêtre est affichée en utilisant ShowModal n'était pas ' retourné. ' -Corrige partiellement le problème avec WM_MouseLeave et WM_MouseEnter cité le 4fév, remplacé ' Call par CallFunc. ' -Si le suivi de la souris est toujours problématique, il est possible de désactiver le message ' de retour en utilisant QTBtn.ReturnMouseTrackingDisabled = True, d'ici à ce que je trouve une ' solution... tant que les SUBs QTBtn.MouseLeave et QTBtn.MouseEnter sont présents le problème ' disparaît... IMPORTANT : QTButton n'est plus supporté, seul l'AddOn maintenant QTButtonv2 est supporté. voir la documentation ci-haut pour connaître les détails de cette nouvelle version allégée (QTButtonL)... Vous avez un problème, une remarque ou même une amélioration, ne vous gênez pas à le faire savoir sur le forum, si je passe par là, j'y jetterai un petit coup d'oeil, mais je suis sure que quelqu'un aura déjà répondu à votre problème! Y'a que du bon monde! =P NOTE : Cette version texte contient les derniers changements qui parfois ne se retrouvent pas dans la version .doc... ' À FAIRE : ' -récupérer la position de l'info-bulle, et corriger la position de l'image, si l'info-bulle est ' plus haute ou plus basse ' -Retirer LookForIcon puisque IconCount fait l'affaire surtout avec l'ajout de KindBMPDisabled ' ou renommer par IconEnabled ' -Renommer IconCount -> NumICOs pour éviter la confusion avec la version objet ' -Mettre à jour la version QCoolBtn ' -Intégrer AutoSize ' -Ajouter un paramètre pour verrouiller les dimensions du thème et un autre pour les dimensions ' -Appliquer des effets pour les différents états de l'icône... ' -Rotation, le bouton est pivoter de 90°, 180°, -90° (90° *Rotation) ' Code partiellement en place... ' -Boutons avec couleur ' -Utilisation d'une imageList ' -Une vrai doc! =p ' -Err dans la doc; TextRect(QRect, ...) -> TextRect(RECTAPI, ...)