CRIANDO UM MODULO PARA O ACTIVESKIN

DANLEONHART 03/05/2011 16:13:59
#373115
Pessoal...

Estou querendo adaptar este script para uma Função em um Módulo...para assim ao aplicar em um Formulário sejam aplicados em todos...
Gostaria de deixar apenas em uma Função...pois hoje utilizo ele assim:

No Modulo

Public Function SkinConfig()
[ô] Configurando O ActiveSkin
Set Fil = FSO.OpenTextFile(App.Path & [Ô]\INI\Config.Dat[Ô], ForReading, True)
SkinConfig = Fil.ReadLine
Fil.Close
End Function


Então coloco no Load dos Form[ô]s:

Skin1.LoadSkin SkinConfig
Skin1.ApplySkin Me.hWnd


Gostaria de deixar tudo isso no script do Modulo, para ser colocado apenas no Load a função...tipo assim:

SkinConfig(Form1)


mas não conseguí fazer...tentei criando um objeto do ActiveSkin no Modulo:

Public Function SkinConfig(Frm As Form)
On Error Resume Next
[ô] Configurando o ActiveSkin

Set Fil = FSO.OpenTextFile(App.Path & [Ô]\ConfSkin\Stats.txt[Ô], ForReading, True)
SkinConfig = Fil.ReadLine

Fil.Close

Dim vSk As ACTIVESKINLibCtl.Skin

vSk.LoadSkin SkinConfig
vSk.ApplySkin Frm.hWnd

End Function


Para assim colocar no Form_Load somente:

SkinConfig(Form1)


Sempre aparece o erro 13 (Type Mismatch)...
onde estou errando ?
ROBIU 03/05/2011 16:32:12
#373121
Resposta escolhida
Tenta assim:

Public Function SkinConfig(Frm As Form, vSk As Skin)
On Error Resume Next
[ô] Configurando o ActiveSkin
Dim CaminhoSkin As String
Set Fil = FSO.OpenTextFile(App.Path & [Ô]\ConfSkin\Stats.txt[Ô], ForReading, True)
CaminhoSkin = Fil.ReadLine

Fil.Close

vSk.LoadSkin CaminhoSkin
vSk.ApplySkin Frm.hwnd

End Function





no Form:
SkinConfig(Form1,Skin1)



MARCELO.TREZE 03/05/2011 16:53:18
#373124
olha como faço

em um módulo:

[ô]função para aplicar skin em todos forms do projeto
Public Sub AplicaSkin(ByVal vForm As Form, Optional ByVal vSkin As ACTIVESKINLibCtl.Skin, Optional ByVal SkinFile As String)
Dim Ctl As Control
Dim sIndex As String
On Error Resume Next
For Each Ctl In vForm
Next Ctl
DoEvents
If sIndex = [Ô][Ô] Then Set vSkin = Form1.Skin1 [ô]<---aqui vc vai apontar o form principal que terá o objeto skin1
If SkinFile <> [Ô][Ô] Then vSkin.LoadSkin SkinFile
vSkin.ApplySkin vForm.hWnd
If Err Then Err.Clear
End Sub


agora no form principal, no meu caso form1 coloque o componente activeskin, e cole o código


Private Sub Form_Activate()
AplicaSkin Me, Skin1, [Ô]C:\SeusSkins\le-black.skn[Ô]
End Sub


preste atenção somente no form principal será colocado da forma acima, nos demais forms basta colocar desta forma:

Private Sub Form_Activate()
AplicaSkin Me
End Sub


[txt-color=#e80000]ps: Basta vc colocar o componente active skin no form principal, nos demais será criado uma instancia dele, não precisa colocar o componente.[/txt-color]
DANLEONHART 03/05/2011 16:58:09
#373126
Caraca ... coisa tão simples

Obrigado também Marcelo ! será útil futuramente

VALEU Robiu !
Tópico encerrado , respostas não são mais permitidas