Başlangıç > Kodlar > Visual Basic 6 ile Üç boyutlu ve rengarenk progressbar yapmak

Visual Basic 6 ile Üç boyutlu ve rengarenk progressbar yapmak


VB6\'da .NET te olduğu gibi alternatif kontroller bulunmuyor. Bu kontrollerin VB\'de nasıl hazırlandığını merak edenler için bol açıklamalı bir döküman.

".NET te bu tip kontroller hazır olarak var" diyeceksiniz.
Fakat ben biraz eski kafalı olduğumdan bu kontrollerin VB6'da
nasıl oluşturulduğunu anlatmak istiyorum. Ayrıca bu kontrolü
OCX olarak derleyip .NET te de kullanabilirsiniz.

- Bu döküman ve örnekte, VB6.0 da UserControl nesnesi kullanılarak
ProgressBar kontrolünün nasıl hazırlandığı incelenecek.
- ProgressBar'a özellikler ekleyip, ön ve arka plan renklerini
bu özellikler vasıtasıyla değiştireceğiz.
- Ayrıca event kullanımlarına ilişkin olarak, yapmakta olacağımız
kontrol nesnesine Click, MouseDown, MouseUp ve MouseMove olaylarını
ekleyeceğiz.


--------Figür-1--------

Hazırlık

Yapacağımız kontrol nesnesini EXE projesi içinde kullacağız.
Dilerseniz yeni bir ActiveControl projesinde OCX olarak
hazırlayabilirsiniz.

Öncelikle yeni bir EXE projesi açıp, projeye bir tane UserControl
ve iki tane Modul ekleyin. Ben, projede kullandığım objelere
aşağıdaki isimleri verdim. Döküman anlatımı süresince bu isimlerle
kullanacağım.


Form: Form1
UserControl: GBProgressBar
Module: mdlDrawing
Module: mdlRGBHSL

UserControl: GBProgressBar

UserControl nesnesinin ismini "GBProgressBar" olarak kullandık.
Bu kontrol nesnesi, Toolbar bölümünde varsayılan icon resmi
ile gözükecektir. Biz bu ikonu kendi hazırladığımız resimle
değiştireceğiz.

UserControl'un ScaleMode özelliğini pixel olarak tanımlayın ve AutoRedraw
özelliğini ise True yapın.

Mouse, Toolbardaki bu kontrol üzerine geldiğinde, hatırlatma
balonu çıkacak ve vermiş olduğunuz "GBProgressBar" ismi gözükecektir.

Toolbar'daki iconu değiştirmek için, UserControl nesnesinin "ToolboxBitmap"
özelliğine kendi hazırladığımız resmi seçeceğiz. Bu resim 16x15 pixel
boyutlarında olmalı ve "1, 15" koordinatlarındaki renk değeri maskeleme için
kullanılacaktır. Yani "x=1, y=15" koordinatlarındaki renk değeri siyah ise
bu resim içinde kullandığınız tüm siyah renkler maskelenecektir.

UserControl nesnesinin kod bölümüne geçelim ve bu kontrol içinde kullanacağımız
özellikleri saklayan değişkenleri tanımlayalım. Bu alanda "eProgressScrolling"
isimli bir enum olusturuyoruz. Enum ile ilgili açıklama dökümanın ilerleyen
bölümlerinde verilecektir.


' ProgressBar'ın görünüm değerleri
Public Enum eProgressScrolling
pbScrollingStandard = 0
pbScrollingSmooth = 1
End Enum

Dim m_nFaceColor    As OLE_COLOR ' önplan rengi
Dim m_nBackColor    As OLE_COLOR ' arkaplan rengi
Dim m_nMax          As Long ' maximum progress değeri
Dim m_nMin          As Long ' minimum progress değeri
Dim m_nValue        As Long ' progress in çalışma anındaki değeri
Dim m_bEnabled      As Boolean ' progress'in kullanılabilirlik değeri
Dim m_nScrolling    As eProgressScrolling ' görünümü

İlk olarak, hazırladığımız UserControl'ü formunuza eklediğinizde
varsayılan değerleri "UserControl_Initialize" bölümünde belirtiyoruz.


Private Sub UserControl_Initialize()
m_nMax = 100
m_nFaceColor = vbGreen
m_nBackColor = vbButtonFace
m_nValue = 0
m_nScrolling = pbScrollingStandard
End Sub

Bir de "UserControl_InitProperties" olayı vardır.
Bu olay "UserControl_Initialize" dan sonra çalışır ve "Ambient" kullanımına
izin verir. Sadece yazmakta olduğumuz "UserControl" nesnesi herhangi bir
forma eklendiğinde çalışır.

örn: Kontrolü forma eklediğimizde, kontrolün arkaplan renginin, form ile
aynı olmasını istiyorsak. Bu bölüme aşağıdaki kodlar eklenebilir.


Private Sub UserControl_InitProperties()
'Bu işlem UserControl_Initialize da yapılamaz.
m_nBackColor = Ambient.BackColor
End Sub

Yukarıda tanımlanan değişkenleri UserControl dışından kullanabilmemiz için
kontrole özellikler eklememiz gerekmektedir.


Public Property Get FaceColor() As OLE_COLOR
FaceColor = m_nFaceColor
End Property
Public Property Let FaceColor(ByVal newVal As OLE_COLOR)
m_nFaceColor = newVal
Call DrawProgress
End Property

Public Property Get BackColor() As OLE_COLOR
BackColor = m_nBackColor
End Property
Public Property Let BackColor(ByVal newVal As OLE_COLOR)
m_nBackColor = newVal
Call DrawProgress
End Property
*
*
*

Her özelliği değiştirdiğiminde kontrolü "DrawProgress" alt programı
ile tekrar çiziyoruz.


Private Sub DrawProgress()
Dim nVal As Long

UserControl.Cls
nVal = (UserControl.ScaleWidth - 4)
UserControl.BackColor = m_nBackColor
If Ambient.UserMode Then
nVal = ((UserControl.ScaleWidth - 4) / (m_nMax - m_nMin)) * (m_nValue - m_nMin)
End If
Call DrawDegrade(UserControl.hdc, 2, 2, nVal, (UserControl.ScaleHeight - 4), (UserControl.ScaleWidth - 4), m_nFaceColor, m_nScrolling)
Call DrawEdgeEx(UserControl.hdc, 0, 0, UserControl.ScaleWidth, UserControl.ScaleHeight)
If UserControl.AutoRedraw Then UserControl.Refresh
End Sub

Yukarıdaki kodda "Ambient.UserMode" değeri, uygulama çalıştırıldığında
"True" olur. Normalde kontrol forma eklendiğinde "Value" değerini maximum
olarak gösterip, progress'in tamamını çizerek kullanıcıya göstermek
amacıyla kullanılmıştır. Kodu kullanırken daha net anlayacaksınız.

UserControl'ün tüm kodları aşağıda sunulmuştur.

' Author: Gökhan ERDOĞDU
' Date  : 03.06.2009
' mail  : gokhan_erdogdu@yahoo.com
' Copyright © 2009 GBSoftware

Option Explicit

Public Enum eProgressScrolling
pbScrollingStandard = 0
pbScrollingSmooth = 1
End Enum

Dim m_nFaceColor &nbsp


TD Software


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. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: