Eti kakaolu bisküvimizi açtık. Bitki çayımızıda aldıktan sonra VFP yi çalıştıralım. Derin derin anlatacak vaktim yok ama ben çektim siz çekmeyin kısımlarını vereceğim.
thisform
thisform.nesneAdi.özellikAdi
: Buradaki thisform
reserve kelimesini kullanmazsanız form üstündeki bileşenlere erişemiyorsunuz.SET DEFAULT TO
SET DEFAULT TO "c:\temp"
: Eğer c:\temp
klasöründe programınızı yazacaksanız başta varsayılan yeri bu klasör olarak mimleyin. Avatar'ın soundtrackini dinleyelim.
DO FORM
DO FORM c:\temp\form1.scx
: Formunuzu çalışır görmek isterseniz ya bu komutu Command penceresine yazın ya "Ctrl-E" kısayolunu kullanın ya da yukarıdaki kırmızı ünlenm düğmesine basın.CREATEOBJECT
obj = CREATEOBJECT("ClsDeneme.Class")
: CREATEOBJECT(sınıf adı, [param 1], [param 2]...)
ile dışarıdaki dll'deki sınıftan bir nesne oluşturabilirsiniz. Tam keşfedemeden başka bir yol buldum ama oluşturduğunuz Visual FoxPro sınıfından bir nesneyide bu şekilde yaratabiliyorsunuz gibi. Gelelim beni bulduğum yönteme.MSDN yine güzel bir anlatımla aşağıdaki bağlantılardan VFP içinde nasıl sınıf yaratabileceğinizi izah etmiş.
- Classes in Visual FoxPro
- How to: Create Classes and Subclasses
- How to: Add Properties to Classes
- How to: Add Classes and Subclasses to Class Libraries
- How to: Add Classes to Visual FoxPro Tools
- How to: Open Class Libraries
1)Tools->Class Browser
2)New Class
3)Class oluşturacağınız dosyanın yerinide belirtiyorsunuz(vfp_classtest.vcx oluşturdum)
4)Class->New Property(Class Designer açılıkken-*.vcx dosyanız File->Open ile açıkken yani-)
5)Sınıfınızı tamamladınız.Tool->Toolbox
6)Sağ tuş->Add Class Library, vcx dosyanızı seçin ve açın.
7)Dilediğiniz sınıfınızı forma sürükleyin.
8)Properties penceresinde eklediğiniz özellikleri göreceksiniz.
9)Formun koduna bu özellikleri nasıl kullanmak istiyorsanız yazın.
Aşağıdaki sınıfı
RegAsm.exe ile registry ye kaydedediyor sonrasında VFP içinden çağırıyorum.
using System.Runtime.InteropServices; namespace ClsLib { [ClassInterface(ClassInterfaceType.AutoDual)] [ProgId("SinifDeneme.Class")] [ComVisible(true)] public class Sinif { public string SitringField; public string M_SitringProp { get; set; } public string f_Metot(object obj) { return "sdfsdf"; } } }
Bu da VFP nin Command penceresinde çalıştığım bir kaç komut:
SET DEFAULT TO "c:\temp" m = CREATEOBJECT("SinifDeneme.Class") MODIFY form c:\temp\form1.SCX ADD CLASS ADD CLASS aaa cem = CREATEOBJECT("SinifDeneme.Class") ADD CLASS cem.SitringField print cem.SitringField write echo cem.f_Metot() ENDDEFINE CREATE CLASS DO FORM c:\temp\form1.scx MODIFY FORM form1 DO "c:\program files (x86)\microsoft visual foxpro 9\viewcode.prg" DO FORM "c:\users\administrator\documents\visual foxpro projects\form1.scx" MODIFY CLASS ? OF c:\temp\vfp_classtest.vcx