Başlangıç > Kodlar > Visual basic 6 ile Activex, form elemanları

Visual basic 6 ile Activex, form elemanları


Activex, form elemanları

Kodun yazıldığı sistem..: Pentium II 333Mhz, 64Mb ram
İşletim Sistemi.............: MS WindowsNT 4.0, Service Pack 5
Version.......................: MS Visual Basic 6.0 Enterprise + Service Pack 3

Formu büyütünce elemanlarında büyümesini sağlamak

Form üzerindeki elemanlar, formun boyu veya eni değiştirildiği zaman oldukları yerde kıpırdamadan dururlar. Halbuki efendi efendi formla beraber büyüyüp küçülseler ne kadar şık olurdu değilmi. İşte bizim activex'imizde bu işi yapıyor. Yeni Bir Activex/Control projesi açarak aşağıdaki kodu user kontrol kısmına yapıştırın.


Option Explicit
Private WithEvents objParent As Form
Private nFormHeight As Long
Private nFormWidth As Long
Private nNumOfControls As Integer
Private nTop() As Long
Private nLeft() As Long
Private nHeight() As Long
Private nWidth() As Long
Private bFirstTime As Boolean

Public Sub Init()
Dim I As Integer
Set objParent = UserControl.Parent
With objParent
nFormHeight = .ScaleHeight
nFormWidth = .ScaleWidth

nNumOfControls = .Controls.Count - 1
bFirstTime = True
ReDim nTop(nNumOfControls)
ReDim nLeft(nNumOfControls)
ReDim nHeight(nNumOfControls)
ReDim nWidth(nNumOfControls)

On Error Resume Next

For I = 0 To nNumOfControls

Select Case TypeName(.Controls(I))
Case "Line"
nTop(I) = .Controls(I).Y1
nLeft(I) = .Controls(I).X1
nHeight(I) = .Controls(I).Y2
nWidth(I) = .Controls(I).X2
Case "StatusBar"
'do nothing. Leave it alone
Case Else
nTop(I) = .Controls(I).Top
nLeft(I) = .Controls(I).Left
nHeight(I) = .Controls(I).Height
nWidth(I) = .Controls(I).Width
End Select

Next I

End With

End Sub

Private Sub objParent_Resize()

On Error Resume Next ' For comboboxes, timers and other nonsizable controls
Dim I As Integer
Dim nCaptionSize As Integer
Dim dRatioX As Double
Dim dRatioY As Double
Dim nSaveRedraw As Long

With objParent
nSaveRedraw = .AutoRedraw
.AutoRedraw = True

If .Height <= 700 Then
.Height = 700
End If

If .Width <= 700 Then
.Width = 700
End If

dRatioY = 1# * nFormHeight / .ScaleHeight
dRatioX = 1# * nFormWidth / .ScaleWidth

For I = 0 To nNumOfControls

Select Case TypeName(.Controls(I))
Case "Line"
.Controls(I).Y1 = Fix(nTop(I) / dRatioY)
.Controls(I).X1 = Fix(nLeft(I) / dRatioX)
.Controls(I).Y2 = Fix(nHeight(I) / dRatioY)
.Controls(I).X2 = Fix(nWidth(I) / dRatioX)
Case "StatusBar"
'Do nothing
Case Else
.Controls(I).Top = Fix(nTop(I) / dRatioY)
.Controls(I).Left = Fix(nLeft(I) / dRatioX)
.Controls(I).Height = Fix(nHeight(I) / dRatioY)
.Controls(I).Width = Fix(nWidth(I) / dRatioX)
End Select

Next I

.AutoRedraw = nSaveRedraw
End With

End Sub

 

Projenizi kaydettikten sonra, File menüsünden Make XXXXX.ocx seçeneğini seçer

Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: