WOLVOX 8 ve 9 · Script Tasarım

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.

Script Yapısı

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.

WOLVOX Script Tasarım ekranındaki sekmeler
SekmeNe işe yarar
Event ScriptProgramı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 ScriptProsedür, fonksiyon ve değişken tanımları. Kendiliğinden çalışmaz, Event Script'ten çağrılır.
TasarımKendi formlarınızı çizdiğiniz alan. Formlar script'ten AsFormCreate('FORMADI') ile açılır.
Text StoreUzun SQL sorguları gibi sabit metinleri saklama yeri.
Full ScriptYazı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 var bloğu olur ve en üstte durur.
  • Genel Script'in başına begin, sonuna end. yazılmaz.
  • Event Script'te begin yazılır, kapanan end; 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.
WOLVOX script kaydetme ve test adımları
AdımNe yapılır
1. YazKodu ilgili sekmeye yazın
2. HazırlaCtrl+F9 ile derleyin; derlenmeden Kaydet düğmesi aktif olmaz
3. KaydetScript'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. YedeklePaketi "Dışarı Aktar" ile düzenli olarak yedekleyin
Örnekler

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;
Sık Hatalar

WOLVOX script yazarken sık karşılaşılan hatalar

WOLVOX Pascal Script hata mesajları ve nedenleri
Hata / belirtiOlası neden
colon (':') expectedGenel Script'te ikinci bir var bloğu ya da prosedürden sonra gelen var
Invalid number of parametersMetodun isteğe bağlı görünen parametreleri yazılmamış
Unknown typeKullanılan sınıf script motoruna tanıtılmamış; Class List'te yok
Duplicate identifierProsedüre, programın olay için ürettiği adla aynı ad verilmiş
Kayıt yine de yazılıyorDenetim BeforePost yerine AfterPost'a yazılmış
Kod hiç çalışmıyorProsedür Genel Script'te ama hiçbir olaydan çağrılmıyor
Alan iki kez görünüyorForm yeniden açılınca nesne tekrar eklenmiş; ad kontrolü yok
Sık Sorulanlar

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
WhatsApp