Bu bölümde çok sık kullandığımız bir kontrol olan Textbox'un özelliklerini geliştirerek yeni bir ActiveX kontrol oluşturacağız.
-
Bu sefer farklı bir yol izleyeceğiz. Önceki bölümlerde önce
ActiveX kontrol sonra Standart EXE projesi oluşturmuştuk. Bu
bölümde ise öncekilerin tersi olacak.
Önce Standart EXE projesi sonra aynı projeye ActiveX kontrol eklenecek. - Menüden File / New Project
- New Project ekranında Standart EXE'yi çift tıklayın. Yeni bir standart form penceresi açılacak. Burası ActiveX kontrolü test etmek için.
-
Menüden Project / Add User Control tıklayın.
Alternatif olarak Project penceresinde Sağ tıkla / Add / User Control
- F4e basarak form özellikleri penceresini açın. Formun Name özelliğini superText olarak değiştirin.
- Form üzerine bir Textbox yerleştirin.
- Text1'in Top ve Left özelliğini 0 yapın.
-
Şimdi Text1'in boyutlarını kontrolün boyutlarına eşitleyecek kodu
ekleyeceğiz.
Böylece Form üzerine kontrolümüz(superText) eklendiğinde veya boyutu değiştiğinde Text kutusu eklenen kontrol boyutlarında olacak. - Aşağıdaki kodları kopyalayıp (General) / (Declarations)'a ekleyin
Private Sub UserControl_Resize() With Text1 'Text1'in boyutunu eklenen kontrol'a eşitle .Height = UserControl.ScaleHeight .Width = UserControl.ScaleWidth End With End SubMetin kutusu odaklandığında(focus) renk metin kutusu zemin ve yazı rengi değişse odak değiştiğinde asıl renklere dönse nasıl olur? Daha kullanışlı bir metin kutusu olmaz mı? Böylece klavye girişinin hangi metin kutusuna yapılacağını fark etmek daha kolay olacaktır.
- Şimdi bu işi yapan kodları ekleyelim. Aşağıdaki kodları kopyalayıp Declarations'a ekleyin
Private Sub Text1_GotFocus() Text1.BackColor = vbRed 'kırmızı Text1.ForeColor = vbWhite 'beyaz End Sub Private Sub Text1_LostFocus() Text1.BackColor = vbWindowBackground '&H80000005 'Zemin rengi Text1.ForeColor = vbWindowText '&H80000008 'Metin rengi End Sub
Ancak kontrolü test ettiğinizde fark ettiyseniz kontrolümüzün en önemli özelliği yok. Nedir o? Text özelliği.
Tasarım formundaki Text1 kontrolünde Text özelliği var ancak ActiveX kontrolümüzün Text özelliği yok.
superText'e kodlar ile ya da Properties'den metin ekleyecek olsak böyle bir imkân yok. Büyük eksiklik.
- Şimdi bu eksikliği giderelim.
ActiveX kontrole özellik ekleme
Kontrole Metin özelliği eklemek için kod penceresinde
General / Declarations'a
Yok diyorsanız sorunu fark etmeye çalışın.
Çözümü ise sonraki bölümde.
Public Metin as String
eklemek yeterlidir. Ancak bu yöntemle eklenen özelliği kontrol etmek ve
yönetmek zordur.
Öyleyse olması gerekeni yapalım.
- superText formunun kod penceresindeyken menüden Tools / Add Procedure'ı tıklayın.
-
Açılan pencerede aşağıdaki ayarları yapın.
Name: Metin
Burada standartların dışına çıkıp Text yerine farklı olarak Metin girelim. Bu eklenecek özelliğin adıdır. İsterseniz Text'de olabilir.
Type: Property
Bu, eklenecek prosedürün türüdür. Özellik ekleyeceğimiz için Property seçiyoruz.
Scope: Public
Bu, prosedürün kapsamıdır.
Public: Genel erişim.
Private özel erişim(diğer prosedürlerden erişilemez)
- OK tıklandığında aşağıdaki kodların kod penceresine eklendiğini göreceksiniz. Bu kodları el ile de girebiliriz ancak üstteki yöntem bizi kod yazma zahmetinden kurtardı.
Public Property Get Metin() As Variant End Property Public Property Let Metin(ByVal vNewValue As Variant) End Property
Kodları açıklayalım
-
Get:
ActiveX kontrolün özellik değeri alındığında çalışır. Örneğin;
Yazi = superText1.Metin
gibi. superText1'in Metin özelliğinin değeri Yazi değişkenine aktarılır. -
Let:
ActiveX kontrolün özellik değeri değiştirildiğinde çalışır. Örneğin;
superText1.Metin = "Mesut Akcan"
gibi bir kod ile kontrolün Metin özelliğine değer atanır. - ActiveX kontrolü denediğimizde göreceğiz ki kontrolümüzün Metin özelliği eklenmiş.
-
Ama. Fark edeceksiniz ki Metin özelliğini
Properties penceresinden değiştirdiğimiz halde kontrolümüzde
değişiklik yok.
Tabii ki olmaz. Bununla ilgili bir kodlama yapmadık ki. - Get ve Let prosedürlerini aşağıdaki kodlarla değiştirin ya da düzenleyin.
Public Property Get Metin() As String Metin = Text1.Text End Property Public Property Let Metin(ByVal yeniDeger As String) Text1.Text = yeniDeger End Property
- Artık Properties'den Metin değerinde yaptığımız değişiklik kontrolümüze aksediyor, superText'in metni değişiyor.
- Bunun için Declarations'a aşağıdaki kodları ekleyin.
Private Sub UserControl_InitProperties() Text1.Text = UserControl.Name ' ya da ' Text1.Text= "superText" End Sub
- Evet, oldu. Şimdi denemek için test formunuza bir kaç tane superText kontrolü ekleyin.
- Metin özelliklerine farklı değerler atayın.
- F5 ile projeyi çalıştırın.
Yok diyorsanız sorunu fark etmeye çalışın.
Çözümü ise sonraki bölümde.
Proje dosyaları:
Vb_ile_ActiveX_Olusturma_4.rar
Önceki Bölüm:
3: Çerçeve(Frame) |
Sonraki Bölüm: 5: superText #2 |
Hiç yorum yok:
Yorum Gönder