Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Dinamik Kodlama ile ilgili ayrıntılı bilgiye bu dokümandan ulaşabilirsiniz.

Ürün Grubu

[X] Fusion@6

Kategori

[X] Yeni Fonksiyon

Versiyon Önkoşulu

@6

...

 Kaydet: Script'in saklanmasını sağlar. Yazılan script'ler bu butonla saklandıktan sonra, değişikliklerin geçerli olması için ekranın en alt bölümündeki Tamam butonuna basarak ekranın kapatılması gerekmektedir. Script ekranı Tamam butonu dışında bir şekilde kapatılırsa, değişiklikler saklanmadan çıkılacaktır.

 Yenile: Kod geliştirilme ortamının güncellenmesi için kullanılan butondur. Bu butona basıldığında, script girişi en son kaydedilen haline dönecektir.

 Temizle: Kod içeriğinin temizlenmesi için kullanılan butondur. Yani butona basıldığında, ekranda görülen scriptler silinecektir.

 Kod Şablonları: Daha önceden saklanmış kod şablonları arasından seçim yapmak için kullanılan butondur. Bu butona basıldığında, Netsis Script Kod Şablon Tanımlamaları rehberi gelecektir.

 Form Global:




 Session Global:

 Uygulama Global: Tüm formlarda, tüm şirketlerde ortak kullanılmak istenilen tanımlamaların girilmesi için kullanılan butondur. Yani eğer yazılan bir fonksiyon veya sub her yerde ortak olarak kullanılmak isteniyorsa bu tanımlamayı uygulama global kısmında yaparak tüm modüllerde ve şirketlerde bu fonksiyona erişerek çalıştırılabilir. Bu özellik ile ortak olan bir fonksiyon tanımlamasının, kullanılacak olan her ekranda tekrar tekrar yazılması önlenmiştir.
Örneğin; sub mail(kime,cc,subject,ek,body) call NETSISCORE.NetLibEMail.EPostaGonder(kime,cc,subject,ek,body) end sub şeklinde Uygulama Global'de yapılan bir tanımlamayı bizim hazırladığımız menüde kullanabilmek için; call appglobal.mail(MAIL,"","MEKTUP","",ICERIK) şeklinde çağırılması gerekmektedir.
Yukarıdaki sub tanımlamasında NETSISCORE.NetLibEMail.EpostaGonder şeklinde bir tanımlama yapılmıştır. Bu tanımlama ile Netsis'in nesnelerinin kullanıldığı belirtilmiştir. Bu nesneler hakkında bilgi almak için Nesne Tarayıcısı Kullanılabilir. Bknz: Nesne Tarayıcısı.

Nesneye Yönelik Programlama Kavramları

Sınıf (Class): Nesneye yönelik programlamada temel öğelerdir. Gerçek dünyadaki ya da akıldaki mantıksal nesnelerin programlamda ifade edilmesi için Class yapısı kullanılır. Sınıfların özellik (property) ve yöntemleri (method) vardır. Özellikler, sınıfı tanımlayan verileri olup, yöntemler ise sınıfın yapabileceği işlemler, yani yetenekleridir. Sınıf tanımı içinde sınıfa ait özellik ve yöntemler belirtilir. Programda sınıf tanımlarından nesneler türetilir. O nedenle sınıf tanımı, aynı zamanda nesne şablonu olarak da düşünülebilir.

Nesne (Object, Instance): Tanımlı bir sınıfın programda kullanılan bir örneğidir ya da olumudur. Sınıfların amacı, bir yapıyı bir kez tanımlamak, isimlendirmek ve tekrar tekrar kullanılmasını sağlamaktır. Bknz: Sınıf (Class). Program yazılırken, bir sınıf tanımına ait gerektiği sayıda nesne yaratılıp kullanılabilir. Bu nesneler, sınıf tanımındaki özelliklere sahiptir ve yöntemleri gerçekleştirebilir. Aynı program parçası içinde, sınıflardan türemiş her bir nesnenin tekrarsız bir adı olmak zorundadır ve nesne bu isimle kullanılır.


Olay Sürmeli (Event Driven) Programlama: Bir program, bir başlangıç noktasından başlayıp, sırayla devam edip bir yerde bitmiyorsa, kod parçacıklarının çalışması olaylara bağlanmışsa buna olay sürmeli programlama diyoruz. Win32 görsel formlarının olay sürmeli programlanması zorunludur. Çünkü kullanıcı form üzerinde işlem yaparken bir sıra takip etmek zorunda değildir ve birbiri arkasından çok farklı olaylar meydana gelebilir. Örneğin bir bilgi giriş sahasına giriş, bilgi giriş sahasından çıkış, başka bir bilgi giriş sahasına uğramadan bir butona basılması gibi. O nedenle, form, üzerinde oluşabilecek her olay için bir kod parçacığı yazılarak yönetilmelidir.
Form ve formun üzerindeki görsel bileşenlerin her biri kendi sınıf tanımının özellik ve yeteneklerini içeren birer nesnedir. Bknz: Nesne (Object, Instance). Her nesnenin olmamakla birlikte çoğunun nesne girişi, çıkışı, tıklanması gibi olayları mevcuttur.
Nesneler, sınıflarından gelen yeteneklerinden dolayı bazı işlemleri doğal olarak her seferinde aynı şekilde yapabilir. Örneğin, nümerik veri girişi alanı sınıfından türemiş ve form üzerine konmuş tüm nesneler, nümerik karakterleri alacak, alfabetik karakterleri kabul etmeyecek, belki basamak gruplaması ve ondalık gösterim gibi yetenekleri sergileyecek tir. Ancak bu nesne, Örneğin, iki tane nümerik sahadaki değerlerin çarpılarak başka bir sahada gösterilmesi gibi bir yeteneğe sahip değildir. İstenen bu işlem, nesne çıkışlarına ya da bir buton tıklanması olayı için ayrıca yazılmalıdır.
Dinamik kodlamada, bir form üzerinde mevcut görsel bileşen nesnelerinin olayları gerçekleşmesi sırasında çalışacak kod parçacıkları yazılabilmektedir. O nedenle kod yazımız öncesinde, hangi nesnenin hangi olayı için kod yazıldığı belirlenir. Bknz: Nesne Đzleme Bölümü, Nesne Olayı (Event) Bölümü.

...

Stok kodu girildiğinde girilen kod'a göre oluşan değerin depo kodu sahasına atılması istenebilir. Stok koduna IZM001,IZM002 gibi kodlar yazıldığında stoğun stokun depo koduna 1 yazılması; IST001,IST002 şeklinde kodlar yazıldığında depo koduna 2 yazılması aksi durumda 3 yazılması isteniyorsa;

Burada stok kodu bilgisi edit olduğu için TDBNEdit altında bulunabilir. Yukarıdaki tanımlamaya bakıldığında Stok_kodudb'nin OnExit olayında script yazılmıştır ve stok koduna yazılan değerin ilk 3 hanesini alarak IZM olup olmadığı kontrol ediliyor eğer IZM ise depo koduna 1 yazılıyor. Depo kodu bilgisi de edit olduğu için Depo_Kodu.TEXT olarak atama yapılmıştır. Eğer IZM değilse kontrole devam ederek IST olup olmadığına bakılıyor doğru ise 2 aksi durumda 3 olarak depo kodu belirleniyor.

...

SGTEST.StrColumn(0).Font.Bold = true SGTEST.StrColumn(0).Title = "Stok Adı"
'Đlk kolonun 1..5 satırlarına değer 1..5 yaz
for I=1 to 5 sgtest.cells(1,I) = "değer " & i next
'Grid üzerindeki boyama işlerini gözden geçir
sgtest.Invalidate
'Grid nesnesine ait önemli bilgiler gösteriliyor
GridBilgi = "aktif kolon " & sgtest.Col & chr(13) & chr(10) &_ "aktif satır " & sgtest.Row & chr(13) & chr(10) &_ "sabit satır sayısı " & sgtest.FixedRows & chr(13) & chr(10) &_ "sabit kolon sayısı " & sgtest.FixedCols & chr(13) & chr(10) &_
"Solda görünen kolonun numarası " & sgtest.LeftCol & chr(13) & chr(10) &_

REFERANSLAR
WEB Renk Değerleri
Aşağıdaki tabloda yer alan renk değerlerini NETSISCORE.NetLibGraph .WEBColorToColor yönteminde başına "clWEB" sabit değerini ekleyerek kullanabilirsiniz. edObj.PropertyValue("Color") = GraphLib.WEBColorToColor ("clwebTomato")

AliceBlue

'Graphic nesnesi hazırlanıyor
Set GraphLib = NETSISCORE.NetLibGraph

'Ekran nesnesindeki TEdit sınıfına ait örnekler listeye alınıyor
Set EditListesi = Self.ComponentList("TEdit")

'Listede kayıt var mı?
if EditListesi.Count > 0 then 'Listedeki tüm kayıtları dön For i=1 To EditListesi.Count
'Listedeki aktif nesneye erişim
Set edObj = EditListesi.Items(I - 1)
'erişim yapılan nesnenin renk özelliği "domates" rengine atanıyor...
edObj.PropertyValue("Color") = GraphLib.WEBColorToColor ("clwebTomato") Next End If


Örnek-8: INetTWEBBrowser
WEB sayfaları ve HTML düzeninde hazırlanan bilgilerin gösterilmesi için tasarlanmıştır. NDI paketinde Win32 ortamında, WEB sekmesinde TNetWEBBrowser nesnesi için
kullanılabilir.


'WEB nesnesini ilk kullanım için hazırla
call NETWB.Navigate("about:blank")

'Basit HTML rapor hazırla htmlcode = "<html><body>"&_ "<table width=50% border=1 >"&_ "<tr><th>Adı<th>yasi"&_ "<tr><td>Cemal<td>50"&_ "<tr><td>Kemal<td>18"&_ "<tr><td>Đnes<td>20"&_ "</body></html>"

'Hazırlanan HTML bilgisinin ekranda görünmesi için güncelle
call NETWB.SetDisplayHTML(htmlcode) msgBox "Hazırlanan raporu izle"


'NetWB nesnesini Netsis ana sayfasına yönlendir

call NETWB.Navigate("http://www.netsis.com.tr")



Image Modified
Yukarıdaki örnek koda ait ekran görüntüsü
Örnek-9: INetControl
"Perform" ve "ClientRect" özellikleri eklendi.
Perform komutuna ait bir örnek


'************************************************************************* 'CB_GETITEMHEIGHT windows mesajı nedir? '************************************************************************* '
'ComboBox nesnelerinde yer alan satırların yükselik 'değerini geriye dönmektedir.
'Bu örnek, perform komutunun kullanımı için kullanılmıştır.
'Windows API seviyesinde dinamik kodlama için Windows SDK veya benzeri 'kaynaklardan yardım alınması gerekmektedir...
'
'*************************************************************************

'Windows mesaj listesindeki özel değer tanımlanıyor...
Const CB_GETITEMHEIGHT = 340
'Bu tür mesajlar için Windows SDK yardımları kullanılabilir

'Ekrana Windows mesajının cevabını yazdır!
msgbox COMBOBOX1.Perform( CB_GETITEMHEIGHT, 0, 0 )


Örnek-10: INetObject
InvokeEvent yöntemi eklendi.
InvokeEvent komutuna ait örnek


'Button nesnesindeki "OnClick" olayının (event) tetiklenmesi

'OnClick gibi olay isimlerini öğrenmek için Dinamik kodlama 'tasarım ekranından yardım alınabilir.

BTNSAKLA.InvokeEvent("OnClick")


Image ModifiedOnClick olayının Dinamik Kodlama Ekranından izlenmesi
Not: InvokeEvent yöntemi sadece tek parametreli olaylar için kullanılmalıdır. (Sender: Tobject) parametre deseninde olmayan olaylarda çalıştırılması sonucunda hata alınacaktır.

Örnek 11: ICoreSession
"EntegrasyonTarihi" özelliği eklendi.

Örnek 12: ICoreLocalizationConvert
Genelde Iran kültüründe ihtiyaç duyulan fonksiyonlar için kullanılabilir. Normal takvim sistemindeki bir değer Farsi sisteme, Farsi tarih sistemdeki tarih değeri de normal
takvime çevrilebilir.


'Localization servis nesnesine erişim yap
Set NetLocalizationService = NETSISCORE.NetLibLocalizationConvert

'Normal takvim bilgisi Iran takvim sistemine çevriliyor '***NOT:****
'Iran takvim sistemi, Netsis Çalışma Kültür değerinin Iran'a göre 'ayarlanması durumunda çalışacaktır...
MsgBox NETSISCORE.NetLibLocalizationConvert.StrDateToStrFarsi("01/01/2007")


Örnek-13: ICoreWin32
KrediKartNoDogrula, OzelParamVarMi , OzelParamDegerOku, YaziIlePara, YaziIleParaIng, WinPostMessage, WinSendMessage yöntemleri eklendi.
Özel Parametre Kontrolü


Dim BasimParamAcik
BasimParamAcik = NETSISCORE.NetLibWin32. OzelParamVarMi("FATURA", "BASIM")


WinPostMessage Kullanımı


'Windows form kapanış özel mesaj değeri tanımlanıyor...
Const WINDOWS_MESSAGE_FORM_CLOSE = 16

'Windows mesaj kuyruğuna zamanuyumsuz (asynch) mesaj gönderimi için kullanılır

'Zamanuyumlu mesaj gönderimlerinde (synch) WinPostMessage yerine 'WinSendMessage yöntemi kullanılmalıdır.

'************************************************************************ 'Windows mesaj yönetimi için Windows-SDK yardımı kullanılabilir.. '***********************************************************************

CALL NETSISCORE.NetLibWin32.WinPostMessage(SELF.HANDLE, WINDOWS_MESSAGE_FORM_CLOSE, 0, 0)


Örnek-14: ICoreSMS
ICore. NetLibSMS yöntemi ile yaratılan nesne, tek ya da toplu olarak SMS gönderimi için kullanılmaktadır. Desteklediği yöntemler: AddMessage, SendMessage ve


SendMessages yöntemleridir. Toplu mesaj gönderimlerinde, mesajlar AddMessage yöntemi ile eklenmeli ve tüm mesajlar eklendikten sonra SendMessages yöntemi çağırılmalıdır. Sadece bir mesaj gönderimi durumunda ise; SendMessage yöntemi çağırılmalıdır.


'ICoreSMS nesnesi yaratılıyor
Set SMSObj = ICore. NetLibSMS( "Netsis", now, now+2 )

'Mesaj gönderiliyor
Call SMSObj.SendMessage("Netsis",now,now+2,"Deneme","00905333333333","01","Netsis")

UYARILAR & EK BELGELER

  1. Netsis dinamik kodlama sisteminde yer alan Visual Component Library (NVCL) nesne katmanları Borland Delphi mimarisine uyumlu olacak şekilde tasarlanmıştır. ( Borland Delphi mimarisi ile ilgili temel bilgiler için {+}http://www.marcocantu.com/edelphi/EssentialDelphi_103.zip+ bağlantısından yararlanabilirsiniz. )
  2. Nesne, sınıf, yöntem ve özellik isimlerinin genelinde Borland isimlendirme tekniği değiştirilmeden kullanılmıştır.
  3. Netsis dinamik kodlama sisteminde yer alan örnekler tamamen konunun öğrenilmesine yönelik hazırlanmış çalışmalardır. Buradaki örnek kodların her durumda çalışması ve desteklenmesi söz konusu değildir.
  4. Windows mesajlaşma sisteminde uygun mesajın uygun yerlerde kullanılması gerekmektedir. Aksi takdirde uygulamada beklenmeyen sorunlar ortaya çıkabilir.
  5. Windows'un bazı özel mesajlarının uygulamada sorun yaratması durumunda daha sonraki sürümlerde kapatılabilir.


Gainsboro

MistyRose

MistyRose

AntiqueWhite

GhostWhite

Moccasin

Moccasin

Aqua

Gold

NavajoWhite

NavajoWhite

Aquamarine

GoldenRod

Navy

Navy

Azure

Gray

OldLace

OldLace

Beige

Grey

Olive

Olive

Bisque

Green

OliveDrab

OliveDrab

Black

GreenYellow

Orange

Orange

BlanchedAlmond

HoneyDew

OrangeRed

OrangeRed

Blue

HotPink

Orchid

Orchid

BlueViolet

IndianRed

PaleGoldenRod

PaleGoldenRod

Brown

Indigo

PaleGreen

PaleGreen

BurlyWood

Ivory

PaleTurquoise

PaleTurquoise

CadetBlue

Khaki

PaleVioletRed

PaleVioletRed

Chartreuse

Lavender

PapayaWhip

PapayaWhip

Chocolate

LavenderBlush

PeachPuff

PeachPuff

Coral

LawnGreen

Peru

Peru

CornflowerBlue

LemonChiffon

Pink

Cornsilk

LightBlue

Plum

Crimson

LightCoral

PowderBlue

Cyan

LightCyan

Purple

DarkBlue

LightGoldenRodYellow

Red

DarkCyan

LightGray

RosyBrown

DarkGoldenRod

LightGrey

RoyalBlue

DarkGray

LightGreen

SaddleBrown

DarkGrey

LightPink

Salmon

DarkGreen

LightSalmon

SandyBrown

DarkKhaki

LightSeaGreen

SeaGreen

DarkMagenta

LightSkyBlue

SeaShell

DarkOliveGreen

LightSlateGray

Sienna

Darkorange

LightSlateGrey

Silver

DarkOrchid

LightSteelBlue

SkyBlue

DarkRed

LightYellow

SlateBlue

DarkSalmon

Lime

SlateGray

DarkSeaGreen

LimeGreen

SlateGrey

DarkSlateBlue

Linen

Snow

DarkSlateGray

Magenta

SpringGreen

DarkSlateGrey

Maroon

SteelBlue

DarkTurquoise

MediumAquaMarine

Tan

DarkViolet

MediumBlue

Teal

DeepPink

MediumOrchid

Thistle

DeepSkyBlue

MediumPurple

Tomato

DimGray

MediumSeaGreen

Turquoise

DimGrey

MediumSlateBlue

Violet

DodgerBlue

MediumSpringGreen

Wheat

FireBrick

MediumTurquoise

White

FloralWhite

MediumVioletRed

WhiteSmoke

ForestGreen

MidnightBlue

Yellow

Fuchsia

MintCream

YellowGreen

Windows mesajlaşma sistemi (Windows Messaging)
Windows işletim sisteminde kullanılan mesajlar için +http://msdn.microsoft.com/library/default.asp?url=/library/en-+ us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues.asp adresi kullanılabilir.

GDI (Graphics Device Interface)
Windows GDI (grafik aygıt arabirimi), grafik çıktıyı görüntülemede kullanılan bir takım API lerden (Application Programming Interface) oluşur.

CANVAS
Canvas nesnesi, nesnelerin resimlerini şekillendirmek için kullanılan bir çizim yüzeyi olarak ifade edilmektedir. Canvas nesnesi, özellikleri, olayları ve yöntemleri ile, nesnelerin, grafiksel olarak, çizim, boyama ve yazı yüzü özelliklerini belirlemek için kullanılmaktadır

BRUSH
Brush, kapalı şekilleri doldurmak için kullanılan bir araçtır. Brush nesnesinin taşıdığı renk (brush.color), boyanacak alanın doldurulması için kullanılacaktır ve doldurma işlemi ile(fill), seçilen alan(clientrect, cliprect, vb.) bu renk ile boyanmış olacaktır.


 Brush nesnesi, taşıdığı renk(color), resim(bitmap) ve desen(style) ile tanımlanmaktadır.


Image ModifiedImage Modified

PEN

Canvas nesnesi aracılığı ile kullanılabilecek olan Pen nesnesi, nesneye atanan renk ile(pen.color) çizgi çizmek için kullanılmaktadır.

RECT

Rect tipi, bir dikdörtgenin ölçülerini ifade etmektedir. Koordinatlar, sol, üst, sağ ve alt kenarları ifade eden 4 ayrı sayısal değer olarak ya da sol üst köşe ve sağ alt köşe noktaları olarak ifade edilirler.

...

Point tipi, ekran üzerindeki bir pixel' in yerini ifade eder. X, Point tipinin yatay koordinatını ifade eder.