Notifications
Clear all

Userform em formato geométrico

9 Posts
2 Usuários
0 Reactions
1,972 Visualizações
(@edantasrj)
Posts: 14
Active Member
Topic starter
 

Olá pessoal,

Boa tarde!

A minha dúvida de hoje é saber se existe alguma forma de criar userform com formas geométricas ( triangular, redondo, em forma de estrela ou até mesmo em formato de uma imagem) será que isso é possivel?

Se alguém souber, poderia disponibilar o exemplo?

Estarei criando um novo projeto e queria deixa-lo um pouco diferente.

Mais uma vez agradeço!

 
Postado : 05/04/2013 10:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Já vi redondo, não sei se outras formas são possiveis.
Veja o modelo credito:autor creio eu Fabio Mitsueda, porem não lembro de onde foi que "peguei"

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/04/2013 10:50 am
(@edantasrj)
Posts: 14
Active Member
Topic starter
 

Reinaldo,

Agora só vai ficar faltando os outros formatos, pois acabei de encontrar um site que informa que é possível, mais cobra para ensinar. Coma não encontrei nenhum exemplo ainda em minhas pesquisas estarei aguardando os Expert do Planilhando.

Muito grato!

 
Postado : 05/04/2013 11:21 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

CReio que exemplo pronto não há disponivel (pelo menos free). No site http://cheese.formice.com/forum/threads ... vb6.38327/ e postado um codigo para algumas formas (fala em VB6 mas e muito similar ao vba) (Achei algo tb aquii: http://www.vbarchiv.net/api/api_createpolygonrgn.html , mas é em alemão)
Então teriamos no modulo de declaraçãoAPI

Option Explicit
'Declarando constantes publicas
Public Const SWP_NOSIZE = &H1
Public Const SM_CYCAPTION = 4

Type POINTAPI
    x As Long
    y As Long
End Type

'Declarando funções API
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
       
Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long _
    , ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
    
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long _
    , ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long _
    , ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    
Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'E agora Temos que criar Formas customizadas:
 'Cria uma janela poligonal
    Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINT, _
    ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
 ' Cria uma janela elíptica
    Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, _
    ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
 ' Cria uma janela retangula
    Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
    ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long)
 ' Cria uma janela retangular borda arredondas
    Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, _
    ByVal Y1 As Long, _
    ByVal X2 As Long, _
    ByVal Y2 As Long, _
    ByVal X3 As Long, _
    ByVal Y3 As Long) _
    As Long
    
'E Agora é óbvio que necessitamos de remover a forma:

    Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

e abaixo cria no formulario com cantos arredondados

Option Explicit

Private Sub UserForm_Initialize()
Dim lngHwnd As Long, w As Long, h As Long
Dim lngTH   As Long
Dim Ux, Uy  As Single
    
    Dim lngRgn          As Long
    Dim strClassName    As String
        strClassName = "ThunderDFrame"
        lngTH = GetSystemMetrics(SM_CYCAPTION)
    w = (Me.Width / 0.75) - 1
    h = (Me.Height / 0.75) - 1
    lngRgn = CreateRoundRectRgn(5, 5, w, h, 50, 50)
        lngHwnd = FindWindow(strClassName, Me.Caption)
        SetWindowRgn lngHwnd, lngRgn, True
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/04/2013 2:02 pm
(@edantasrj)
Posts: 14
Active Member
Topic starter
 

Obrigado , Reinaldo mais uma vez.
Acredito que possa existir mais exemplos na net, oproblema é encontrá-los.

Grato

 
Postado : 06/04/2013 4:40 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!

Segue em anexo o exemplo dado acima no formato de estrela.

Espero que possa ajudar!

Att,

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/04/2013 10:11 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Nem sei o que dizer, eu já havia visto formulário ovalado e transparente, mas estrela, redondo, kkkkk, só aqui no planilhando com estes feras.

Parabens a vocês, não sei ao certo onde eu poderia utiliza-los mas é bem interessante.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/04/2013 10:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 


Caracas...!

Eu personalizo meus UserForms com imagens...

Mas realmente, agora.. estrelado...!!
Excelente!

Rodou perfeitamente no 2003 também.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/04/2013 12:07 pm
(@edantasrj)
Posts: 14
Active Member
Topic starter
 

Bom dia a todos!

Eu sabia que aqui no planilhando iria encontrar esses exemplos.
Obrigado Marciel Silva.

Agora o único exemplo que esta faltando seria em formato de uma imagem. E como falei encontrei um site q diz q isso é possível.

Grato a todos

 
Postado : 09/04/2013 9:55 pm