bonjour,
je voudrais savoir s'il y a un moyen pour rendre un composant transparent
bonjour,
je voudrais savoir s'il y a un moyen pour rendre un composant transparent
Lequel ?
Des composants, il y en a plein !
un TGraphicControl, hérite le et retravaille la méthode Paint pour gérer la transparence
un TWinControl, certains seront plus facile à retravailler que d'autres, voir les Style VCL et le Style Hook
Quel type de transparence ?
Transparence totale, on voit ce qu'il y a derrière, le TPanel ou TGroupBox en ParentBackground à true est une parfaitement illustration
Si tu ajoutes un Panel par dessus un TImage et qu'il partage le même parent, tu verras l'image à travers le panel
Transparence avec un degré d'opacité ?
Le TForm le gère avec AlphaBlend et AlphaBlendValue, tu peux d'ailleurs, ensuite dessiner via des TShape et des panels imbriqués des trous dans la TForm
Et selon la valeur dans AlphaBlendValue, tu aurais un effet translucide plus ou moins élevée !
Enfin, voir les Régions Windows : Comment personnaliser la forme de sa fiche ?
En FMX : FMX.Controls.TControl.Opacity
bonjour,
et si on connaissait la version de DELPHI déjà ! ce que l'on peut faire avec XEn et FMX n'est pas la même chose que ce que l'on peut faire avec D7 .
Ensuite cette notion de transparence ?! c'est flou (sans jeu de mots) c'est dans quel but ? avoir un fond dans la grille , avoir une vrai transparence c.a.d voir une fiche sous-jacente ?
pour information un DBGrid est un Stringgrid amélioré , pour atteindre les déclarations privées , un "Hack" d'une dbgrid est faisable , j'en ai fait une démonstration il y a peu ici
je suis sur delphi 2009et si on connaissait la version de DELPHI déjà ! ce que l'on peut faire avec XEn et FMX n'est pas la même chose que ce que l'on peut faire avec D7 .
j'ai une fiche "form1" avec une image qui remplit toute la surface de le ficheEnsuite cette notion de transparence ?! c'est flou (sans jeu de mots) c'est dans quel but ? avoir un fond dans la grille , avoir une vrai transparence c.a.d voir une fiche sous-jacente ?
et je voudrais que le dbgrid ne cache pas l'image derrière
Bonjour,
C'est bien joli la transparence, mais il faut choisir si on veut avoir une bonne visibilité sur le contenu du dbgrid ou sur l'image de derrière : trop de transparence rend les infos illisibles.j'ai une fiche "form1" avec une image qui remplit toute la surface de le fiche et je voudrais que le dbgrid ne cache pas l'image derrière
Mais bon ça ne résout pas ton problème.
A+.
Re-bonjour,
Avec un coup d'oeil dans Google j'ai trouvé ici : http://delphiunair.blogspot.fr/2007/...nt-dbgrid.html
- un bout de code qui permet de rendre un dbgrid transparent,
- et une image qui montre bien que le texte du dbgrid est presque illisible à cause de la transparence.
Mais à chacun ses goûts.
A+.
@Gilbert , c'est pas tout a fait ce qui est voulu , mais je suis d'accord c'est carrément illisible !
@checkal si c'est le résultat voulu , smdbgrid le fait déjà chercher smcomponents , ainsi que la TMSGrid je crois
je vous remercie beaucoup pour l'exemple.
mais pour répondre à vos intégorations
j'utilise une fiche avec un Timage qui contient pas vraiment une photo mais bien des couleurs en dégradé et c'est pas du tout illisible.et une image qui montre bien que le texte du dbgrid est presque illisible à cause de la transparence.
c'est pas tout a fait ce qui est voulu , mais je suis d'accord c'est carrément illisible !
Bonjour,
... De rien, mais avant de remercier faudrait tester si l'exemple marche correctement car j'ai posté le lien sans tester le code.chekkal : je vous remercie beaucoup pour l'exemple.
A+.
Bien pensé @gilbert, je crois que j'ai crée victoire un peu trop tôt.
en effet, j'ai testé le code et il marche pas, déjà je sais pas à quoi sert le "panel1", je crois que l'erreur que j'ai faite que je n'ai pas crée le Tpanel
Bonjour,
... Dans ce cas enlèves le tag 'Resolu'.Chekkal : je crois que j'ai crée victoire un peu trop tôt.
en effet, j'ai testé le code et il marche pas.
Je crois la même chose car la procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;déjà je sais pas à quoi sert le "panel1", je crois que l'erreur que j'ai faite que je n'ai pas crée le Tpanel
Shift: TShiftState; X, Y: Integer) se termine par DBGrid1.refresh;
... ce qui laisse penser que le résultat n'apparaît qu'après avoir cliqué sur ce Panel1.
A+.
Bonjour,
Vérification faite, la transparence marche sans utiliser la procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Par contre il est nécessaire d'utiliser panel1 car la procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState) utilise la position du panel1 dans BitBlt(..)
En plus la procedure TForm1.DBGrid1DrawDataCell peut être modifiée pour obtenir de la transparence avec une StringGrid : voir le Zip.
Pour la DBGrid, la transparence apparaît au click sur le bouton, et je me suis simplifié la vie en l'appliquant aux 2 premières lignes.
Au fait, j'en profite pour une petite question : Quel est l'avantage d'utiliser DBGrid plutôt que StringGrid ???
A+.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager