Bonjour j'ai trouvé un code qui rend transparent un Frame, c'est très
pratique, malheureusement mes optionButton ne le son pas et je n'arrive pas a
les rendre transparent même en modifiant la fonction "Function
FrameTranz(Ctrl As Frame)" en "Function ButtonTranz(Ctrl As OptionButton)"
mais peut etre n'est ce pas possible, il ne plante pourtant pas...
J'ai: - une form avec une image en fond
- un frame dessus
- un OptionButton a rendre transparent
- un cmd pour lancer le tout
si qqn peux me dire ou ça cloche... peut etre qu'il n'y a pas moyen de
modifier la fonction pour un OptionButton
Option Explicit
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _
As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _
As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _
As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _
As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _
As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _
ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, _
ByVal x As Long, ByVal y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _
As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public CtrlDc As Lon
------------------------------------------------------------------------------------------------
Public Function FrameTranz(Ctrl As Frame) As Long
Dim lHoch As Long
Dim lBreit As Long
Dim lTemp As Long
Dim lSkin As Long
Dim lStart As Long
Dim lZeile As Long
Dim lSpalte As Long
Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl
' bei Form.ScaleMode = vbTwips
lHoch = .Height / Screen.TwipsPerPixelY
lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1
lSpalte = 0
Do While lSpalte < lBreit
Do While lSpalte < lBreit And GetPixel(CtrlDc, lSpalte, lZeile) =
lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte < lBreit Then
lStart = lSpalte
Do While lSpalte < lBreit And GetPixel(CtrlDc, lSpalte, lZeile) <>
lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte > lBreit Then lSpalte = lBreit
lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1)
Call CombineRgn(lSkin, lSkin, lTemp, 2)
Call DeleteObject(lTemp)
End If
Loop
Next lZeile
End With
FrameTranz = lSkin
End Functio
------------------------------------------------------------------------------------------------
Public Sub FrameTransparent(Ctrl As Frame)
Dim lSkin As Long
Ctrl.Visible = True
lSkin = FrameTranz(Ctrl)
Call SetWindowRgn(Ctrl.hwnd, lSkin, True)
End Su
------------------------------------------------------------------------------------------------
Public Function ButtonTranz(Ctrl As OptionButton) As Long
Dim lHoch As Long
Dim lBreit As Long
Dim lTemp As Long
Dim lSkin As Long
Dim lStart As Long
Dim lZeile As Long
Dim lSpalte As Long
Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl
' bei Form.ScaleMode = vbTwips
lHoch = .Height / Screen.TwipsPerPixelY
lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1
lSpalte = 0
Do While lSpalte < lBreit
Do While lSpalte < lBreit And GetPixel(CtrlDc, lSpalte, lZeile) =
lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte < lBreit Then
lStart = lSpalte
Do While lSpalte < lBreit And GetPixel(CtrlDc, lSpalte, lZeile) <>
lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte > lBreit Then lSpalte = lBreit
lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1)
Call CombineRgn(lSkin, lSkin, lTemp, 2)
Call DeleteObject(lTemp)
End If
Loop
Next lZeile
End With
ButtonTranz = lSkin
End Function
------------------------------------------------------------------------------------------------
Public Sub ButtonTransparent(Ctrl As OptionButton)
Dim lSkin As Long
Ctrl.Visible = True
lSkin = ButtonTranz(Ctrl)
Call SetWindowRgn(Ctrl.hwnd, lSkin, True)
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques93
Bonjour michael, michael a écrit :
Bonjour j'ai trouvé un code qui rend transparent un Frame, c'est très pratique, malheureusement mes optionButton ne le son pas et je n'arrive pas a les rendre transparent même en modifiant la fonction "Function FrameTranz(Ctrl As Frame)" en "Function ButtonTranz(Ctrl As OptionButton)" mais peut etre n'est ce pas possible, il ne plante pourtant pas... J'ai: - une form avec une image en fond - un frame dessus - un OptionButton a rendre transparent - un cmd pour lancer le tout si qqn peux me dire ou ça cloche... peut etre qu'il n'y a pas moyen de modifier la fonction pour un OptionButton
Essaie avec, dans le code de feuille : '--------------------------------------- Option Explicit
Private Sub Form_Load() Me.Frame1.BackColor = &HFF& Me.Option1.BackColor = &HFF& End Sub
Private Sub Command1_Click() FrameTransparent Me.Option1 FrameTransparent Me.Frame1 End Sub '----------------------------------------
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _ As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _ As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _ As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _ As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _ As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _ ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _ ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _ As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public CtrlDc As Long
Public Function FrameTranz(Ctrl As Object) As Long Dim lHoch As Long Dim lBreit As Long Dim lTemp As Long Dim lSkin As Long Dim lStart As Long Dim lZeile As Long Dim lSpalte As Long Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl ' bei Form.ScaleMode = vbTwips lHoch = .Height / Screen.TwipsPerPixelY lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1 lSpalte = 0 Do While lSpalte < lBreit Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) = lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte < lBreit Then lStart = lSpalte Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) <> lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte > lBreit Then lSpalte = lBreit lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1) Call CombineRgn(lSkin, lSkin, lTemp, 2) Call DeleteObject(lTemp) End If Loop Next lZeile End With
FrameTranz = lSkin End Function
'------------------------------------------------------------------------------------------------ Public Sub FrameTransparent(Ctrl As Object) Dim lSkin As Long
Ctrl.Visible = True lSkin = FrameTranz(Ctrl) Call SetWindowRgn(Ctrl.hwnd, lSkin, True) End Sub
-- Cordialement,
Jacques.
Bonjour michael,
michael a écrit :
Bonjour j'ai trouvé un code qui rend transparent un Frame, c'est très
pratique, malheureusement mes optionButton ne le son pas et je n'arrive pas a
les rendre transparent même en modifiant la fonction "Function
FrameTranz(Ctrl As Frame)" en "Function ButtonTranz(Ctrl As OptionButton)"
mais peut etre n'est ce pas possible, il ne plante pourtant pas...
J'ai: - une form avec une image en fond
- un frame dessus
- un OptionButton a rendre transparent
- un cmd pour lancer le tout
si qqn peux me dire ou ça cloche... peut etre qu'il n'y a pas moyen de
modifier la fonction pour un OptionButton
Essaie avec, dans le code de feuille :
'---------------------------------------
Option Explicit
Private Sub Form_Load()
Me.Frame1.BackColor = &HFF&
Me.Option1.BackColor = &HFF&
End Sub
Private Sub Command1_Click()
FrameTransparent Me.Option1
FrameTransparent Me.Frame1
End Sub
'----------------------------------------
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _
As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _
As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _
As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _
As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _
As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _
ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _
As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public CtrlDc As Long
Public Function FrameTranz(Ctrl As Object) As Long
Dim lHoch As Long
Dim lBreit As Long
Dim lTemp As Long
Dim lSkin As Long
Dim lStart As Long
Dim lZeile As Long
Dim lSpalte As Long
Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl
' bei Form.ScaleMode = vbTwips
lHoch = .Height / Screen.TwipsPerPixelY
lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1
lSpalte = 0
Do While lSpalte < lBreit
Do While lSpalte < lBreit And _
GetPixel(CtrlDc, lSpalte, lZeile) = lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte < lBreit Then
lStart = lSpalte
Do While lSpalte < lBreit And _
GetPixel(CtrlDc, lSpalte, lZeile) <> lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte > lBreit Then lSpalte = lBreit
lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1)
Call CombineRgn(lSkin, lSkin, lTemp, 2)
Call DeleteObject(lTemp)
End If
Loop
Next lZeile
End With
FrameTranz = lSkin
End Function
'------------------------------------------------------------------------------------------------
Public Sub FrameTransparent(Ctrl As Object)
Dim lSkin As Long
Ctrl.Visible = True
lSkin = FrameTranz(Ctrl)
Call SetWindowRgn(Ctrl.hwnd, lSkin, True)
End Sub
Bonjour j'ai trouvé un code qui rend transparent un Frame, c'est très pratique, malheureusement mes optionButton ne le son pas et je n'arrive pas a les rendre transparent même en modifiant la fonction "Function FrameTranz(Ctrl As Frame)" en "Function ButtonTranz(Ctrl As OptionButton)" mais peut etre n'est ce pas possible, il ne plante pourtant pas... J'ai: - une form avec une image en fond - un frame dessus - un OptionButton a rendre transparent - un cmd pour lancer le tout si qqn peux me dire ou ça cloche... peut etre qu'il n'y a pas moyen de modifier la fonction pour un OptionButton
Essaie avec, dans le code de feuille : '--------------------------------------- Option Explicit
Private Sub Form_Load() Me.Frame1.BackColor = &HFF& Me.Option1.BackColor = &HFF& End Sub
Private Sub Command1_Click() FrameTransparent Me.Option1 FrameTransparent Me.Frame1 End Sub '----------------------------------------
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _ As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _ As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _ As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _ As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _ As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _ ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _ ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _ As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public CtrlDc As Long
Public Function FrameTranz(Ctrl As Object) As Long Dim lHoch As Long Dim lBreit As Long Dim lTemp As Long Dim lSkin As Long Dim lStart As Long Dim lZeile As Long Dim lSpalte As Long Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl ' bei Form.ScaleMode = vbTwips lHoch = .Height / Screen.TwipsPerPixelY lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1 lSpalte = 0 Do While lSpalte < lBreit Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) = lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte < lBreit Then lStart = lSpalte Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) <> lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte > lBreit Then lSpalte = lBreit lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1) Call CombineRgn(lSkin, lSkin, lTemp, 2) Call DeleteObject(lTemp) End If Loop Next lZeile End With
FrameTranz = lSkin End Function
'------------------------------------------------------------------------------------------------ Public Sub FrameTransparent(Ctrl As Object) Dim lSkin As Long
Ctrl.Visible = True lSkin = FrameTranz(Ctrl) Call SetWindowRgn(Ctrl.hwnd, lSkin, True) End Sub
-- Cordialement,
Jacques.
michael
merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des trucs un peu bizarre Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce qui est plus logique, mais là il fais les fonction mais il ne se passe rien... le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? merci infiniment vous m'etes d'une aide précieuse
"Jacques93" a écrit :
Bonjour michael, michael a écrit : > Bonjour j'ai trouvé un code qui rend transparent un Frame, c'est très > pratique, malheureusement mes optionButton ne le son pas et je n'arrive pas a > les rendre transparent même en modifiant la fonction "Function > FrameTranz(Ctrl As Frame)" en "Function ButtonTranz(Ctrl As OptionButton)" > mais peut etre n'est ce pas possible, il ne plante pourtant pas... > J'ai: - une form avec une image en fond > - un frame dessus > - un OptionButton a rendre transparent > - un cmd pour lancer le tout > si qqn peux me dire ou ça cloche... peut etre qu'il n'y a pas moyen de > modifier la fonction pour un OptionButton
Essaie avec, dans le code de feuille : '--------------------------------------- Option Explicit
Private Sub Form_Load() Me.Frame1.BackColor = &HFF& Me.Option1.BackColor = &HFF& End Sub
Private Sub Command1_Click() FrameTransparent Me.Option1 FrameTransparent Me.Frame1 End Sub '----------------------------------------
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _ As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _ As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _ As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _ As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _ As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _ ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _ ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _ As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public CtrlDc As Long
Public Function FrameTranz(Ctrl As Object) As Long Dim lHoch As Long Dim lBreit As Long Dim lTemp As Long Dim lSkin As Long Dim lStart As Long Dim lZeile As Long Dim lSpalte As Long Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl ' bei Form.ScaleMode = vbTwips lHoch = .Height / Screen.TwipsPerPixelY lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1 lSpalte = 0 Do While lSpalte < lBreit Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) = lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte < lBreit Then lStart = lSpalte Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) <> lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte > lBreit Then lSpalte = lBreit lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1) Call CombineRgn(lSkin, lSkin, lTemp, 2) Call DeleteObject(lTemp) End If Loop Next lZeile End With
FrameTranz = lSkin End Function
'------------------------------------------------------------------------------------------------ Public Sub FrameTransparent(Ctrl As Object) Dim lSkin As Long
Ctrl.Visible = True lSkin = FrameTranz(Ctrl) Call SetWindowRgn(Ctrl.hwnd, lSkin, True) End Sub
-- Cordialement,
Jacques.
merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des
trucs un peu bizarre
Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce
qui est plus logique, mais là il fais les fonction mais il ne se passe rien...
le 'Me' ou pourrais je trouver un explication complete sur son utilisation??
merci infiniment vous m'etes d'une aide précieuse
"Jacques93" a écrit :
Bonjour michael,
michael a écrit :
> Bonjour j'ai trouvé un code qui rend transparent un Frame, c'est très
> pratique, malheureusement mes optionButton ne le son pas et je n'arrive pas a
> les rendre transparent même en modifiant la fonction "Function
> FrameTranz(Ctrl As Frame)" en "Function ButtonTranz(Ctrl As OptionButton)"
> mais peut etre n'est ce pas possible, il ne plante pourtant pas...
> J'ai: - une form avec une image en fond
> - un frame dessus
> - un OptionButton a rendre transparent
> - un cmd pour lancer le tout
> si qqn peux me dire ou ça cloche... peut etre qu'il n'y a pas moyen de
> modifier la fonction pour un OptionButton
Essaie avec, dans le code de feuille :
'---------------------------------------
Option Explicit
Private Sub Form_Load()
Me.Frame1.BackColor = &HFF&
Me.Option1.BackColor = &HFF&
End Sub
Private Sub Command1_Click()
FrameTransparent Me.Option1
FrameTransparent Me.Frame1
End Sub
'----------------------------------------
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _
As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _
As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _
As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _
As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _
As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _
ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _
As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public CtrlDc As Long
Public Function FrameTranz(Ctrl As Object) As Long
Dim lHoch As Long
Dim lBreit As Long
Dim lTemp As Long
Dim lSkin As Long
Dim lStart As Long
Dim lZeile As Long
Dim lSpalte As Long
Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl
' bei Form.ScaleMode = vbTwips
lHoch = .Height / Screen.TwipsPerPixelY
lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1
lSpalte = 0
Do While lSpalte < lBreit
Do While lSpalte < lBreit And _
GetPixel(CtrlDc, lSpalte, lZeile) = lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte < lBreit Then
lStart = lSpalte
Do While lSpalte < lBreit And _
GetPixel(CtrlDc, lSpalte, lZeile) <> lBackColor
lSpalte = lSpalte + 1
Loop
If lSpalte > lBreit Then lSpalte = lBreit
lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1)
Call CombineRgn(lSkin, lSkin, lTemp, 2)
Call DeleteObject(lTemp)
End If
Loop
Next lZeile
End With
FrameTranz = lSkin
End Function
'------------------------------------------------------------------------------------------------
Public Sub FrameTransparent(Ctrl As Object)
Dim lSkin As Long
Ctrl.Visible = True
lSkin = FrameTranz(Ctrl)
Call SetWindowRgn(Ctrl.hwnd, lSkin, True)
End Sub
merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des trucs un peu bizarre Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce qui est plus logique, mais là il fais les fonction mais il ne se passe rien... le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? merci infiniment vous m'etes d'une aide précieuse
"Jacques93" a écrit :
Bonjour michael, michael a écrit : > Bonjour j'ai trouvé un code qui rend transparent un Frame, c'est très > pratique, malheureusement mes optionButton ne le son pas et je n'arrive pas a > les rendre transparent même en modifiant la fonction "Function > FrameTranz(Ctrl As Frame)" en "Function ButtonTranz(Ctrl As OptionButton)" > mais peut etre n'est ce pas possible, il ne plante pourtant pas... > J'ai: - une form avec une image en fond > - un frame dessus > - un OptionButton a rendre transparent > - un cmd pour lancer le tout > si qqn peux me dire ou ça cloche... peut etre qu'il n'y a pas moyen de > modifier la fonction pour un OptionButton
Essaie avec, dans le code de feuille : '--------------------------------------- Option Explicit
Private Sub Form_Load() Me.Frame1.BackColor = &HFF& Me.Option1.BackColor = &HFF& End Sub
Private Sub Command1_Click() FrameTransparent Me.Option1 FrameTransparent Me.Frame1 End Sub '----------------------------------------
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _ As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject _ As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 _ As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 _ As Long) As Long
Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn _ As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, _ ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _ ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd _ As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public CtrlDc As Long
Public Function FrameTranz(Ctrl As Object) As Long Dim lHoch As Long Dim lBreit As Long Dim lTemp As Long Dim lSkin As Long Dim lStart As Long Dim lZeile As Long Dim lSpalte As Long Dim lBackColor As Long
lSkin = CreateRectRgn(0, 0, 0, 0)
With Ctrl ' bei Form.ScaleMode = vbTwips lHoch = .Height / Screen.TwipsPerPixelY lBreit = .Width / Screen.TwipsPerPixelX
For lZeile = 0 To lHoch - 1 lSpalte = 0 Do While lSpalte < lBreit Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) = lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte < lBreit Then lStart = lSpalte Do While lSpalte < lBreit And _ GetPixel(CtrlDc, lSpalte, lZeile) <> lBackColor lSpalte = lSpalte + 1 Loop
If lSpalte > lBreit Then lSpalte = lBreit lTemp = CreateRectRgn(lStart, lZeile, lSpalte, lZeile + 1) Call CombineRgn(lSkin, lSkin, lTemp, 2) Call DeleteObject(lTemp) End If Loop Next lZeile End With
FrameTranz = lSkin End Function
'------------------------------------------------------------------------------------------------ Public Sub FrameTransparent(Ctrl As Object) Dim lSkin As Long
Ctrl.Visible = True lSkin = FrameTranz(Ctrl) Call SetWindowRgn(Ctrl.hwnd, lSkin, True) End Sub
-- Cordialement,
Jacques.
Jacques93
Bonjour michael, michael a écrit :
merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des trucs un peu bizarre Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce qui est plus logique, mais là il fais les fonction mais il ne se passe rien... le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? merci infiniment vous m'etes d'une aide précieuse
Extrait de l'aide : ----------------------------------------------------------------------- Le mot clé Me se comporte comme une variable déclarée de façon implicite. Il est automatiquement disponible pour toutes les procédures d'un module de classe. Lorsqu'une classe peut comporter plusieurs instances, le mot clé Me offre la possibilité de faire référence à l'instance de la classe dans laquelle le code est exécuté. Il s'avère particulièrement utile pour passer les informations concernant l'instance d'une classe en cours d'exécution à une procédure d'un autre module. Par exemple, supposez que la procédure suivante se présente dans un module :
Sub ChangeFormColor(FormName As Form) FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me ------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble difficile. Les API utilisées par FrameTranz supposent que la feuille est activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que quelqu'un aie une meilleure idée ?
-- Cordialement,
Jacques.
Bonjour michael,
michael a écrit :
merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des
trucs un peu bizarre
Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce
qui est plus logique, mais là il fais les fonction mais il ne se passe rien...
le 'Me' ou pourrais je trouver un explication complete sur son utilisation??
merci infiniment vous m'etes d'une aide précieuse
Extrait de l'aide :
-----------------------------------------------------------------------
Le mot clé Me se comporte comme une variable déclarée de façon
implicite. Il est automatiquement disponible pour toutes les procédures
d'un module de classe. Lorsqu'une classe peut comporter plusieurs
instances, le mot clé Me offre la possibilité de faire référence à
l'instance de la classe dans laquelle le code est exécuté. Il s'avère
particulièrement utile pour passer les informations concernant
l'instance d'une classe en cours d'exécution à une procédure d'un autre
module. Par exemple, supposez que la procédure suivante se présente dans
un module :
Sub ChangeFormColor(FormName As Form)
FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la
classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me
------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble
difficile. Les API utilisées par FrameTranz supposent que la feuille est
activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que
quelqu'un aie une meilleure idée ?
merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des trucs un peu bizarre Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce qui est plus logique, mais là il fais les fonction mais il ne se passe rien... le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? merci infiniment vous m'etes d'une aide précieuse
Extrait de l'aide : ----------------------------------------------------------------------- Le mot clé Me se comporte comme une variable déclarée de façon implicite. Il est automatiquement disponible pour toutes les procédures d'un module de classe. Lorsqu'une classe peut comporter plusieurs instances, le mot clé Me offre la possibilité de faire référence à l'instance de la classe dans laquelle le code est exécuté. Il s'avère particulièrement utile pour passer les informations concernant l'instance d'une classe en cours d'exécution à une procédure d'un autre module. Par exemple, supposez que la procédure suivante se présente dans un module :
Sub ChangeFormColor(FormName As Form) FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me ------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble difficile. Les API utilisées par FrameTranz supposent que la feuille est activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que quelqu'un aie une meilleure idée ?
-- Cordialement,
Jacques.
michael
merci des infos, c'est dommage que vb soit quand même un peu limité sur le graphisme... Si d'autre personnes ont des idées merci d'avance
"Jacques93" a écrit :
Bonjour michael, michael a écrit : > merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des > trucs un peu bizarre > Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce > qui est plus logique, mais là il fais les fonction mais il ne se passe rien... > le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? > merci infiniment vous m'etes d'une aide précieuse >
Extrait de l'aide : ----------------------------------------------------------------------- Le mot clé Me se comporte comme une variable déclarée de façon implicite. Il est automatiquement disponible pour toutes les procédures d'un module de classe. Lorsqu'une classe peut comporter plusieurs instances, le mot clé Me offre la possibilité de faire référence à l'instance de la classe dans laquelle le code est exécuté. Il s'avère particulièrement utile pour passer les informations concernant l'instance d'une classe en cours d'exécution à une procédure d'un autre module. Par exemple, supposez que la procédure suivante se présente dans un module :
Sub ChangeFormColor(FormName As Form) FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me ------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble difficile. Les API utilisées par FrameTranz supposent que la feuille est activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que quelqu'un aie une meilleure idée ?
-- Cordialement,
Jacques.
merci des infos, c'est dommage que vb soit quand même un peu limité sur le
graphisme...
Si d'autre personnes ont des idées merci d'avance
"Jacques93" a écrit :
Bonjour michael,
michael a écrit :
> merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des
> trucs un peu bizarre
> Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce
> qui est plus logique, mais là il fais les fonction mais il ne se passe rien...
> le 'Me' ou pourrais je trouver un explication complete sur son utilisation??
> merci infiniment vous m'etes d'une aide précieuse
>
Extrait de l'aide :
-----------------------------------------------------------------------
Le mot clé Me se comporte comme une variable déclarée de façon
implicite. Il est automatiquement disponible pour toutes les procédures
d'un module de classe. Lorsqu'une classe peut comporter plusieurs
instances, le mot clé Me offre la possibilité de faire référence à
l'instance de la classe dans laquelle le code est exécuté. Il s'avère
particulièrement utile pour passer les informations concernant
l'instance d'une classe en cours d'exécution à une procédure d'un autre
module. Par exemple, supposez que la procédure suivante se présente dans
un module :
Sub ChangeFormColor(FormName As Form)
FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la
classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me
------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble
difficile. Les API utilisées par FrameTranz supposent que la feuille est
activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que
quelqu'un aie une meilleure idée ?
merci des infos, c'est dommage que vb soit quand même un peu limité sur le graphisme... Si d'autre personnes ont des idées merci d'avance
"Jacques93" a écrit :
Bonjour michael, michael a écrit : > merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des > trucs un peu bizarre > Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce > qui est plus logique, mais là il fais les fonction mais il ne se passe rien... > le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? > merci infiniment vous m'etes d'une aide précieuse >
Extrait de l'aide : ----------------------------------------------------------------------- Le mot clé Me se comporte comme une variable déclarée de façon implicite. Il est automatiquement disponible pour toutes les procédures d'un module de classe. Lorsqu'une classe peut comporter plusieurs instances, le mot clé Me offre la possibilité de faire référence à l'instance de la classe dans laquelle le code est exécuté. Il s'avère particulièrement utile pour passer les informations concernant l'instance d'une classe en cours d'exécution à une procédure d'un autre module. Par exemple, supposez que la procédure suivante se présente dans un module :
Sub ChangeFormColor(FormName As Form) FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me ------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble difficile. Les API utilisées par FrameTranz supposent que la feuille est activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que quelqu'un aie une meilleure idée ?
-- Cordialement,
Jacques.
michael
"Jacques93" a écrit :
Bonjour michael, michael a écrit : > merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des > trucs un peu bizarre > Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce > qui est plus logique, mais là il fais les fonction mais il ne se passe rien... > le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? > merci infiniment vous m'etes d'une aide précieuse >
Extrait de l'aide : ----------------------------------------------------------------------- Le mot clé Me se comporte comme une variable déclarée de façon implicite. Il est automatiquement disponible pour toutes les procédures d'un module de classe. Lorsqu'une classe peut comporter plusieurs instances, le mot clé Me offre la possibilité de faire référence à l'instance de la classe dans laquelle le code est exécuté. Il s'avère particulièrement utile pour passer les informations concernant l'instance d'une classe en cours d'exécution à une procédure d'un autre module. Par exemple, supposez que la procédure suivante se présente dans un module :
Sub ChangeFormColor(FormName As Form) FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me ------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble difficile. Les API utilisées par FrameTranz supposent que la feuille est activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que quelqu'un aie une meilleure idée ?
-- Cordialement,
Jacques.
"Jacques93" a écrit :
Bonjour michael,
michael a écrit :
> merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des
> trucs un peu bizarre
> Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce
> qui est plus logique, mais là il fais les fonction mais il ne se passe rien...
> le 'Me' ou pourrais je trouver un explication complete sur son utilisation??
> merci infiniment vous m'etes d'une aide précieuse
>
Extrait de l'aide :
-----------------------------------------------------------------------
Le mot clé Me se comporte comme une variable déclarée de façon
implicite. Il est automatiquement disponible pour toutes les procédures
d'un module de classe. Lorsqu'une classe peut comporter plusieurs
instances, le mot clé Me offre la possibilité de faire référence à
l'instance de la classe dans laquelle le code est exécuté. Il s'avère
particulièrement utile pour passer les informations concernant
l'instance d'une classe en cours d'exécution à une procédure d'un autre
module. Par exemple, supposez que la procédure suivante se présente dans
un module :
Sub ChangeFormColor(FormName As Form)
FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la
classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me
------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble
difficile. Les API utilisées par FrameTranz supposent que la feuille est
activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que
quelqu'un aie une meilleure idée ?
Bonjour michael, michael a écrit : > merci ca marche!!! j'avais bien remplacé frame par object mais ca faisait des > trucs un peu bizarre > Tant que j'y suis j'essaie de lancer ça lors de l'ouverture de la forme ,ce > qui est plus logique, mais là il fais les fonction mais il ne se passe rien... > le 'Me' ou pourrais je trouver un explication complete sur son utilisation?? > merci infiniment vous m'etes d'une aide précieuse >
Extrait de l'aide : ----------------------------------------------------------------------- Le mot clé Me se comporte comme une variable déclarée de façon implicite. Il est automatiquement disponible pour toutes les procédures d'un module de classe. Lorsqu'une classe peut comporter plusieurs instances, le mot clé Me offre la possibilité de faire référence à l'instance de la classe dans laquelle le code est exécuté. Il s'avère particulièrement utile pour passer les informations concernant l'instance d'une classe en cours d'exécution à une procédure d'un autre module. Par exemple, supposez que la procédure suivante se présente dans un module :
Sub ChangeFormColor(FormName As Form) FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) End Sub
Vous pouvez appeler cette procédure et passer l'instance en cours de la classe Form comme un argument à l'aide de l'instruction suivante :
ChangeFormColor Me ------------------------------------------------------------------------
Un autre intérêt du mot clé Me est l'aide à la saisie, quand tu tapes :
Me.
une liste affiche toutes les propriétés, méthodes, et contrôles disponible.
Quand à rendre les contrôles transparents au lancement, cela me semble difficile. Les API utilisées par FrameTranz supposent que la feuille est activée. Au mieux, tu peux éviter l'emploi du bouton, a moins que quelqu'un aie une meilleure idée ?