wiki-framework-secim-kerneli

SEÇİM KERNELI

Konu başlıkları

 

Seçim Kernelı Nedir ?

SECIM KERNELI , bir yerdeki bilgileri tablolaştırma ve bu tablodan herhangi bir alanı seçmemize olanak tanır.Her seferinde tekrarlanabilecek bu seçme işlemi , bir seferde tasarlanarak sürekli olarak üzerimize iş yükü olmaktan çıkmaktadır.Mesela 5 tane öğrenci olduğunu , bu öğrencilerin bilgilerini sürekli olarak görmek ve bunların arasından istediğimiz birini seçmek isteyelim.Bu işlem temel kernel mantığında olduğu gibi sürekli olarak program içerisinde bazı yerlerde tekrarlansın.Programcı her seferinde tablo oluşturma , tablodaki veriler arasından seçilen öğrencinin verilerine ulaşma gibi bilgileri sürekli düşünecek ve kafa yoracaktır.Bunun yerine seçim kernelımız bu seçme işini kendisi üstlenir ve programcıyı bu iş yükünden kurtarır.SECIM KERNELI'ni biraz daha yakından inceleyelim..

Seçim Kernelı Sınıfı

SECIM_KERNELI şablon niteliğinde abstract bir sınıftır.Bu şablonu yani abstract sınıfı kullanarak farklı seçme mekanizmaları oluşturabiliriz.Oluşturacağımız yeni seçim yapacak sınıfımızı bu sınıftan türeterek ( SECIM_KERNELI sınıfından miras alınarak ) abstract fonksiyonlarımızı seçim mantığımıza göre tasarlayabiliriz.

Sınıfın nesnesini oluştururken yapıcı fonksiyonda , seçme ekranımız için kullanacağımız tablo başlıkları , pencere başlıkları , ekranın boyutu gibi ayarlamalar yapılır.Ogrenci Adi / Soyadi , Ogrenci No , Ogrenci Telefon , Ogrenci E-Mail bilgileri olan bir tablomuzdan öğrenci seçelim.. Ve seöilen öğrencinin adını ekrana mesaj olarak basacak bir Seçim Kernel'ı yapalım..

  • Yapıcı fonksiyonumuz.. Burada ayarlamalarımızı yapıyoruz.. :
TEST_OGRENCI_SECIMI::TEST_OGRENCI_SECIMI( QWidget * parent ) : SECIM_KERNELI ( parent )
{
   SET_WINDOW_SIZE ( 300, 800 );
   SET_PAGE_TITLE    (tr("Ogrenci Secimi "));
   SET_HEADERS (QStringList() << "Ogrenci Id" << "Ogrenci Adi / Soyadi"<<"Ogrenci No" <<  "Ogrenci Telefon" << "Ogrenci E-Mail " );
   SET_PAGE_TITLE    ( tr ( "OGRENCI SEÇİMİ" ) );
   SET_SETTING_NAME  ( "TEST_OGRENCI_SECIMI" );
   SET_HELP_PAGE     ( tr("test_ogrenci_secimi.html") );
   INIT_KERNEL ( DB );
}

Zorunlu Fonksiyonlar

FILL_TABLE

Bu fonksiyon , seçim yapacağımız ekranı ayarlamaktadır. Bu fonksiyonda verilerize ulaşılarak , bir table widget'ta veri ekranımızı oluşturabilir kullanıcının bu ekran vasıtasıyla verileri görmesini sağlayabiliriz.

  • Öğrenci tablosundan öğrenci seçme örneğimize göre fonksiyonumuzu kodlayalım.. Bu fonksiyonda öğrenci seçeceğimiz tablomuzu oluşturuyoruz.. :
void TEST_OGRENCI_SECIMI::FILL_TABLE()
{
   table_widget = GET_TABLE_WIDGET();
   int current_row = 0;
   QString name = "ramazan";
   for (int i = 0; i < 5; ++i) {
       current_row = ADD_NEW_ROW();
       table_widget->item(current_row, 0 )->setText ( QString::number(i) );
       QString str = name ;
       str.append( QString::number(i) );
       table_widget->item(current_row,  1 )->setText (  str );
       table_widget->item(current_row,  2 )->setText (  QString::number( 123456 + i ) );
       table_widget->item(current_row,  3 )->setText ( QString::number( 6632345 + 10*i + i )  );
       table_widget->item(current_row,  4 )->setText ( "abc@abc.com" );
   }
}
  • Örneğimizi çalıştıralım.. Ve Fonksiyonumuzu test edelim..Oluşturduğumuz tablomuzu görelim.. :
SECME_EKRANI_TASARIMI
  • Kernel oluşturulduğunda , bu akış şemasına göre seçme ekranını hazırlar..

 

SECME_EKRANI_AKISSEMASI

SINGLE_LINE_SELECTED

Bu fonksiyon , seçme işlemini yapmaktadır.Seçim ekranından herhangi bir verinin seçilmesi ve seçilen veri ile ilgili işlemler bu fonksiyon içerisinde yapılmalıdır.

  • Öğrenci seçme örneğimize göre fonksiyonumuzu kodlayalım.. Tablo üzerindeki bir öğrenci seçildiğinde , seçilen öğrencinin bilgilerini mesaj olarak ekranda gösterelim..

int TEST_OGRENCI_SECIMI::SINGLE_LINE_SELECTED(int selected_row_number)

{
   m_secilen_ogrenci_id = table_widget->item ( selected_row_number, 0)->text().toInt();
   QString selected_ogrenci_info = "Seçilen Satırdaki Öğrenci : ";
   selected_ogrenci_info.append( table_widget->item ( selected_row_number, 1)->text()  );
   MSG_INFO(selected_ogrenci_info ,this);
   return CEREN_CONTINUE;
}
  • Şimdi örneğimizi çalıştırarak fonksiyonumuzu test edelim.. Seçme ekranından bir öğrenci seçelim.. :
EKRANDAN_VERI_SECME
NOT : Eğer bu fonksiyondan CEREN_EXIT return etseydik test programımız tamamıyla kapanacaktı,continue ile tekrar seçme ekranında kalmayı sağladık ve programın    
      sonlanmasını engelledik.
  • Kernel, bu akış şemasına göre bu fonksiyonu çağırır..

 

SINGLE_LINE_SELECTED_AKISSEMASI

 

Hazır Fonksiyonlar

Bu fonksiyonlar seçme mekanizmasının çalışabilmesi için önceden yazılmış fonksiyonlardır.Bunlar kullanılarak seçme mekanizmasının özellikleri ayarlanır.

ADD_BUTTON

Bu fonksiyon , tıklandığında seçme ekranına yeni kayıt ekleyecek butonu, seçme ekranına eklemektedir.

SET_SORTING

Bu fonksiyon , seçme ekranında sıralama özelliğinin olup olmayacağına karar verir.Default olarak sıralama özelliği vardır.Eğer false parametresi ile çağırılırsa sıralama özelliği kapatılmış olur.

SET_WINDOW_SIZE

Bu fonksiyon verilen boyutlara göre seçim ekranını ayarlar.

SET_PAGE_TITLE

Bu fonksiyon , seçim ekranının pencere başlığını verilen başlık yapar.

SET_HEADERS

Bu fonksiyon ile seçim ekranındaki verinin sınıflandırma başlıkları belirlenir.

SET_SETTING_NAME

Bu fonksiyon seçme için yapılan ayarlamaların ismini verilen isim yapar.

SET_HELP_PAGE

Bu fonksiyon seçme mekanizmasının nasıl kullanıldığını anlatan yardım sayfasını verilen sayfa yapar.

INIT_KERNEL

Seçim kernelını ilkendirir.Kernelı istenilirse parametre olarak verilen database'e bağlar.

SEÇİM KERNELI Tasariminda Dikkat Edilmesi Gereken Kurallar

  • Türeteceğimiz seçme sınıfının nesnelerini oluşturmak için global foksiyon yazmak.
  • Seçim yapabilmek için seçme ekranı tasarlamalıyız.
  • Seçme ekranına yeni bir kayıt ekleyeceksek , bunun için tıklandığında yeni kayıt ekleyebileceğimiz add butonu koymalıyız.