visual basic etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
visual basic etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Şubat 2016 Cumartesi

Web Sayfasını İstediğimiz Klasöre Kaydettirmek

Bir uygulamam için uzun çabalardan sonra geliştirdiğim yöntemi size anlatmak istiyorum.
XP, son kaydedilen web sayfasının, kayıt yeri bilgisini kayıt Defteri içerisinde
SOFTWARE\Microsoft\Internet Explorer\Main anahtarı altında, SaveDirectory Dize değeri içerisinde tutar. Kullanıcı, internetten yeni bir sayfa kaydetmek istediğinde, en son hangi klasöre sayfa kaydı yapmışsa, Farklı Kaydet iletişim kutusu o klasörü görüntüleyecek şekilde açılır.
            Bizler uygulamamızda bir webbrowser ile sayfa kaydetme işlemi yaptırmak amacındaysak ve sayfanın örneğin uygulamanın bulunduğu dizinde bir klasöre kaydedilmesini istiyorsak Kayıt defterindeki bu Dize Değerini değiştirmekle işe başlayabiliriz.
            Ben bu işlemi yaparken sayın Arif AKTAŞ’ın
http://www.vbturk.net/idsorgula.asp?id=119  adresindeki “VB ile Registry Kullanımı” adlı makalesindeki modül kodlarını mdlRegistry adlı module koyarak gerçekleştirdim. Kendisine teşekkür ediyorum.

VB Kullanıcı Yönlendirme ile Excel’den Uygulamanızın Veritabanına Kayıt Aktarma

Kullanıcıdan veritabanımıza girip Access Dosya Menüsü> Al yolu ile Excel dosyasını aktarmasını isteyemeyeceğimize göre Excel'den veri almamız gerekirse kullanıcıya bunu nasıl yaptıracağız? Yazımda bunu anlatmaya çalıştım.
Kullanıcı Yönlendirme ile Excel’den Uygulamanızın Veritabanına Kayıt Aktarma
            Normal durumda Access’e Excel’den veri aktarmak için Access Veritabanının Dosya Menüsünden Dış Veri Al>Al seçenekleri ile açılan pencereden, dosya tipini Excel’e çevirerek seçim yaparsınız ve Access sizi verilerin aktarılması konusunda yönlendir. Bir uygulama hazırladığınızda, veri giriş sayfanız varsa ve kullanıcı aynı anda bir sürü veri girişi yapacaksa, kullanıcıdan bunları tek tek uygulama pencerenizden girmesini, yada Access veritabanınızı açarak yukarıdaki gibi Excel’de kayıtlı verilerini aktarmasını bekleyemezsiniz. Aşağıda Access’in yönlendirmesine benzer bir yönlendirme ile kullanıcıya bu işin nasıl yaptırılabileceğinin küçük bir örneği var. Tasarım ve kodlama çok basit. Dolayısıyla geliştirilmeye açık.
Ön Bilgiler:
            Uygulamanın bu bölümünün amacı, Access veritabanı ile bağlantılı çalışan ana uygulamamıza kullanıcının bir Excel dosyasında listelediği öğrenci bilgilerini veritabanımıza aktarmak. Bu yüzden deneme yapmadan önce bir veritabanımızın olması gerektiği açık. Buradaki veritabanı uygulamanın bulunduğu klasörde açılmış Veri adlı klasör içerisinde saklanan vtÖSS adlı Access veritabanı. Veritabanının kullanılan tablosu tblÖgrenciBilgileri (Şekil1). Yeniden tasarlamak isterseniz, bu tablonun alanlarını ve alan özelliklerini Şekil2’de görebilirsiniz.

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ı