Delphi Kod İle Nesne Oluşturup Form Üzerine Yerleştirme

Kodlama yaparken bazen nesneyi kod satırında oluşturup form üzerine ekleme gibi ihtiyaç duyabiliyoruz bu gibi durumlar için bu makalemde örnek olarak ListBox sınıfından bir inheritance(kalıtım) alıp form üzerine oluşturmuş olduğumuz nesneyi eklemeyi göreceğiz.

Öncelikle yapmamız gereken Uses Satırına Vcl.StdCtrls(Standart Kontroller Sınıfı)’nı ekliyoruz böylece standart kontrollerin class(sınıf)’ina erişebileceğiz. Embarcaderonun sürüm farklılıklarından dolayı uses satırına sadece StdCtrls eklemeniz gerekebilir üstteki kütüphaneye erişemezseniz birde “StdCtrls” kütüphanesini kullanmayı deneyin ikiside aynı ama Embarcadero’nun sürümüyle beraber gelen değişikliktir.

Örnek uses satırı

Global olarak tanımlama yapabileceğimiz variable(değişken) bloğuna aşağıdaki örnek kodda görüldüğü gibi TListBox sınıfından ListBox adından bir kalıtım alacağız.

Delphi'de kod ile nesne oluşturup form üzerine yerleştirmeEn son olarakda Formun Oluşma Olayı olan OnCreate olayına isterseniz form üzerinden çift tıklayarak isterseniz formun boş bir alanına tıkladıktan sonra Object Inspector Kısmından Oncreate Adlı satırın sağındaki kısım eğer boşsa daha önce form create olayına herhangi bir olay bağlanılmamış demektir eğer yeni bir OnCreate olayı oluşturmak isterseniz çift tıklamanız yeterlidir böylece OnCreate Procedure’ne yönlendirileceksiniz.


Oncreate Olayına eklemeniz gereken kod satırları şu şekildedir;

Kullanmış olduğumuz kodların tam halide şu şekildedir;

11 Cevaplar

  1. İhsan dedi ki:

    işime yaradı sağol.

  2. IzmirliKemal dedi ki:

    Delphi Kod İle Nesne Oluşturup Form Üzerine Yerleştirme konusunda benim başka bir sorunum var. Cevaplarsanız memnun olurum.

    Bilgi Notu:

    Delphi 10.2 versiyonu, MSSQL Management Studio programı ile de MSSQL veritabanına ulaşıyorum ve veri alabiliyorum. Bu işlemleri yaparken de hazır ADOQuery ile ADOConnection nesnelerini kullanıyorum.

    Sorunum :

    ADOConnection nesnesini oluşturup bağlantı kurarken, Bilgisayar adını ve veritabanı(Database) adı kod ile girmek zorundayız. Buraya kadar problem yok;

    Ancak bu yazılan programı installshild türü bir program ile setup.exe haline çevirip başka PC veya PC lere kurduğumuzda, veritabanı adı değişmeyecek, ancak PC adı muhakkak ki değişecek, bu sorunu nasıl aşacağız.

    Bilgilendirirseniz size minnetar olurum. Teşekkürler.

  3. IzmirliKemal dedi ki:

    Soruma yanıt verebilecek Delphi diline hakim bir Allah’ımın kulu yokmu?

    • Murat ÖNER dedi ki:

      Merhaba,

      2013-2014 yıllarında Delphi ile kodlama yaptım fakat sonrasındaki yıllarda tamamen .Net, Javascript ağırlıklı kodlamalar yaptım o yüzden Delphi ortamım olmadığından ve bilgiler ilk günkü gibi taze olmadığından yardımcı olamıyorum.

    • halil karagöz dedi ki:

      kurulum esnasında bilgisayardan yada kullanıcıdan bilgisayar adını alamaz mısınız

      • Murat ÖNER dedi ki:

        Selam halil, Delphi ile geliştirme yapmayı yaklaşık 3 yıl önce bıraktım o yüzden Delphi geliştirme ortamım v.s. ve o günkü bilgim olmadığından destek olamıyorum kusura bakma.

  4. dsad dedi ki:

    source verebilseydin daha iyi olurdu aklımda başka şeyler vardı. en azından istediğim şeyleri create ile yapardım.ona buna visible yapıp şişirmezdim.

  5. dsad dedi ki:

    alabilirsin.Macten tut seri nolarına kadar alabilirsin.

  6. ahmet dedi ki:

    En basit açıklama bu sanırım internette çok teşekkürler

  7. Ali Faruk Kabak dedi ki:

    “Ancak bu yazılan programı installshild türü bir program ile setup.exe haline çevirip başka PC veya PC lere kurduğumuzda, veritabanı adı değişmeyecek, ancak PC adı muhakkak ki değişecek, bu sorunu nasıl aşacağız.”

    Exe’nizin bulunduğu klasöre bir tane “.ini” dosyası oluşturun. Bu dosyanın içine SQL INSTANCE NAME, DB Name, isterseniz LoginName ve LoginPasswordu yazın. MainForm’unuzun onCreate veya onShow eventında connection string oluşturup ADOConnection.String propertysine set edin.

    Not: ADOConnection nesnesinin Connected propertysi design modda False olsun!!!

    Örnek Kod;
    procedure TMainMethods.Baglan(ALoginName: string = ”; APass: string = ”);
    var
    AStr, AServer, ADB: string;
    AIniFile: TextFile;
    begin

    if FileExists(SM.FilesFolderPath + ‘config.ini’) then
    begin

    AssignFile(AIniFile, SM.FilesFolderPath + ‘config.ini’);
    Reset(AIniFile);
    Readln(AIniFile, AServer); // AServer değişkenine config.ini dosyasındaki brinci satırı set eder..
    Readln(AIniFile, ADB); // ADB değişkenine config.ini dosyasındaki iinci satırı set eder..

    if ALoginName = ” then
    ALoginName := ‘XXX’;

    if APass = ” then
    APass := ‘YYY’;

    SM.ADOConnAna.Connected := False;
    AStr := AStr + ‘Provider=SQLOLEDB.1;Password=’ + QuotedStr(APass) + ‘;’;
    AStr := AStr + ‘Persist Security Info=False;User ID=’ + QuotedStr(ALoginName) + ‘;’;
    AStr := AStr + ‘Initial Catalog=’ + ADB + ‘;’;
    AStr := AStr + ‘Data Source=’ + AServer +’;’;
    AStr := AStr + ‘Use Procedure for Prepare=1;Auto Translate=True;’;
    AStr := AStr + ‘Packet Size=4096;Use Encryption for Data=False;’;
    AStr := AStr + ‘Tag with column collation when possible=False’;
    SM.ADOConnAna.ConnectionString := AStr;
    SM.ADOConnAna.Connected := True;

    end;

    end;

    * “.ini” dosyasının içine isterseniz sadece PC Adı bilgisini yazabilirsiniz veya direk connection stringi de yazabilirsiniz. Nasıl arzu ederseniz.
    * Ben kendi setuplarımda bu ini dosyasını exe klasörüne setup esnasında dinamik bir şekilde oluşturuyorum, siz de bu gibi aksiyonlara girebilirsiniz.

Bir Cevap Yazın