Strings Delphi

//Kaynak : PCWorld dergisi
1 - // Birlikte Aç Komutu çıkarmak
{
Private Sub Command1_Click() ' Komut butonuna tıklandığında
Dim x As Long
x = Shell("rundll32.exe shell32.dll,OpenAs_RunDLL dosyaadi.xxx")
End Sub
}
2 - //Bu Nedir? Yardımı
{
Visual Basic ile gelen yardım derleyicisini kullanarak uygulamanızın yardım
dosyasını oluşturdunuz. Yardım dosyanızın içerisinde ilgili ID tanımlamalarını
da doğru olarak yaptıysanız, artık size verdiğimiz adımları uygulayarak
programınıza yardım seçeneğini ekleyebilirsiniz.
Programınızda yardım dosyasını olduğu gibi çağırabileceğiniz gibi Windows'un
iki ayrı özelliğini de kullanabilirsiniz. Birinci özellik "Bu nedir?" yardımı.
Formun sağ üst köşesinde kapatma tuşunun hemen yanında yer alan soru işaretine
tıkladığınızda çıkan "Bu nedir?" kutusunu form üzerindeki kontrollerden birinin
üzerine getirip tıkladığınızda kontrolün ne işe yaradığına dair bilgiler bir
baloncuk içerisinde çıkacaktır. Bu özelliği uygulamanızda kullanabilmek için
aşağıdaki adımları uygulayın:
Tools * Options * Project bölümüne gelerek "Help File" kutusuna uygulamanız için
oluşturduğunuz yardım dosyasını girin. Form'un Properties kutsunu açarak
"MinButton" ve "MaxButton" tuşlarına "False" değerini verin. Aynı zamanda
"Whats This Button" ve "Whats This Help" değerlerini de "True" yapın.
Form üzerinde örnek bir metin kutusu kontrolü oluşturarak bu kontrolün
"whats this help id"sine daha önce yardım dosyası oluştururken belirlediğiniz
numarayı girin.
İkinci yardım özelliği ise "kontrole duyarlı" yardım. Kullanıcı herhangi
bir kontrol üzerindeyken F1'e bastığında yardım dosyasını ilgili bölümü gelsin
istiyorsanız şu adımları uygulayın:
Tools * Options * Project bölümüne gelerek "Help File" kutusuna uygulamanız
için oluşturduğunuz yardım dosyasını girin. Örnek bir metin kutusu kontolü
oluşturarak properties kutusundan bu kontrolün "Help Context ID'sini tanımlayın.
Bu kadar basit.
}
3 - //HWnd de ne?
{
VB'de pencerelerle ilgili API'leri kullanırken genellikle HWnd diye bir kullanıma
rastlıyorum. HWnd nedir? Anladığım kadarıyla pencere numarası belirtiyor.
Doğru bir tahminde bulunmuşsunuz. HWnd değişkeni pencere referansıdır. Yıllar
önce Bill Gates amcamız Windows'un arabirimini tasarlarken arabirimi oluşturan
her küçük pencereye bir numara vermeyi ve pencereleri numaralarıyla
adlandırmayı düşünmüş. İşletim sisteminiz proje her çağrıldığında HWnd değişkenine
bir tam sayı atar. Her zaman değişken olan bu tam sayı herhangi bir kontrol veya
pencerenin referansını belirtir. Bu referans değişkendir çünkü çalıştırılan
diğer uygulamalar ve yüklenen kontroller zaten kendilerine birer HWnd değeri alır.
Bir nesnenin HWnd değerini öğrenmek için X = nesne.hWnd gibi bir ifade
kullanabilir X değerini öğrenerek Hwnd değerini okuyabilirsiniz.
}
4 - //CDbl kullanımı
{
VAL () fonksiyonunu hemen hepiniz biliyorsunuzdur. Metin formatında olan
sayıları numerik bir değişkene çevirmek için bu fonksiyonu kullanırız.
Peki bu fonksiyonun kardeşi olan CDbl'yi hiç duymuş muydunuz?
CDbl fonksiyonunu kullanmak içerisinde hane barındıran metinleri numerik
hale getirmek için en iyi yoldur. Aşağıda iki fonksiyonun kullanımlarını ve
arasındaki farkları göreceksiniz.
Kod: print Val(' 12345' )
Sonuç: 12345
Kod: print Val(' 12,345' )
Sonuç: 12
Kod: print CDbl(' 12,345' )
Sonuç: 12345
Kod: print CDbl(' 12345' )
Sonuç: 12345
Peki bu iki fonksiyonun farkı ne? Bir kaç satır fazla
kodla yapılabilecek, sık sık rastlamayacağımız bu durum için niye iki ayrı
fonksiyon üretilmiş? Cevabı çok basit: CDbl fonksiyonu değişik ülkelerde farklı
metrik ve ondalık değerler kullanılabileceği düşünülerek tasarlanmış ve sayı
içinde virgülün yerini değişse bile bunu tutarak sadık bir yardımcı durumuna
gelmiş.
}
5 - //Gradient fill
{
Sub Gradient(TheObject As Object, Redval&, Greenval&,_
Blueval&, TopToBottom As Boolean)
Dim Step%, Reps%, FillTop%, FillLeft%, FillRight%, FillBottom%, HColor$
Step = (TheObject.Height / 63)
If TopToBottom = True Then FillTop = 0 Else FillTop = TheObject.Height - Step
FillLeft = 0
FillRight = TheObject.Width
FillBottom = FillTop + Step
For Reps = 1 To 63
TheObject.Line (FillLeft, FillTop)-(FillRight, FillBottom),_
RGB(Redval, Greenval, Blueval), BF
Redval = Redval - 4
Greenval = Greenval - 4
Blueval = Blueval - 4
If Redval <= 0 Then Redval = 0
If Greenval <= 0 Then Greenval = 0
If Blueval <= 0 Then Blueval = 0
If TopToBottom = True Then FillTop = FillBottom Else FillTop = FillTop - Step
FillBottom = FillTop + Step
Next
End Sub
}
6 - //DOS penceresini Kapat
{
Declare Function FindWindow& Lib ' user32' Alias ' FindWindowA' _
(ByVal lpClassName As String, ByVal lpWindowName As String)
Declare Function SendMessage Lib ' user32' Alias ' SendMessageA' (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Sub Sleep Lib ' kernel32' (ByVal dwMilliseconds As Long)
Public Const WM_CLOSE = &H10
Private m_sEXEName As String
Private m_sDosCaption As String
Public Sub RunDosApp()
Dim vReturnValue As Variant
Dim lRet As Long
Dim i As Integer
vReturnValue = Shell(m_sEXEName, 1) ' Dosyayı çalıştır
AppActivate vReturnValue ' EXE penceresini aktif hale getir.
Do
Sleep (10000)
lRet = FindWindow(vbNullString, m_sDosCaption)
If (lRet <> 0) Then
vReturnValue = SendMessage(lRet, WM_CLOSE, &O0, &O0)
Exit Do
End If
Loop
End Sub
}
7 - //Like örnekleri
{
Deger = "aBBBa" Like "a*a" ' Doğru döndürür.
Deger = "F" Like "[A-Z]" ' Doğru döndürür.
Deger = "F" Like "[!A-Z]" ' Yanlış döndürür
Deger = "a2a" Like "a#a" ' Doğru döndürür.
Deger = "aM5b" Like "a[L-P]#[!c-e]" ' Doğru döndürür.
Deger = "BAT123khg" Like "B?T*" ' Doğru döndürür.
Deger = "CAT123khg" Like "B?T*" ' Yanlış döndürür
}
8 - //ico'yu fare imleci yapmak
{
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ‘İmleç metin kutusunun üzerine geldiğinde...
Text1.MousePointer = 99 ‘İmleci kullanıcı kararına bırak.
Text1.MouseIcon = LoadPicture("c:\point01.ico") ‘imleci bir simge haline getir.
End Sub
}
9 - //Program Manager'a Grup oluşturmak
{
Sub Command1_Click()
Text1.LinkTopic = "ProgMan|Progman" 'Bağlantı kurulacak program
Text1.LinkMode = 2 'Kullanıcı bağlantısı yarat
Text1.LinkExecute "[CreateGroup(PC WORLD Türkiye)]"
'Windows Program Yöneticisinde yeni bir grup yarat
Text1.LinkExecute "[AddItem(c:\vb\vb.exe, Visual Basic)]"
'Burada belirttiğimiz dizini kendinize göre değiştirin.
Text1.LinkExecute "[AddItem(c:\vb\vb.hlp, Visual Basic Yardımı)]"
'Gruba iki yeni öğe ekle
Text1.LinkExecute "[ShowGroup(PC WORLD Türkiye, 7)]"
'Grubu simge haline getir ve Visual Basic’e geri dön
On Error Resume Next 'Hata oluşursa işleme devam et. Sebep?
'Windows 3.0 ile VB bu aşamada uyumsuzluk çıkarır!
Text1.LinkMode = 0 ' bağlantıyı kes
End ‘Son...
End Sub
}