- Katılım
- 2 Mart 2005
- Mesajlar
- 2,960
- Excel Vers. ve Dili
-
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Userform Görünüm Tanımlarının olduğu ClassMOdulü xla olarak kaydedip, tüm açık excel kitaplarından çağırabilmenin yolu nedir arkadaşlar.
Sn Tankut SAZLI nın hazırlamış olduğu aşağıdaki örnekte
http://www.excel.web.tr/attachment.php?attachmentid=8965&d=1168377680
CFormChanger Classını Userform Özelliklerini belirteceğim kitaba ekleyip,
o kitaptaki tüm userformlarda
Userform_EkOzellik yordamında isteklerimi tanımlayıp activide çağırıyorum.
Peki bu işlemi Bir xla haline dönüştürmek mümkünmü acaba?CFormChanger Classının Özelliklere belirteceğim kitaba ekleyip,
o kitaptaki tüm userformlarda
Userform_EkOzellik yordamında isteklerimi tanımlayıp activide çağırıyorum.
Peki bu işlemi Bir xla haline dönüştürmek mümkünmü acaba?
CFormChanger Class modulü UserformOzellikleri.xla da olacak
biz sadece aşağıdaki gibi userformlarda, prosodüre isteklerimizi yazacağız?
USERFORM/LAR
CFormChanger Class modulü
Çalışmalarınızda size fikir verecek birkaç Userform uygulamasını tek dosyada derledim.İnceleyin,hoşunuza gidecek.
Umarım işinizi görür.
NOT:Örnek yenilendi.Bazı yeniliklerle hatalar giderilmeye çalışıldı.(09.01.2007)
Sn Tankut SAZLI nın hazırlamış olduğu aşağıdaki örnekte
http://www.excel.web.tr/attachment.php?attachmentid=8965&d=1168377680
CFormChanger Classını Userform Özelliklerini belirteceğim kitaba ekleyip,
o kitaptaki tüm userformlarda
Userform_EkOzellik yordamında isteklerimi tanımlayıp activide çağırıyorum.
Peki bu işlemi Bir xla haline dönüştürmek mümkünmü acaba?CFormChanger Classının Özelliklere belirteceğim kitaba ekleyip,
o kitaptaki tüm userformlarda
Userform_EkOzellik yordamında isteklerimi tanımlayıp activide çağırıyorum.
Peki bu işlemi Bir xla haline dönüştürmek mümkünmü acaba?
CFormChanger Class modulü UserformOzellikleri.xla da olacak
biz sadece aşağıdaki gibi userformlarda, prosodüre isteklerimizi yazacağız?
USERFORM/LAR
Kod:
Option Explicit
Option Compare Text
Dim oFormChanger As New CFormChanger
Private Sub UserForm_activate()
Call Userform_EkOzellik(Me)
End Sub
Private Sub Userform_EkOzellik(Form As Object)
Set oFormChanger.Form = Form
With oFormChanger
.Modal = False 'Modal?
.ShowCaption = True 'True:Başlıklı, False:Başlıksız
.ShowTaskBarIcon = True 'Görev çubuğunda olmasın: false; olsun; True
.ShowCloseBtn = False 'Kapatma Butonu Aktifse: True, Pasifse; False
.ShowMaximizeBtn = False 'Max Butonu Aktifse: True, Pasifse; False
.ShowMinimizeBtn = False 'Min Butonu Aktifse: True, Pasifse; False
.Sizeable = False 'Boyutlandırma Aktifse: True, Pasifse; False
.SmallCaption = False 'küçük Başlık
.ShowSysMenu = True '????????????
.IconPath = "C:\Documents and Settings\xx\Desktop\7.ico" 'icon yolu
.ShowIcon = False 'ikon Gösterilsinmi
If .SmallCaption = True Then Me.Height = Me.Height - 0.4 'küçük başlık seçilmişse userformu küçült
If .ShowCloseBtn = False And .ShowMaximizeBtn = False And _
.ShowMinimizeBtn = False And .ShowIcon = False Then 'Min,Max,Close Butonları ve icon gösterilmeyecekse
'.IconPath = "" then
.ShowCaption = False 'başlıkta kaldırılsın.
End If
End With
End Sub
Private Sub kapat_Click()
Unload Me
End Sub
Kod:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Private Const GWL_STYLE As Long = (-16)
Private Const GWL_EXSTYLE As Long = (-20)
Private Const WS_CAPTION As Long = &HC00000
Private Const WS_SYSMENU As Long = &H80000
Private Const WS_THICKFRAME As Long = &H40000
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const WS_POPUP As Long = &H80000000
Private Const WS_VISIBLE As Long = &H10000000
Private Const WS_EX_DLGMODALFRAME As Long = &H1
Private Const WS_EX_APPWINDOW As Long = &H40000
Private Const WS_EX_TOOLWINDOW As Long = &H80
Private Const SC_CLOSE As Long = &HF060
Private Const SW_HIDE As Long = 0
Private Const SW_SHOW As Long = 5
Private Const WM_SETICON = &H80
Dim hWndForm As Long, mbSizeable As Boolean, mbCaption As Boolean, mbIcon As Boolean, miModal As Integer
Dim mbMaximize As Boolean, mbMinimize As Boolean, mbSysMenu As Boolean, mbCloseBtn As Boolean
Dim mbAppWindow As Boolean, mbToolWindow As Boolean, msIconPath As String
Dim moForm As Object
Public Property Set Form(oForm As Object)
If Val(Application.Version) < 9 Then
hWndForm = FindWindow("ThunderXFrame", oForm.Caption)
Else
hWndForm = FindWindow("ThunderDFrame", oForm.Caption)
End If
Set moForm = oForm
SetFormStyle
End Property
Public Property Let Sizeable(bSizeable As Boolean)
mbSizeable = bSizeable
SetFormStyle
End Property
Public Property Get Sizeable() As Boolean
Sizeable = mbSizeable
End Property
Public Property Let ShowCaption(bCaption As Boolean)
mbCaption = bCaption
SetFormStyle
End Property
Public Property Get ShowCaption() As Boolean
ShowCaption = mbCaption
End Property
Public Property Let Modal(bModal As Boolean)
miModal = Abs(CInt(Not bModal))
EnableWindow FindWindow("XLMAIN", Application.Caption), miModal
End Property
Public Property Get Modal() As Boolean
Modal = (miModal <> 1)
End Property
Public Property Let ShowIcon(bIcon As Boolean)
mbIcon = Not bIcon
ChangeIcon
SetFormStyle
End Property
Public Property Get ShowIcon() As Boolean
ShowIcon = (mbIcon <> 1)
End Property
Public Property Let IconPath(sNewPath As String)
msIconPath = sNewPath
ChangeIcon
End Property
Public Property Get IconPath() As String
IconPath = msIconPath
End Property
Public Property Let ShowMaximizeBtn(bMaximize As Boolean)
mbMaximize = bMaximize
SetFormStyle
End Property
Public Property Get ShowMaximizeBtn() As Boolean
ShowMaximizeBtn = mbMaximize
End Property
Public Property Let ShowMinimizeBtn(bMinimize As Boolean)
mbMinimize = bMinimize
SetFormStyle
End Property
Public Property Get ShowMinimizeBtn() As Boolean
ShowMinimizeBtn = mbMinimize
End Property
Public Property Let ShowSysMenu(bSysMenu As Boolean)
mbSysMenu = bSysMenu
SetFormStyle
End Property
Public Property Get ShowSysMenu() As Boolean
ShowSysMenu = mbSysMenu
End Property
Public Property Let ShowCloseBtn(bCloseBtn As Boolean)
mbCloseBtn = bCloseBtn
SetFormStyle
End Property
Public Property Get ShowCloseBtn() As Boolean
ShowCloseBtn = mbCloseBtn
End Property
Public Property Let ShowTaskBarIcon(bAppWindow As Boolean)
If hWndForm <> 0 And mbAppWindow And Not bAppWindow Then
EnableWindow FindWindow("XLMAIN", Application.Caption), True
ShowWindow hWndForm, SW_HIDE
End If
mbAppWindow = bAppWindow
SetFormStyle
moForm.Repaint
EnableWindow FindWindow("XLMAIN", Application.Caption), miModal
End Property
Public Property Get ShowTaskBarIcon() As Boolean
ShowTaskBarIcon = mbAppWindow
End Property
Public Property Let SmallCaption(bToolWindow As Boolean)
mbToolWindow = bToolWindow
SetFormStyle
End Property
Public Property Get SmallCaption() As Boolean
SmallCaption = mbToolWindow
End Property
Private Sub SetFormStyle()
Dim iStyle As Long, hMenu As Long, hID As Long, iItems As Integer
If hWndForm = 0 Then Exit Sub
iStyle = GetWindowLong(hWndForm, GWL_STYLE)
If mbCaption Then iStyle = iStyle Or WS_CAPTION Else iStyle = iStyle And Not WS_CAPTION
If mbSysMenu Then iStyle = iStyle Or WS_SYSMENU Else iStyle = iStyle And Not WS_SYSMENU
If mbSizeable Then iStyle = iStyle Or WS_THICKFRAME Else iStyle = iStyle And Not WS_THICKFRAME
If mbMinimize Then iStyle = iStyle Or WS_MINIMIZEBOX Else iStyle = iStyle And Not WS_MINIMIZEBOX
If mbMaximize Then iStyle = iStyle Or WS_MAXIMIZEBOX Else iStyle = iStyle And Not WS_MAXIMIZEBOX
If mbAppWindow Then iStyle = iStyle And Not WS_VISIBLE And Not WS_POPUP Else iStyle = iStyle Or WS_VISIBLE Or WS_POPUP
SetWindowLong hWndForm, GWL_STYLE, iStyle
iStyle = GetWindowLong(hWndForm, GWL_EXSTYLE)
If mbIcon Then iStyle = iStyle Or WS_EX_DLGMODALFRAME Else iStyle = iStyle And Not WS_EX_DLGMODALFRAME
If mbAppWindow Then iStyle = iStyle Or WS_EX_APPWINDOW Else iStyle = iStyle And Not WS_EX_APPWINDOW
If mbToolWindow Then iStyle = iStyle Or WS_EX_TOOLWINDOW Else iStyle = iStyle And Not WS_EX_TOOLWINDOW
SetWindowLong hWndForm, GWL_EXSTYLE, iStyle
If mbCloseBtn Then
hMenu = GetSystemMenu(hWndForm, 1)
Else
hMenu = GetSystemMenu(hWndForm, 0)
DeleteMenu hMenu, SC_CLOSE, 0&
End If
ShowWindow hWndForm, SW_SHOW
DrawMenuBar hWndForm
SetFocus hWndForm
End Sub
Private Sub ChangeIcon()
Dim hIcon As Long
If hWndForm <> 0 Then
Err.Clear
If msIconPath = "" Then
hIcon = 0
ElseIf Dir(msIconPath) = "" Then
hIcon = 0
ElseIf Err.Number <> 0 Then
hIcon = 0
ElseIf Not mbIcon Then
hIcon = ExtractIcon(0, msIconPath, 0)
Else
hIcon = 0
End If
SendMessage hWndForm, WM_SETICON, True, hIcon
SendMessage hWndForm, WM_SETICON, False, hIcon
End If
End Sub