Adobe Flex ile ilgilenmeye başladığımda doğal olarak action script ile tanıştım. Fakat ne yazık ki bu tanışma Türkçe olmadı. Çünkü yardım için internette arama yaptığımda hemen hemen hiç Türkçe kaynağa rastlamadım actionscript ile ilgili. Varolan bağlantılarda çoğu kez o an çok da işime yaramayacak bilgilerle karşılaştım. Elbette burada sözünü ettiğim, paylaşımda bulunulan bilgilerin işe yaramazlığı değil, benim o an işime yaramaması.
Aslında sorun biraz da benim Visual Basic deneyimlerim olmasından da kaynaklıydı. Çünkü actionscript ve özelde flex, alıştığım mantığa çok uymuyordu. Aynı şekilde internet kaynakları da visual basic kaynaklarındaki düzende değildi. Bu konuda hala böyle düşünüyorum. Artık actionscripte epeyce alıştığım halde, yine de kaynaklar açısından süregelen darlık ve varolan kaynakların sunumundaki özensizlik, beceriksizlik ve de yetersizlik hala rahatsız ediyor beni.
22 Şubat 2014 Cumartesi
8 Şubat 2014 Cumartesi
VB ile DLL Oluşturma ve Kullanma: Excel Dosyası ile İletişim
Exceldeki işlemlerden, Excel
dosyasının VBA Kod sayfasında yapacağımız düzenlemelerle haberdar olabiliriz.
Bunun için kendi hazırlayacağımız bir DLL’den yararlanmak mümkün. Örnek olarak
vereceğim DLL belirttiğimiz sabit bir yolda bulunan veritabanımıza, Excel
dosyamız her kaydedildiğinde Kayıt Tarihi ve saatini ekleyecek.
Öncelikle
bir Veritabanımızın olması şart. Veritabanımızın ismi vtExcel. İçerisinde tek
tablo var. Alanları KayıtNo(OtomatikSayı), KayıtTarihi(Metin),
KayıtSaati(Metin) olan tablomuzun ismi tblKayıt. Veritabanımız “C:\” dizininde.
Yeni bir Proje
Başlatıyoruz. Proje türü olarak ActiveX DLL ‘yi seçiyoruz. Projemize bir
Class1.cls modülü eklenmiş durumda. Şimdi projemizin adını “ExcelKaydet”,
Modülümüzün adını da “Kayıt” olarak değiştiriyoruz.
Modulümüzün
içerisine istediğimiz kayıt işlemini gerçekleştirecek aşağıdaki fonksiyonu
yazacağız:
VB ResEditörden Image kontrolüne Gif Dosyası Yükleme
ResEditör ile
çalıştıysanız , buradan image kontrolüne resim yüklemek istediğinizde yalnızca
Bitmap klasörüne kaydettiğiniz Bitmap türü dosyaları yükleyebildiğinizi
görürsünüz. Image kontrolüne örneğin bir Gif dosyasını buradan yükleyemezsiniz.
Onu ancak CUSTOM klasörüne alabilir, ama bu defa da Image kontrolüne
LoadPicture metdu ile bu gif dosyasını yükleyemediğinizi görürsünüz. Modüle
eklenecek aşağıdaki fonksiyon ile ResEditörün CUSTOM klasörüne alınmış gif
dosyalarını uygulamanızda rahatlıkla kullanabilirsiniz. Ben Image üzerine bir label yerleştirerek
Image kontrolünü ışıklı bir buton olarak kullandım. Forma dizi olarak
ayarlanmış iki Image ve iki label yerleştirdim. Labeller Image kontrollerinin
tam üzerinde. (Image üzerinde Sağ tuşla Send To Back yaparak Labeli Image
kontrolünün önüne getirebilirsiniz.). Name özellikleri lblCinsiyet ve
imgCinsiyet. Bunları bir seçenek butonu olarak kullanacağım ve hangisi
seçilmişse o aydınlanacak, diğeri kararacak ve seçim bir değişkene atanacak.
lblCinsiyet caption’ları “KIZ” ve “ERKEK”. ResEditörde CUSTOM klasörüne daha
önce biri parlak, diğeri donuk/karanlık olan aynı gif dosyasını 101 ve 102
olarak aktardım. ResEditör kullanımı sitedeki makaleler içerisinde olduğundan
yazmadım. Oradan yeterli bilginin alınabileceğini düşünüyorum. Hepinize kolay
gelsin.
VB Help Dosyası Açma
Private Sub HelpMe_Click()
RetVal = Shell("winhelp.exe " & App.Path & "\HELPFILE.HLP", 3)
End Sub
VB Sistem Registryden Nasıl Okunur Yazılır?
Registry girişine almak ve kaydetmek
‘girişe yazınız.
‘ HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp\Settings\
SaveSetting "MyApp", "Settings", "Left", 10
‘Debug penceresinden giriş ve çıkışları oku.Debug.Print GetSetting("MyApp", "Settings", "Left", 4)
Registry’de Windows API kullanımı
Option Explicit
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias _
"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
phkResult As Long) As Long
VB INI Dosyasından Okuma Yapmak
***** 16-bit Örnek *****
Project’inize 1 adet commandbutton ekleyin ve aşağıdaki kodu yazınız:
Declare Function GetPrivateProfileString Lib "kernel" (ByVal lpApplicationName _
As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal _
lpReturnedString As String, ByVal nSize As integer, ByVal lpFileName As String) _
As integer
Declare Function WritePrivateProfileString Lib "kernel" (ByVal _
lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As _
String, ByVal lpFileName As String) As integer
Sub Command1_Click()
Dim sData As String Dim iDataLen As integer
VB MDI Form-Child Form
MDI FORM - ( Multiple Document
Interface )
Aynı
anda birden fazla formu açık tutmak için formlar kullanılır.
Bir
projede bir tane MDI form olabilir, ancak birçok alt form (child) içerebilir.
Child
formların MDIChild özellikleri True olarak değiştirilir.
MDI
formların Minimize, Maximize, Close komutları kaldırılamaz.
Tüm
child formlar sadece MDIform içerisinde hareket eder.
MDI
form minimize edilince, içindeki child formlarla beraber minimize olur.
Child
form maksimize olunca form başlığı ana form başlığı (title bar) haline gelir.
AutoShowChildren;
True ise child formlar ana form açılınca otomatik olarak görünür.
Aktif
durumdaki child formun menüsü ana form menüsü olarak görünür.
MDI
formlara PictureBox ve Menü dışında nesne eklenemez.
ChldForm.Zorder
1
Parametre
kullanılmamışsa ya da değeri 0 ise chldform ön planda
Parametresi
1 ise arka planda olacaktı
Açık olan childe formların listesi;
menu editorde oluşturulan menulerden birinin WindowsList özelliği onaylanarak menü
içerisinde gösterilebilir.
ActiveForm
: Aktif childe form
AutoShowChildren
: False
- Dim ile child formlar load komutuyla gizli yüklenir
ScrollBars
: Kaydırma çubukları
Arrange
: Childe formaların
MDI içerisinde dizilişini kontrol eder
( 1 - yatay, 2 - dikey, 3 - üst üste)
MDIForm1.Arrange
vbTileHorizontal
MDIForm1.Arrange
vbTilevertical
MDIForm1.Arrange
vbCascade
CHILD FORM
MDI
form içerisine dahil edilmiş olan formlardır.
Formlar,
MDIChild özelliği true değeri yapılarak child form yapılabilir.
Bir
MDI form birçok alt form (child) içerebilir.
Çalışma
anında projeye yeni Child form eklemek için projede yer alan childe formlar
kullanılır.
Dim
YeniChilde As New FormChilde1
VB Formlara İlişkin Örnek Kodlar
Formu Ortalamak
Private
Sub Form_Load()
Left = (Screen.Width - Width) / 2 ‘ Ekran
yüksekliğinden form yüksekliği
Top = (Screen.Height - Height) / 2 ‘ çıkarılarak fark ikiye
bölünüyor
End
Sub
Private
Sub Form_Load()
Me.Move (Screen.Height - Me.Height)/2, (Screen.Width - Me.Width)/2
End
Sub
Formu Sürekli En Üstte
Tutmak
(General)(Declaration)
Const
HWND_TOPMOST = -1
' Form en
üstte
Const
HWND_NOTOPMOST = -2
' Normal
Const
SWP_NOSIZE = &H1
' Form
boyutları değiştirilemez
Const
SWP_NOMOVE = &H2
' Form taşınmaz
Const
SWP_NOACTIVATE = &H10
' Form aktif yapılmaz
Const
SWP_SHOWWINDOW = &H40 '
Pencere Görünür
Private
Declare Sub 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)
Private
Sub Form_Activate()
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE _
Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End
Sub
VB SDI Form - ( Single Document Interface )
Formun yüklenmesi sırasında Load
olayı içerisinde bulunan kodunuzun daha aktif olması için kodun ilk satırına
Me.Show eklenir böylece form otomatik olarak devreye girer.
AutoRedraw özelliğini hızlı form
güncellemesine gereksinim duyulan noktalarda False yapılır.
Formlar gerekmedikçe bellekten Unload
komutu ile silinmez. Ekranda gözükmesi istemiyorsa, Unload yerine Hide ile
saklanır.
Bir form üzerinde farklı ad taşıyan
en fazla 254 kontrol nesnesi bulunabilir. Aynı tür olanlar bir dizi şeklinde
aynı ad ile indekslenerek kullanılabilir.
Formun çağrılıp gösterilmesi
sırasında gerçekleşen olayların sırası;
Form_Initialize
Form_Load
Form_Resize
Form_Paint
VB PictureBox
Picture nesnesi yerine Image kullanımı sistem kaynaklarını artırır. Picture ya da Image nesnelerine yüklenecek resimlerin RLE formatında olması, daha hızlı bir ekran güncellemesi ve az bellek kullanımı sağlar. LoadPicture komutu ile resmin yüklenmesi "EXE" dosyasının daha küçük olmasını sağlayacaktır.
PictureBox - Özellikler
Align
Appearange
AutoRedraw
AutoSize
BackColor
BorderStyle
CausesValidation
ClipControls
Container
CurrentX
CurrentY
DataChanged
DataField
DataFormat
DataMember
DataSource
DragIcon
|
DragMode
DrawMode
DrawStyle
DrawWidth
Enabled
FillColor
FillStyle
Font
FontBold
FontItalic
FontName
FontSize
FontStrikethru
FontTransparent
FontUnderline
ForeColor
HasDC
|
HDC
Height
HelpContextID
HWnd
Image
Index
Left
LinkItem
LinkMode
LinkTimeout
LinkTopic
MouseIcon
MousePointer
Name
OleDragMode
OleDropMode
|
Parent
Picture
RightToLeft
ScaleHeight
ScaleLeft
ScaleMode
ScaleTop
ScaleWidth
TabIndex
TabStop
Tag
ToolTipText
Top
Visible
WhatsThisHelpID
Width
|
Align : PictureBox’un form üzerindeki yeri
AutoRedraw : Kendini yeniden çizebilme
AutoSize : PictureBox’un otomatik olark
yüklenen resim
boyutuna ayarlanması
CurrentX : Fare işaretçisinin X kooordinatı
CurrentY : Fare işaretçisinin Y koordinatı
7 Şubat 2014 Cuma
VB Ortak Özellikler
Align
|
Kontrolün
form üzerinde yerleşme pozisyonu
|
Alignment
|
Yazının pozisyonu ( sağa dayalı, sola
dayalı, ortada )
|
Appearange
|
Düz
yada 3 boyutlu görünümü denetler
|
Autosize
|
İçeriğe
göre boyutların otomatik olarak ayarlanması
|
BackColor
|
Zemin
rengi
|
BorderStyle
|
Çerçeve
sitili
|
Caption
|
Başlık
|
DrawWidth
|
Çizgi kalınlığı
|
Enabled
|
Kullanılabilirlik
|
HelpContextID
|
Yardım dosyası konu numarası
|
Font
|
Font
özellikleri
|
FontBold
|
Font
kalınlığı
|
FontItalic
|
Fontun
eğik yada düz oluşu
|
FontName
|
Font
tipi
|
FontSize
|
Font
büyüklüğü
|
FontStrikethru
|
Fontun
üst çizgzi
|
FontTransparent
|
True
- print komutu ile yazılan yazılar altta bir renk olmazsa yazı görülmez
|
FontUnderline
|
Fontun
alt çizgili olup olmadığı
|
ForeColor
|
Text
ya da grafiğin rengi
|
Height
|
Yükseklik
|
HWnd
|
Windows
tarafından verilen referans numarası
|
Left
|
Sol
kenardan uzaklık
|
MouseIcon
|
Fare
ikonu
|
MousePointer
|
Fare
işaretleyicisinin şekli
|
Name
|
Kontrol
yada formun ismi
|
Parent
|
Nesnenin ait olduğu diğer nesne
|
Picture
|
Kontrol
yada form içerisinde kullanılan resim
|
ScrollBars
|
Kaydırma çubukları
|
TabIndex
|
Tab
tuşu için seçim sırası
|
TabStop
|
Tab tuşu ile erişilebilirlik
|
Text
|
Seçili
elemanın metin bilgisi
|
ToolTipText
|
Balon
ipucu metni
|
Top
|
Üst
kenardan uzaklık
|
Value
|
Değer
|
Visible
|
Görünürlük
|
Width
|
Genişlik
|
|
|
1 Inch =
1440 Twip = 2,54 cm
|
|
VB Mouse Event-Fare Olayları
MouseDown
Form
yada kontrol üzerinde farenin herhangi bir tuşuna basılması olayı.
Private Sub
Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
‘
Form üzerinde farenin bir tuşuna basılması ile yapılacak işlemler
End Sub
Sabit
|
Değer
|
İşlem
|
VbShiftMask
|
1
|
SHIFT tuşu
basılı
|
VbCtrlMask
|
2
|
CTRL tuşu
basılı
|
VbAltMask
|
3
|
ALT tuşu
basılı
|
4
|
SHIFT+CTRL
tuşları basılı
|
|
5
|
SHIFT+ALT
tuşları basılı
|
|
6
|
CTRL+ ALT
tuşları basılı
|
|
7
|
SHIFT+CTRL+
ALT tuşları basılı
|
VB Klavye Olayları
Tuş basımının aktif olmasa
dahi form tarafından algılanması isteniyorsa formun KeyPreview özelliği
True olmalıdır.
KeyDown
Sabit
|
Açıklama
|
vbCrLf
|
CHR$(13)+(CHR$(10)
|
VbNullChar
|
Boşluk
|
VbLf
|
Yeni
Satır Başına Geçiş CHR$(10)
|
VbBack
|
BackSpace
CHR$(8)
|
VbCr
|
Satır
Başı Chr$(13)
|
KeyDown
Tuşa
basılması olayı. Aktif nesne tarafından algılanır. KeyUp olayından önce oluşur.
Private
Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
... ‘ Tuşa basılması ile yapılacak olan işlemler
End Sub
VB Olaylar, Yordamlar ve Fonksiyonlar
Event Handler – Olay
Kullanıcı
eylemleri sonucunda ortaya çıkan durumlara olay denir. Farenin yer
değiştirmesi, tuşa basılması, formun açılması gibi işlemlerin her biri bir olay
sayılır. Visual Basic de programlama olaylar üzerine kuruludur. Bunlar
alt yordamlar şeklinde kodlanır.
Private
Sub
Command1_Click() ‘
Tuşa basılması olayı
‘ Olay gerçekleşince yapılacak işlemler
End
Sub ‘ Bitiş satırı
Alt Yordamlar
Belirli
bir görevi yada olayı yerine getirmek amacı ile yazılan küçük kod grubudur.
VB MsgBox-Mesaj Kutusu
Kullanıcıyı
bilgilendirmeyi sağlar. Kullanıcıya elde edilen bilgi ve uyarı mesajlarını
bildirmekte ya da seçimin onaylanmasını sağlamak için kullanılır.
Dim
Sayı As Integer
Sayı
= 45
MsgBox "Öğrenci sayısı" &
Sayı
vbCrLf CHR$(13)+(CHR$(10)
vbNullChar Boşluk
vbLf Yeni Satır Başına Geçiş CHR$(10)
vbBack BackSpace CHR$(8)
vbCr Satır Başı Chr$(13)
uyarı
= "Kayıt Siliniyor" + Chr$(13) + "Emin
misiniz"
Cevap=
MsgBox(uyarı, 4, "Kayıt Silme")
MsgBox "Hatalı
İşlem", vbCritical, "Mesaj Kutusu"
VB InputBox-Bilgi Giriş Kutusu
Kullanıcıdan bilgi alınmasını sağlar.
Bilginin girilebilmesi için yeni bir
pencere açılacak ve bilgi girişini bekleyecektir. Bilgi giriş
penceresinden girilen bilgi String(karakter) türünde olacaktır. Sayısal olarak
kullanılacak bilgini VAL fonksiyonu yardımıyla sayısal değere
dönüştürülmesi gereklidir.
Dim
Ad As String
Dim
SıraNo As Integer
Ad
= InputBox("Adınızı Giriniz","Bilgi Giriş
penceresi")
SıraNo
= Val(InputBox("Sıra No Giriniz"))
Ad = InputBox("Adınızı Giriniz","Bilgi Giriş
penceresi", “Misafir”)
Kaydol:
Kayıtlar (Atom)