AKINSOFT WOLVOX Pascal Script rehberi: yapı, yazım kuralları ve basit örnekler.
WOLVOX'ta script nereye yazılır, Genel Script ile Event Script farkı nedir, kayıt nasıl engellenir? Bu sayfada Script Tasarım ekranının yapısını ve ilk script'inizi yazarken işinize yarayacak kısa örnekleri bulacaksınız.
// Event Script → SipHr_Ds → BeforePost → İşlem Öncesi begin if DataSet.FieldByName('OZEL_KODU').AsString = '' then begin ShowMessage('Özel Kodu boş bırakılamaz!'); Abort; // satır kaydedilmez end;
En sık istenen script: alan boşsa satır kaydedilmez.
WOLVOX Script Tasarım ekranı
Script'ler, düzenlemek istediğiniz ekranın Script Tasarım penceresinde yazılır. Penceredeki sekmelerin her birinin ayrı bir görevi vardır.
| Sekme | Ne işe yarar |
|---|---|
| Event Script | Programın kendi olaylarına kod bağlanır: kayıt öncesi, kayıt sonrası, form açılışı gibi. "İşlem Öncesi" ve "İşlem Sonrası" alt sekmeleri vardır. |
| Genel Script | Prosedür, fonksiyon ve değişken tanımları. Kendiliğinden çalışmaz, Event Script'ten çağrılır. |
| Tasarım | Kendi formlarınızı çizdiğiniz alan. Formlar script'ten AsFormCreate('FORMADI') ile açılır. |
| Text Store | Uzun SQL sorguları gibi sabit metinleri saklama yeri. |
| Full Script | Yazılan kodun birleşmiş hali; salt okunur önizleme. |
Genel Script ve Event Script birlikte
Prosedür Genel Script'te tanımlanır, bir olayın içinden adıyla çağrılır. Genel Script'teki bir prosedür, yalnız kendisinden yukarıda tanımlı prosedürleri çağırabilir.
// Genel Script: önce TEK var bloğu, sonra prosedürler var Mesaj : String; procedure BilgiGoster; begin Mesaj := 'Script çalışıyor.'; ShowMessage(Mesaj); end; // Event Script → Script → OnStart → İşlem Öncesi begin BilgiGoster;
Yazım kuralları
Script motoru Delphi'ye benzer ama birebir aynı değildir. Derleme hatalarının çoğu şu kurallardan gelir:
- Genel Script'te tek bir
varbloğu olur ve en üstte durur. - Genel Script'in başına
begin, sonunaend.yazılmaz. - Event Script'te
beginyazılır, kapananend;yazılmaz; program ekler. - Varsayılan parametre yoktur; metodun tüm parametreleri yazılır.
- AKINSOFT'un hazır metotları
AsGenel1.önekiyle çağrılır. - Kullanılacak sınıf, Class List'te aranarak doğrulanır.
| Adım | Ne yapılır |
|---|---|
| 1. Yaz | Kodu ilgili sekmeye yazın |
| 2. Hazırla | Ctrl+F9 ile derleyin; derlenmeden Kaydet düğmesi aktif olmaz |
| 3. Kaydet | Script'i kaydedin |
| 4. Yeniden aç | Form açılışında çalışan kod için formu kapatıp yeniden açın |
| 5. Geri al | "Orjinali Yükle" son kaydedilen koda döner |
| 6. Yedekle | Paketi "Dışarı Aktar" ile düzenli olarak yedekleyin |
Basit WOLVOX Pascal Script örnekleri
Kısa ve genel kalıplar. Alan ve bileşen adları ekrana göre değişir; kendi ekranınızdaki adlarla kullanın ve önce test şirketinde deneyin.
Sayı alanında alt sınır
Vade günü sıfır ya da negatifse satır kaydedilmez. Aynı kalıp fiyat, miktar veya iskonto sınırı için kullanılır.
// Event Script → SipHr_Ds → BeforePost → İşlem Öncesi begin if DataSet.FieldByName('VADE_GUNU').AsInteger <= 0 then begin ShowMessage('Vade Günü sıfırdan büyük olmalıdır!'); Abort; end;
Boş liste koruması
Sipariş ve faturada başlık, satırlardan önce kaydedilir. Satırları denetleyen koda bu koruma konmazsa kullanıcı yeni belge açamaz.
// Başlık kaydedilirken satır listesi henüz boştur begin if not SipHr_Ds.Active then Exit; if SipHr_Ds.IsEmpty then Exit;
Veritabanından tek değer okumak
Son döviz kuru gibi tek bir değer SQL ile okunur.
var SQL : String; Kur : Extended; begin SQL := 'SELECT TOP 1 SATIS_FIYATI FROM DOVIZ_HAREKET ' + 'WHERE DOVIZ_BIRIMI = ''$'' ORDER BY TARIHI DESC'; // Beş parametrenin hepsi yazılır; script motorunda varsayılan parametre yoktur Kur := AsGenel1.SQLCalistir1(Uretim_Q.Connection, SQL, 0, False, False);
Ekrana bilgi etiketi eklemek
Mevcut bir bileşenin altına açıklama yazısı eklenir. Konum o bileşene göre hesaplanır; form yeniden açıldığında etiket ikinci kez eklenmez.
// Genel Script var NotLabel : TsLabel; procedure NotEtiketiEkle; begin if CheckBLOKE.Parent.FindComponent('NotLabel') <> nil then Exit; NotLabel := TsLabel.Create(CheckBLOKE.Parent); NotLabel.Name := 'NotLabel'; NotLabel.Parent := CheckBLOKE.Parent; NotLabel.Caption := 'Fiyatlar USD kuruyla hesaplanır'; NotLabel.Left := CheckBLOKE.Left; NotLabel.Top := CheckBLOKE.Top + CheckBLOKE.Height + 14; end; // Event Script → Script → OnStart → İşlem Öncesi begin NotEtiketiEkle;
Ana menüye kendi başlığınız
Menüye yeni başlık eklenir; tıklanınca Tasarım sekmesinde hazırlanan form açılır.
// Genel Script var YeniMenu, YeniAlt : TMenuItem; procedure OzelFormAc(Sender: TObject); begin AsFormCreate('OZEL_RAPOR'); // Tasarım sekmesindeki form adı end; procedure MenuEkle; begin YeniMenu := TMenuItem.Create(Self); YeniMenu.Caption := 'Özel İşlemler'; MainMenu1.Items.Add(YeniMenu); YeniAlt := AsGenel1.AddMenuItem(YeniMenu, 'Özel Rapor', -1); SetEventMethod(YeniAlt, 'OnClick', 'OzelFormAc'); end; // Event Script → Script → OnStart → İşlem Öncesi begin MenuEkle;
WOLVOX script yazarken sık karşılaşılan hatalar
| Hata / belirti | Olası neden |
|---|---|
colon (':') expected | Genel Script'te ikinci bir var bloğu ya da prosedürden sonra gelen var |
Invalid number of parameters | Metodun isteğe bağlı görünen parametreleri yazılmamış |
Unknown type | Kullanılan sınıf script motoruna tanıtılmamış; Class List'te yok |
Duplicate identifier | Prosedüre, programın olay için ürettiği adla aynı ad verilmiş |
| Kayıt yine de yazılıyor | Denetim BeforePost yerine AfterPost'a yazılmış |
| Kod hiç çalışmıyor | Prosedür Genel Script'te ama hiçbir olaydan çağrılmıyor |
| Alan iki kez görünüyor | Form yeniden açılınca nesne tekrar eklenmiş; ad kontrolü yok |
WOLVOX Pascal Script rehberi hakkında
WOLVOX'ta Pascal Script nereye yazılır?
Script Tasarım ekranına yazılır. Prosedür ve değişken tanımları Genel Script sekmesine, programın bir olayında çalışacak kod Event Script sekmesine yazılır. Genel Script'teki kod kendiliğinden çalışmaz; Event Script'ten çağrılmalıdır.
Kaydı engellemek için hangi olay kullanılır?
BeforePost olayı kullanılır. Koşul sağlanmazsa ShowMessage ile uyarı verilir ve Abort ile kayıt durdurulur. AfterPost'ta Abort kaydı geri almaz, çünkü kayıt zaten yazılmıştır.
Script'te neden 'Invalid number of parameters' hatası alıyorum?
WOLVOX script motorunda varsayılan parametre yoktur. Dokümanda isteğe bağlı görünen parametreler dahil, metodun tüm parametreleri yazılmalıdır.
Script'i kaydettim ama çalışmıyor, neden?
Önce Hazırla (Ctrl+F9) ile derlenmelidir; derlenmeden Kaydet aktif olmaz. Form açılışında çalışan kodlar için form kapatılıp yeniden açılmalıdır. Kod Genel Script'teyse bir Event Script olayından çağrıldığından emin olun.
Bu örnekler hangi WOLVOX sürümünde çalışır?
Örnekler WOLVOX 8 üzerinde hazırlanmıştır; WOLVOX 9'da da aynı Script Tasarım yapısı kullanılır. Alan ve bileşen adları ekrana ve sürüme göre değişebilir; kullanmadan önce kendi ekranınızda kontrol edin.
Script'i sizin için yazalım
Daha karmaşık doğrulama, özel rapor veya entegrasyon gerekiyorsa WOLVOX Pascal Script geliştirme hizmetimize göz atın. İstanbul'dan Türkiye genelindeki WOLVOX kullanıcılarına uzaktan destek veriyoruz.
Hemen Arayın: 0 541 156 26 57 veya [email protected] adresine yazın