wiki-framework-form-kerneli

FORM KERNELI

Konu başlıkları

 

 

 

Form Kernel Nedir ?

Form Kernel , Arama Kernel'ı , Batch Kernel ve Seçim Kernel'ı mantığıyla oluşturulmuş komplike abstract bir sınıftır.Dolayısıyla bu sınıftan farklı görevler yapan Form Kernel'lar miras yoluyla oluşturulabilir.Form Kernel'da kayıtlar oluşturabilir , oluşturduğumuz kayıtları kaydedebilir , kayıtlarımızı arayabilir , kaydettiğimiz kayıtları güncelleyebilir veya sistemden silebiliriz.Form Kernel tüm bu görevleri Batch , Arama ve Seçim Kernel'larının mekanizmalarını kullanarak yapar.satıcı_kodu ve satıcı_ismi bilgileriyle satıcı kaydının tutulduğu örneklerle Form Kernelı açıklayalım..

Form Kernel Sınıfı

Bu sınıf abstract bir sınıf olup , nesnesi oluşturulamaz.Base_Kernel_Event sınıfından türetilmiş ve Batch Kernel , Seçim Kernel ve Arama Kernel mekanizmaları bu sistemde kullanılmıştır.

Zorunlu Fonksiyonlar

Bu fonksiyonlar Form Kernel mekanizmasının temel iskeletini oluştururlar.Abstract fonksiyonlar olup , Form Kernel'ı miras alan tüm sınıflarda override edilmek zorundadırlar. Bu fonksiyonlara göz atalım.

SETUP_FORM

Form Kernel çalıştığında kayıt bilgilerinin sisteme girileceği bir arayüze ihtiyaç vardır.Dolayısıyla ihtiyaçlarımıza göre Kernel'ı oluşturmadan bir arayüz ekranı dizayn etmemiz gerekmektedir.Satıcı bilgilerini gireceğimiz ekran bu fonksiyon ile yüklenmektedir.Örneğimize göre form ekranımız ve fonksiyonumuz :

void  CRM_SATICILAR::SETUP_FORM ()
{
   SET_FIRST_FOCUS_WIDGET ( m_ui->line_edit_satici_kodu );
   REGISTER_BUTTONS_WIDGET ( m_ui->kernel_buttons_widget );
   SET_PAGE_TITLE    (tr("CRM SATICI EKRANI"));
   SET_SETTING_NAME  ("CRM_SATICI_FORMU");
   SET_HELP_PAGE     ("crm_satici.html");
   m_ui->line_edit_satici_kodu->setMaxLength(25);
   m_ui->lineEdit_satici_ismi->setMaxLength(25);
   m_ui->limitedTextEdit_aciklama->SET_MAX_STRING_LENGTH(50);
}
  • Satıcı kodu ve satıcı ismi bilgilerini gireceğimiz form ekranımız..
CRM_SATICI_FORMU_EKRANI
  • Kernel , form ekranını bu akışa göre hazırlar..

 

 

CRM_SATICI_FORMU_ACILIS_AKISSEMASI

 

 

NEW_RECORD

Kullanıcı yeni bir kayıt girecek şekilde , bilgilerin girileceği arayüz ekranını hazırlar.Form üzerinde önceki işlemlerden bilgiler kaldıysa temizlenir.Fonksiyonun içini boş bıraktık.Default değerlerimiz olursa burada atayabiliriz.Satıcı ekranına göre NEW_RECORD fonksiyonunun nasıl çalıştığına dair örnek :

void  CRM_SATICILAR::NEW_RECORD ()
{
}
  • NEW_RECORD fonksiyonuna örnek :
YENI_KAYIT_EKRANI
YENI_KAYIT_EKRANI_2
CLEAR_FORM_MEMBERS

Bu fonksiyon , bir işlem sonrası otomotik olarak çağırılarak , istenilen değişkenlerin temizlenmesini sağlar.Bu fonksiyonda , form ile ilgili işlem yaptığımız değişkenlerimize default değerler atayabilir , varsa sayaçlarımızı sıfırlayabiliriz.Bu fonksiyonun içinide boş bıraktık.Çünkü Kernel zaten formekranımızı temizliyor. Onun dışında temizlemek istediğimiz bir değişken yok.

void CRM_SATICILAR::CLEAR_FORM_MEMBERS()
{
}
CHECK_VAR

Bu fonksiyon , Batch Kernel'daki CHECK_VAR fonksiyonudur.Kernel'ımızın çalışma mantığına göre bu fonksiyonda form ekranına kullanıcı tarafından girilen bilgiler kontrol edilir.Örneğin satıcı kayıt sisteminde satıcı kodu bilgisi içerisinde rakam ve harf dışında karakter olmamasını istiyorsak bu alanı bu fonksiyonda kontrol edebiliriz.Kullanıcı harf ve rakam dışında bir karakter girerse kullanıcıyı uyarır ve hatasını düzeltmesini isteyebiliriz.

  • Satıcı örneğimizde kontrol yapmadık..O yüzden fonksiyonu boş bıraktık..
int CRM_SATICILAR::CHECK_VAR (QObject * object)
{
   Q_UNUSED(object);
   return CEREN_OK;
}
  •  

 

CHECK_VAR_AKISSEMASI

CHECK_EMPTY

Bu fonksiyon , form ekranında bir işlem yapma için kullanıcı tarafından dolduralan form üzerindeki kayıt bilgisi alanlarında eksikliklerin olup olmağı kontrol edilir.

  • Mesela satıcı örneğimizde satıcı koduna göre arama yapmak istiyoruz.Arama işlemine geçilmeden önce satıcı kodu bilgisinin boş bırakılıp bırakılmadığını bu fonksiyonda kontrol edebilir ve boş brakıldığında kullanıcıyı uyarırır, Kernel'ı da boş bırakıldığına dair bilgilendirebiliriz. Kernel bu bilgiye göre arama işlemini satıcı kodu girmeden yaptırmaz.
int CRM_SATICILAR::CHECK_EMPTY ()
{
   if( m_ui->lineEdit_satici_ismi EQ NULL ){
       MSG_ERROR("HATA : Satıcı ismi boş bırakılamaz.." , this);
       return CEREN_FAIL ;
   }
   if( m_ui->line_edit_satici_kodu EQ NULL ){
       MSG_ERROR("HATA : Satıcı kodu boş bırakılamaz.." , this);
       return CEREN_FAIL ;
   }
   return CEREN_OK;
}
  • Kernel arama işlemine , alanlar boşken izin vermiyor.. :
CHECK_EMPTY
CHECK_ADD()

Bu fonksiyon , kullanıcı form ekranına kayıt bilgisi girdikten sonra KAYDET butonuna basmasıyla Kernel tarafından çağırılır.Kernel bu fonksiyonu sisteme bir veri kaydetmeden önce veriyi kontrol etmek için çağırır.Biz bu fonksiyonda kaydedilecek veriyi kontrol etmek için kullanırız.

  • Mesela satıcı örneğimizde aynı satıcı kodunda başka satıcı bulunmamasını isteyelim.Aynı satıcı kodunda başka bir satıcı kaydı olup olmadığını burada kontrol edelim.. :
int CRM_SATICILAR::CHECK_ADD ()
{
   SQL_QUERY query( DB );
   query.PREPARE_SELECT( "crm_saticilar" ,"satici_kodu","satici_kodu=:satici_kodu" );
   query.SET_VALUE( ":satici_kodu" , m_ui->line_edit_satici_kodu->text().toInt() );
   if( query.SELECT() NE 0 ){
       MSG_ERROR("HATA : Bu kodda satıcı daha önce kayıt edilmiş." , this );
       return CEREN_FAIL;
   }
   return CEREN_OK;
}
  • Daha önce aynı kod ile eklenmiş satıcının tekrar eklenmesi engelleniyor.. :
CHECK_ADD
CHECK_ADD_2
ADD_RECORD()

Bu fonksiyon , form ekranına kullanıcı tarafından girilen kayıt bilgileri , Kernel tarafından CHECK_ADD kontrolünden geçtikten sonra çağırılır.Kernel bu fonksiyonu kullanıcının girdiği kayıt biligilerini sisteme kaydetmek için kullanır.

  • Örneğin satıcı kayıt formunda , veri tabanına yeni bir kayıt eklemek istediğimiz de Kernel form üzerindeki bilgileri kontrol eder.Daha sonra bu fonkisyonu çağırır.Biz bu fonksiyonda form üzerindeki satıcı bilgilerini alarak veri tabanımıza kaydederiz.
int CRM_SATICILAR::ADD_RECORD ()
{
   SQL_QUERY query( DB );
   query.PREPARE_INSERT("crm_saticilar", "satici_id", "satici_kodu, satici_ismi" ) ;
   query.SET_VALUE( ":satici_kodu" ,  m_ui->line_edit_satici_kodu->text() );
   query.SET_VALUE( ":satici_ismi" ,  m_ui->lineEdit_satici_ismi->text() );
   int record_id = query.INSERT();
   return record_id;
}
  • Satıcı bilgileri kaydedilerek , form ekranı temizleniyor.. :
KAYIT_EKLEME
KAYIT_EKLEME_2
  • Kernel kayıt ekleme işlemini bu akış sırasıyla yapmaktadır..

 

 

KAYIT_EKLEME_AKISSEMASI

 

 

CHECK_UPDATE

Bu fonksiyon , form ekranında bir kayda ait bilgiler görüntüleniyorken , kullanıcı kaydın bilgilerinde değiştirmeler yapıp Kaydet butonuna basarsa Kernel , bu fonksiyonu çağırır.Bunun nedeni kullanıcının kayıtla ilgili değişikliklerini kontrol etmektir.Update öncesi kontrollerimiz bu fonksiyonda yapılır.

  • Bu fonksiyonu kullanmadık.. :
int CRM_SATICILAR::CHECK_UPDATE ( int record_id )
{
   Q_UNUSED(record_id);
   return CEREN_OK;
}
UPDATE_RECORD

Bu fonksiyon , Kernel bir kayıttaki güncelleme bilgilerini CHECK_UPDATE kontrolünden geçirip sonra hata kodu dışında bir cevap yani bir kayıt id'si alırsa , bu fonksiyonu aldığı kayıt id'si ile çağırır.Biz bu fonksiyonda , kayıt sistemimizde alınan kayıt id'sine ait kaydı bularak , kullanıcının değişikliklerini kayda uygula malıyız.

  • Satıcı id'si ile kayıt bulunarak , satıcı bilgileri güncelleniyor.. :
void CRM_SATICILAR::UPDATE_RECORD ( int record_id )
{
   SQL_QUERY query(DB);
   query.PREPARE_UPDATE( "crm_saticilar" , "satici_id", "satici_kodu, satici_ismi" , "satici_id=:satici_id" );
   query.SET_VALUE( ":satici_id" , record_id );
   query.SET_VALUE( ":satici_kodu" , m_ui->line_edit_satici_kodu->text() );
   query.SET_VALUE( ":satici_ismi" , m_ui->lineEdit_satici_ismi->text() );
   query.UPDATE();
}
  • Kullanıcı 1 satıcı kodlu satıcının bilgilerini değiştiriyor.. :
KAYIT_GUNCELLEME
KAYIT_GUNCELLEME_2
  • Daha sonra Kaydet butonuna basıp , güncellemeleri kaydediyor.Ve kaydın güncel haline bakılıyor.. :
KAYIT_GUNCELLEME_3
KAYIT_GUNCELLEME_4
  • Güncelleme işleminin akış şeması diyagramlardaki gibidir..

1 ) Kaydın bilgileri değiştirildiğinde ;

 

 

KAYIT_GUNCELLEME_AKISSEMASI_1

 

 

2 ) Kaydet butonuna basıldığında ;

 

 

KAYIT_GUNCELLEME_AKISSEMASI_2

 

 

CHECK_DELETE

Bu fonksiyon , kullanıcı form ekranında bir kayıt görüntüleniyorken Kaydı Sil butonuna bastığında Kernel tarafından çağırılır. Kernel bize , kullanıcı kayıt silmek istiyor , silmeden önce kayıtla ilgili kontrollerini burada yap demektedir.Biz bu fonksiyonda , eğer özel bir kayıt ise silinmesini engelleyebilir yada kayıt silinmeden önce kayıtla ilgili silinmesi gereken başka alanlar varsa bu alanları kontrol edebiliriz. Eğer kaydın silinmesini engellemek istiyorsak hata kodu , silinmesini istiyorsak devam kodu return etmeliyiz.

  • Bu fonksiyonu kullanmadık.. :
int CRM_SATICILAR::CHECK_DELETE ( int record_id )
{
   Q_UNUSED(record_id);
   return CEREN_OK ;
}
DELETE_RECORD

Bu fonksiyon , Kernel tarafından kayıt CHECK_DELETE kontrolünden CEREN_OK değeri ile geçtikten sonra , kaydın silinmesi için çağrılır.Kernel bize , kullanıcı kaydın silinmesini istedi , CHECK_DELETE kullanarak kaydı kontrol ettim , kaydın silinmesi için bir sorun yok , id'ni verdiğim kaydı bu fonksiyonun içinde sil demektedir.

  • id'sini aldığımız kaydı sistemimizde , id ile bularak siliyoruz.. :
void CRM_SATICILAR::DELETE_RECORD ( int record_id )
{
   SQL_QUERY       sql_query( DB );
   sql_query.PREPARE_DELETE("crm_saticilar","satici_id = :satici_id");
   sql_query.SET_VALUE( ":satici_id", record_id );
   sql_query.DELETE();
}
  • Satıcı kaydı örneğimie göre bir kayıt silelim.. :
KAYIT_SILME
KAYIT_SILME_2
KAYIT_SILME_3
  • Silme işlemine ait akış şeması diyagramdaki gibidir.

 

 

KAYIT_SILME_AKISSEMASI

 

 

FIND_RECORD

Bu fonksiyon , kullanıcı form ekranında Getir butonuna bastığında Kernel tarafından çalıştırılır.Fonksiyon kullanıcının form ekranına girdiği kayıt bilgilerini alır ve kaydı sistemde arar. Kayıt bulunursa kaydın id'si , bulunamazsa -1 return edilir.

  • Satıcı örneğimize göre bu fonksiyonda , line editten girilen satıcı kodu alınarak kayıt veri tabanında aranıyor..Bulunursa kaydın id'si , bulunamazsa -1 return ediliyor.. :
int CRM_SATICILAR::FIND_RECORD()
{
   SQL_QUERY query( DB );
   query.PREPARE_SELECT( "crm_saticilar" , "satici_id" , "satici_kodu =:satici_kodu");
   query.SET_VALUE( ":satici_kodu" , m_ui->line_edit_satici_kodu->text() );
   if( query.SELECT() NE 0  ){
       query.NEXT();
       return query.VALUE(0).toInt();
   }
   return -1 ;
}
  • Kullanıcı satıcı kodu girip Getir butonuna basıyor.. Bu fonksiyon ile kayıt id'si bulunduktan sonra kaydın bilgileri GET_RECORD ile forma basılıyor.. :
KAYIT_GETIR
KAYIT_GETIR_2
GET_RECORD

Bu fonksiyonda , kayıt id'si verilen kaydın bilgilerini form ekranındaki widget'lara doldururuz. satici_id'si verilen satıcının satici_kodu ve satici_ismi bilgileri line editlere basılmaktadır.

  • Şimdi fonksiyonu satıcı kayıt örneğimize göre nasıl kodladığımıza ve fonksiyonun nasıl çalıştığına bakalım..
int CRM_SATICILAR::GET_RECORD ( int record_id )
{
   SQL_QUERY       sql_query( DB );
   sql_query.PREPARE_SELECT ( "crm_saticilar" ,"satici_kodu , satici_ismi ", "satici_id=:satici_id");
   sql_query.SET_VALUE ( ":satici_id", record_id );
   if ( sql_query.SELECT() EQ 0 ) {
       QString str = "HATA : Böyle bir kayıt sistemde bulunamadı ";
       MSG_INFO( str , this );
       return CEREN_FAIL;
   }
   sql_query.NEXT();
   m_ui->line_edit_satici_kodu->setText    ( sql_query.VALUE(0).toString() );
   m_ui->lineEdit_satici_ismi->setText     ( sql_query.VALUE(1).toString() );
   return CEREN_OK;
}
  • Getir butonuna basıldığında , satıcı koduna girilen kaydın bilgileri line editlere dolduruluyor :
KAYIT_GETIR
KAYIT_GETIR_2
  • Kernel Getir işlemini yaparken bu akış şemasındaki gibi davranır..

 

 

KAYIT_GETIR_AKISSEMASI

 

 

SELECT_RECORD

Bu fonksiyon Seçim Kernel'ındaki SINGLE_SELECTED_LINE gibi çalışır.Form ekranında kullanıcı arama kriteri girip , Ara / Bul butonuna bastığında Kernel bu fonksiyonu çağırır.Bu fonksiyonda , kullanıcın girdiği arama kriteri alınarak , kritere göre kayıt aranır.Kayıt bulunursa kaydın id'si , bulunamazsa -1 return edilir.

  • Satıcı örneğine göre line edit'e girilen satıcı kodu ile satıcı aranıyor.Bulunursa satıcının id'si , bulunamazsa -1 return ediliyor.. :
int CRM_SATICILAR::SELECT_RECORD()
{
  SQL_QUERY query ( DB );
  query.PREPARE_SELECT( "crm_saticilar" , "satici_id" , "satici_kodu=:satici_kodu" );
  query.SET_VALUE(":satici_kodu" , m_ui->line_edit_satici_kodu->text() );
  if( query.SELECT() NE 0 ){
      query.NEXT();
      return query.VALUE(0).toInt();
  }
  return -1;
}
  • Satıcı satıcı kodu girer ve Ara/Bul butonuna basar.Çıkan ekranda Hayır butonuna basıldıktan sonra sonuçlar widget'larda gösterilir.. :
KAYIT_ARABUL
KAYIT_ARABUL_2
FIND_NEXT_RECORD

Bu fonksiyon , sistemimizdeki kayıtlar arasında gezmeyi sağlar.Kullanıcı Sonraki butonuna bastığında Kernel tarafından çağırılır.

Form ekranında bir kayıt bulunuyorsa , o kayıttan sonra veri tabanımıza eklenen kaydın id'sini bulur ve return eder.Eğer form ekranında kayıt bilgisi yok ise , ilk kaydın id'sini return eder.Butona basıldığında her basışta bir sonraki kaydı bulur ve id'sini return eder.

Sistemimizdeki son kayda geldiğinde daha ilerisi olmadığı için -1 return eder.Bu fonksiyondan sonra GET_RECORD fonksiyonu ile kaydın bilgileri forma yükleneceği için bu fonksiyonda kaydın bilgilerini forma yüklemiyoruz.Bu fonksiyonda kaydı bulup kaydın id'sini return ediyoruz , bulamazsak -1 return ediyoruz.

  • Satıcı örneğimize göre fonksiyonu kodlayalım.. :
int CRM_SATICILAR::FIND_NEXT_RECORD ()
{
   SQL_QUERY  query(DB);
   query.PREPARE_SELECT("crm_saticilar","satici_id",
                            "satici_kodu > :satici_kodu");
   query.SET_VALUE( ":satici_kodu", m_ui->line_edit_satici_kodu->text());
   if ( query.SELECT("satici_kodu ASC",0,1) NE 0 ) {
       query.NEXT();
       return query.VALUE(0).toInt();
   }
   return -1;
}
  • Örneğimizi çalıştıralım ve Bir sonraki butonu ile fonksiyonumuzu test edelim.. :
SONRAKI_KAYIT
SONRAKI_KAYIT_2
  • Sonraki kaydı bulurken kernel bu akış şemasını izler..

 

 

SONRAKI_KAYIT_AKISSEMASI

 

 

FIND_PREV_RECORD

Bu fonksiyon , sistemimizdeki kayıtlar arasında gezmeyi sağlar.

Kullanıcı Önceki butonuna bastığında Kernel tarafından çağırılır.Form ekranında bir kayıt bulunuyorsa , o kayıttan önce veri tabanımıza eklenen kaydın id'sini bulur ve return eder.Eğer form ekranında kayıt bilgisi yok ise , -1 return eder.Butona basıldığında her basışta bir öncek kaydı bulur ve id'sini return eder.

Bu fonksiyondan sonra GET_RECORD fonksiyonu ile kaydın bilgileri forma yükleneceği için bu fonksiyonda kaydın bilgilerini forma yüklemiyoruz.Bu fonksiyonda kaydı bulup kaydın id'sini return ediyoruz , bulamazsak -1 return ediyoruz.

  • Satıcı örneğine göre fonksiyonumuzu kodlayalım.. :
int CRM_SATICILAR::FIND_PREV_RECORD ()
{
   SQL_QUERY       sql_query( DB );
   sql_query.PREPARE_SELECT("crm_saticilar",
                            "satici_id ",
                            "satici_kodu < :satici_kodu ");
   sql_query.SET_VALUE( ":satici_kodu", m_ui->line_edit_satici_kodu->text());
   if ( sql_query.SELECT( "satici_kodu DESC",0,1) NE 0 ) {
       sql_query.NEXT();
       return sql_query.VALUE(0).toInt();
   }
   return -1;
}
  • Örneğimizi çalıştırarak fonksiyonumuzu test edelim.. :
ONCEKI_KAYIT
ONCEKI_KAYIT_2
  • Kernel , önceki kaydı bu akış şemasına izleyerek getirir..

 

 

ONCEKI_KAYIT_AKISSEMASI

 

 

FIND_FIRST_RECORD

Bu fonksiyon , kullanıcı İlk Kayıt butonuna bastığında Kernel tarafından çağırılır.

Bu fonksiyonda sisteme ilk kaydettiğimiz kaydın id'sini bulmamız ve onu return etmemiz gerekmektedir.Kernel bu fonksiyondan sonra return değerine göre GET_RECORD fonksiyonu çağırıp id bilgilerini forma yüklemektedir.

  • Satıcı örneğimize göre ilk kaydeilen satıcıyı bulmak isteyelim..Buna göre fonksiyonumuz kodlayalım.. :
int CRM_SATICILAR::FIND_FIRST_RECORD()
{
   SQL_QUERY query(DB);
   query.PREPARE_SELECT("crm_saticilar" , "satici_id");
   if( query.SELECT( "satici_id ASC" , 0 , 1 ) NE 0 ) {
       query.NEXT() ;
       return query.VALUE(0).toInt();
   }
   return -1 ;
}
  • Örneğimizi çalıştırıp , fonksiyonumuzu test edelim.. :
ILK_KAYIT
ILK_KAYIT_2
  • İlk kayıt bulunurken kernelın izlediği akış şeması aşağıdaki gibidir..

 

 

ILK_KAYIT_AKISSEMASI

 

 

FIND_LAST_RECORD

Bu fonksiyon , kullanıcı Son Kayıt butonuna bastığında Kernel tarafından çağırılır.

Bu fonksiyonda sisteme en son kaydettiğimiz kaydın id'sini bulmamız ve onu return etmemiz gerekmektedir.Kernel bu fonksiyondan sonra return değerine göre GET_RECORD fonksiyonu çağırıp id bilgilerini forma yüklemektedir.

  • Mesela , satıcı örneğimizde , son kaydettiğimiz satıcıyı bulmak isteyelim.. Fonksiyonumuzu buna göre kodlayalım.. :
int CRM_SATICILAR::FIND_LAST_RECORD ()
{
   SQL_QUERY query(DB);
   query.PREPARE_SELECT("crm_saticilar" , "satici_id");
   if( query.SELECT( "satici_id DESC" , 0 , 1 ) NE 0 ) {
       query.NEXT() ;
       return query.VALUE(0).toInt();
   }
   return -1 ;
}
  • Örneğimizi çalıştıralım ve fonksiyonumuzu test edelim.. :
SON_KAYIT
SON_KAYIT_2
  • Kernel , bu akış şemasındaki gibi fonksiyonları çağırarak son kaydı getirir..
SON_KAYIT_AKISSEMASI
LOCK_RECORD

Bu fonksiyon , bir kayıt üzerinde güncelleme yapıldığında kaydı o kullancı için kilitler.

Sistemi kullanan diğer kullanıcılar , kaydı o anda değiştiremezler.Bu fonksiyon , form üzerinde bir kayıt görüntülenirken kullanıcının kayıt bilgilerini değiştir mesiyle Kernel tarafından çağırılır.

int CRM_SATICILAR::LOCK_RECORD( int record_id )
{
   return DB->LOCK_ROW ( "satici_id", "crm_satici", QString ( "satici_id = %1").arg ( record_id ) );
}
UNLOCK_RECORD

Bu fonksiyon , güncelleme işlemi bitince , kayıt üzerindeki kilidi açar.Kernel , sistemi kullanan herkese güncelleme yapabılabilir hale getirir.

void CRM_SATICILAR::UNLOCK_RECORD( int record_id )
{
  return DB->UNLOCK_ROW ( "satici_id", "crm_satici", QString ( "satici_id = %1").arg ( record_id ) );
}

Hazir Fonksiyonlar

Bu fonksiyonlar , Form Kernel'ın çalışması için hazırlanmış fonksiyonlardır.Bu fonksiyonlar vasıtasıyla kernel çalışmaya başlamadan bazı özellikleri açıp kapatabilir , otomotik olarak temizlenecek widget'lar belirlenebilir. Burada Batch Kernel'ın hazır fonksiyonlarıda kullanılmaktadır.Sadece FORM KERNEL için yazılmış ve önemli olanlar anlatılacaktır.

DISABLE_CLEAR_ON_WIDGET

Bu fonksiyon , parametre olarak gönderidiğimiz widget'ın kernel tarafından otomatik olarak temzilenmesini engeller.

SET_SINGLE_RECORD_MODE

Bu fonksiyon , Form Kernel'ı sadece bir kayıt ile çalıştırır.Yani form açıldığında sadece yenile ve kaydet butonları aktif olur.Sistem daha önceden eklenmiş bir kayıt üzerinde güncelleme yapacak şekilde çalışır.

AUTOSTART_FORM_KERNEL

Form Kernel'ı verilen form ile otomatik olarak başlatır.

FORM KERNEL Tasariminda Dikkat Edilmesi Gereken Kurallar

  • Fonksiyonların akış şemasına göre görev dağılımı yapılmalıdr.
  • SINGLE_RECORD_MODE'ta çalışılıyorsa database'de mutlaka bir kayıt bulunmalıdır.
  • Form'da kullanılacak lineEdit'lerin ve limitedTextEdit'lerin maksimum kelime uzunlukları SETUP_FORM'da belirlenmelidir.
  • TextEdit yerine LimitedTextEdit kullanılmalıdır.