Forum: Diğer Konular RSS
GtkD Modül özellikleri
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
erdem (Moderatör) #76
Üye Tem 2009 tarihinden beri · 1049 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 13190
O şekilde de olur. Ben olsam ilkönce basılan tuşun sayı mı işleç mi olduğunu tespit etmeye çalışırdım.

Ama sanırım bir şekilde bu kontrolü yapman gerekebilir. Çünkü gösterdiğin örnekte ilk olarak bir işlece basılırsa hata veriyor.
cos00kun #77
Üye Kas 2014 tarihinden beri · 217 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
erdem:
O şekilde de olur. Ben olsam ilkönce basılan tuşun sayı mı işleç mi olduğunu tespit etmeye çalışırdım.
doğru söylüyorsunuz hele bir deneyeyim bir yerlerde tıkanmazsam benimkiyle giderim baktım tıkanmaya başladı o zaman hemen dediğinize dönerim.

erdem:
Ama sanırım bir şekilde bu kontrolü yapman gerekebilir. Çünkü gösterdiğin örnekte ilk olarak bir işlece basılırsa hata veriyor.
evet onun farkındayım bilmiyorum forum kirliliğimi yapıyorum adım adım çözdükçe kodu paylaşarak ama program tam bitmediğinden her ne kadar bende bunların farkında olsamda bu hatalar gözükmüş oluyor  :-)

Bu arada bu şekilde forumda yarım-pelek programları paylaşıp şimdilik 6 sayfayı işgal etmem normal değilse lütfen hemen uyarın ben kendimi kaptırdım gidiyorum çünkü  :-D
E=mc^2
erdem (Moderatör) #78
Üye Tem 2009 tarihinden beri · 1049 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Estağfurullah.

Aynı programı şurada diğer arkadaşlar yazmış olsa farklı çözümler gelebilir.

Ben daha çalışıp çalışmadığını bile bilmiyorum ama o an için aklıma gelen çözüm yoluna göre söyledim.
erdem (Moderatör) #79
Üye Tem 2009 tarihinden beri · 1049 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bende buradaki örneği kullanarak ve tablo yerine kalbur kullanarak bir yerleşim yaptım.

Şuna benzedi :

[Resim: http://www.programlama.tk/resim/resim/hesapmakinesi.png]

Programın kaynak kodu da bu şekilde :
import gtk.Main;
import gtk.MainWindow;
import gtk.VBox;
import gtk.Kalbur;
import gtk.Button;
import gtk.Label;
import gtk.Entry;
 
 
class Pencere: MainWindow
{
    VBox kutu;
    Kalbur kalbur;
 
    this()
    {
        super("Hesap Makinesi");
        setSizeRequest(250, 230);
        setPosition(WindowPosition.CENTER);
        kutu = new VBox(false, 2);
 
        kalbur = new Kalbur();
        kalbur.setRowHomogeneous(true);
        kalbur.setColumnHomogeneous(true);
 
        kalbur.iliştir(new Button("Sil")0, 0, 1, 1);
        kalbur.iliştir(new Button("Geri"), 1, 0, 1, 1);
        kalbur.iliştir(new Label(""),      2, 0, 1, 1);
        kalbur.iliştir(new Button("Kapat"),3, 0, 1, 1);
 
        kalbur.iliştir(new Button("7"), 0, 1, 1, 1);
        kalbur.iliştir(new Button("8"), 1, 1, 1, 1);
        kalbur.iliştir(new Button("9"), 2, 1, 1, 1);
        kalbur.iliştir(new Button("/"), 3, 1, 1, 1);
 
        kalbur.iliştir(new Button("4"), 0, 2, 1, 1);
        kalbur.iliştir(new Button("5"), 1, 2, 1, 1);
        kalbur.iliştir(new Button("6"), 2, 2, 1, 1);
        kalbur.iliştir(new Button("*"), 3, 2, 1, 1);
 
        kalbur.iliştir(new Button("1"), 0, 3, 1, 1);
        kalbur.iliştir(new Button("2"), 1, 3, 1, 1);
        kalbur.iliştir(new Button("3"), 2, 3, 1, 1);
        kalbur.iliştir(new Button("-"), 3, 3, 1, 1);
 
        kalbur.iliştir(new Button("0"), 0, 4, 1, 1);
        kalbur.iliştir(new Button(","), 1, 4, 1, 1);
        kalbur.iliştir(new Button("="), 2, 4, 1, 1);
        kalbur.iliştir(new Button("+"), 3, 4, 1, 1);
 
        kutu.packStart(new Entry(), false, false, 0);
        kutu.packEnd(kalbur, true, true, 0);
 
        add(kutu);
        showAll();
    }
}
 
void main(string[] args)
{
    Main.init(args);
    auto pencere = new Pencere();
    Main.run();
}
cos00kun #80
Üye Kas 2014 tarihinden beri · 217 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
benimkinden daha güzel görünüyor  ;-)
peki burada Butonların nesnelerini oluştururken bu butonlara isim vermediğimiz için programın ilerleyen bölümlerinde yapacağımız işlemler için bize sorun çıkarmazmı ? hepsi new ile oluşturulmuş hafızada yer açılmış sadece ? .. Gerçi yukarıdaki mesajlarda yazdığınız gibi hangi tuşa basıldığını artık anlayabilecek bilgiyi almıştım ama ilk bakışta isimsiz hafızada yer açmalar ilerde sanki bana sorun çıkartır gibi geldi bi an ..  Yine de böyle bir kullanım tarzı daha sade duruyor bunu itiraf edebilirim  :-)
E=mc^2
erdem (Moderatör) #81
Üye Tem 2009 tarihinden beri · 1049 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Tabi burada da Ali hocanın gösterdiği yöntemi kullanabiliriz.
struct DüğmeBilgisi
{
    string isim;
    uint sıra;
    uint üstboşluk;
    uint genişlik;
    uint yükseklik;
}
 
DüğmeBilgisi[] düğmeBilgileri =
[
    { "Sil"  , 0, 0, 1, 1 },
    { "Geri" , 1, 0, 1, 1 },
    { "Kapat", 3, 0, 1, 1 },
    { "7"    , 0, 1, 1, 1 },
    { "8"    , 1, 1, 1, 1 },
    { "9"    , 2, 1, 1, 1 },
    { "/"    , 3, 1, 1, 1 },
    { "4"    , 0, 2, 1, 1 },
    { "5"    , 1, 2, 1, 1 }
 
];
İstersen bu yerleşimi programında kullanabilirsin  :-)
cos00kun #82
Üye Kas 2014 tarihinden beri · 217 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Nerde kalmıştık..
şimdi Erdem hocam hem bana antreman olsun hemde daha düzgün durduğu için programın görsel halini biraz değiştirip senin verdiğin örneğe benzettim.. Artık son konrolleri yapıp verdiğiniz bilgiler doğrultusunda akış diyagramı yardımıyla bir planlama yapacağım(Aslında yaptım sadece koda dökeceğim).. Buna göre programın son haline yavaş yavaş getiriyorum.. Bu işi bitirip D diline dönmek ve biraz daha ilerlemek istiyorum tabiki D diliyle beraber daha önceden bahsettiğim görsel arayüz ile beraber dosyadan bilgi alma verme vesaire mevzusunuda birlikte götüreceğim kısmetse  :blush:
şimdi kod şu halde eh işte işlem yapıyor artık..

// Bu bir hesap makinası çalışmasıdır.. Henüz program çalışma aşamasındadır.
//
// Şu andaki hataları.
// --------------------
// 4 işlem şu an için eh işte çalışmaktadır. ancak henüz son aşamaya gelmemiştir
// Hesap makinası bu haliye sadece tamsayılarda işlem yapmaktadır.
// Hata kontrol mekanizmalarının bazıları programda varmış gibi gözüksede henüz çalışmamaktadır
// Sil, Geri, Kapat ve "," düğmeleri henüz çalışmamaktadır.
 
import gtk.Main;
import gtk.MainWindow;
import gtk.VBox;
import gtk.Grid;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio : writeln;
import std.string : format;
import std.conv;
 
class Pencere : MainWindow {
    int rakam1,rakam2,işlem;
    string hafıza1,hafıza2;
    VBox kutu;
    Entry giriş1;
    Grid kalbur;
    Label etiket1;
    Button[] düğmeler;
 
    this() {
        super("İlkel Hesap Makinası..");
 
        // düğmelerin isim ve konumlalarını tutan DüğmeBilgisi adında bir yapı tasarlanıyor..
        struct DüğmeBilgisi {
            string isim;
            uint sıra;
            uint üstboşluk;
            uint genişlik;
            uint yükseklik;
        }
 
        // bu yapıdan düğmeBilgileri adında nesnemizi oluşturuyoruz.
        DüğmeBilgisi[] düğmeBilgileri = [
            { "Sil"  , 0, 0, 1, 1 },
            { "Geri" , 1, 0, 1, 1 },
            { ""     , 1, 0, 1, 1 },
            { "Kapat", 3, 0, 1, 1 },
            { "7"    , 0, 1, 1, 1 },
            { "8"    , 1, 1, 1, 1 },
            { "9"    , 2, 1, 1, 1 },
            { "/"    , 3, 1, 1, 1 },
            { "4"    , 0, 2, 1, 1 },
            { "5"    , 1, 2, 1, 1 },
            { "6"     , 2, 2, 1, 1 },
            { "*"     , 3, 2, 1, 1 },
            { "1"     , 0, 3, 1, 1 },
            { "2"     , 1, 3, 1, 1 },
            { "3"     , 2, 3, 1, 1 },
            { "-"     , 3, 3, 1, 1 },
            { "0"     , 0, 4, 1, 1 },
            { ","     , 1, 4, 1, 1 },
            { "="     , 2, 4, 1, 1 },
            { "+"     , 3, 4, 1, 1 },
        ];
        
        // Görsel bileşenlerin nesnelerini oluşturuyoruz
        kutu = new VBox(false, 2);
        kalbur = new Grid();
        giriş1 = new Entry();
 
        // düğmeler nesnelerimizi oluşturup düğme isimlerini bunlara atıyoruz Ayrıca düğmeleri ekrana, daha önceden
        // tanımladığımız düğmeBilgileri yapısına göre yerleştiriyoruz..
        foreach (d; düğmeBilgileri) {
            düğmeler ~= new Button(d.isim);
            kalbur.attach(düğmeler[$-1], d.sıra, d.üstboşluk,d.genişlik,d.yükseklik);
            düğmeler[$-1].addOnClicked(&işle);
        }
 
        // Bileşen Ayarları..
        setSizeRequest(250, 230);
        move(200, 120);
        giriş1.setAlignment(1);
        kalbur.setRowHomogeneous(true);
        kalbur.setColumnHomogeneous(true);
        kutu.packStart(giriş1, false, false, 0);
        kutu.packEnd(kalbur, true, true, 0);
 
        // görsel bileşenleripenceremize ekleyip tümünün ekranda görünmesini sağlıyoruz
        add(kutu);  
        showAll();
 
        // Herhangi bir tıklama olduğunda &işle işlevine yönlendirme yapılıyor..
        düğmeler[1].addOnClicked(&işle);
    }
 
 
    // Bu işle işlevinde tıklanan düğme sayımı değilmi işlemleri yapılır ve giriş kutusuna gelen değerler yan yana eklenerek yazılır..
    void işle(Button düğme) {   
        if(düğme.getLabel()=="+"
           ||düğme.getLabel()=="-"
           ||düğme.getLabel()=="*"
           ||düğme.getLabel()=="/"
           ||düğme.getLabel()=="="
           ||düğme.getLabel()=="Sil"
           ||düğme.getLabel()=="Geri"
           ||düğme.getLabel()=="Kapat"
           ||düğme.getLabel()==""
             ||düğme.getLabel()==",")
        {
            işlemYap(düğme); // tıklanan düğme bir sayıyı temsil etmiyor ise(+ - * / gibi) işlemYap() işlevini çalıştır...
        } 
 
        // tıklanan düğme sayı ise bir önceki sayıya eklenerek yola devam edilir..
        else {
            writeln("Tıklama oldu",düğme.getLabel())// Kontrol...
            auto ekran = giriş1.getText();
            giriş1.setText(ekran ~ düğme.getLabel());
            try {
                int ilk = to!int(giriş1.getText());
                giriş1.setText(to!string(ilk));
            } catch (ConvException hata) {
                // Hatayı bildiriyoruz 
                etiket1.setLabel("HATA: tamsayı girmelisiniz");
                writeln("Uyarı!! Hata fırlatıldı!!");
 
            } catch (Exception hata) {
                // Başka çeşit bir hata oluştu
                etiket1.setText(format("HATA: %s", hata.msg));
            }
        }
    }
 
      // Bu işlevde  4 işlem ve "=" işlemleri komtrol edilecek böylece 4 işlem yapılabilecek
    void işlemYap(Button düğme) {
        if (rakam1==0) {    // ilk sayımı girildinin kontrolü eğer rakam1=0 ise henüz ilk sayıyı girdik ve ona göre işlem yapıyoruz
            hafıza1=düğme.getLabel();
            writeln("hafıza1",hafıza1);   // Kontrol...
            rakam1=to!int(giriş1.getText()); 
            giriş1.setText("");
        }
 
        else  {  // ilk sayı 0 olmadığı için 2.yada daha çok bir sayı girdiğinde burda
            hafıza2=düğme.getLabel();
            writeln("hafıza2",hafıza2)// Kontrol...
            rakam2=to!int(giriş1.getText());
 
            switch (hafıza1) {
                case "+":
                    writeln("+ Tıklandı")// Kontrol...
                    rakam1+=rakam2;
                break;
                case "-":
                    writeln("- Tıklandı")// Kontrol...
                    rakam1-=rakam2;
                    break;
                case "*":
                    writeln("* Tıklandı")// Kontrol...
                    rakam1*=rakam2;
                    break;
                case "/":
                    writeln("/ Tıklandı")// Kontrol...
                    rakam1/=rakam2;
                    break;
                default:
                    break;
            }
            
            rakam2=0;
            hafıza1=hafıza2;
            giriş1.setText("");
 
            if (hafıza2=="=") {
                giriş1.setText(to!string(rakam1));
                rakam1,rakam2=0;
                hafıza1,hafıza2="";
            }
        }
 
        writeln("işlemYap Tıklandı işlem yapıyorum... ilk rakam=",rakam1); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır. Program bitimikaldırılacak!
    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}
E=mc^2
acehreli (Moderatör) #83
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4589 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
işle() işlevinin başındaki uzun if ifadesi yerine şu yöntemi kullanabilirsin:
    const işlemDüğmeleri = [ "+", "-", "*", "/", "=", "Sil", "Geri", "Kapat", "", "," ];
    // ...
    import std.algorithm : canFind;
    if(işlemDüğmeleri.canFind(düğme.getLabel())) {
        // ...
    }
Çok daha kısa. ;) (Kapat'tan sonraki boş dizgi doğru mu?)

Ama ondan daha iyisi, düğmelerin tıklandıklarında hangi işlevin işletileceğini de DüğmeBilgisi yapısına eklemek olabilir. Kodda switch gibi deyimler belirdiğinde çoğunlukla bunun gibi yöntemler kullanılabilir.

Öncelikle, Gtkd tarafından herhalde zaten tanımlanmış olan işlev göstergesini bir kere de biz tanımlayalım:
alias Tıklamaİşlevi = void function(Button);
// Anlamı: Parametre olarak Button alan ve hiçbir şey döndürmeyen işlev türüne
//         okunaklı olsun diye Tıklamaİşlevi diyelim... 
Artık her düğmenin işlevini düğmeleri tanımlarken belirtebiliriz:
        struct DüğmeBilgisi {
            string isim;
            uint sıra;
            uint üstboşluk;
            uint genişlik;
            uint yükseklik;
            Tıklamaİşlevi işlev;    // <-- EKLEDİM
        }
 
        DüğmeBilgisi[] düğmeBilgileri = [
            { "Sil"  , 0, 0, 1, 1, &sil },    // <-- İŞLEVLERİ DE BELİRTİYORUZ
            { "Geri" , 1, 0, 1, 1, &geri },
            { ""     , 1, 0, 1, 1, &buNedir }, // :)
            { "Kapat", 3, 0, 1, 1, &kapat },
            { "7"    , 0, 1, 1, 1, &rakam },
            { "8"    , 1, 1, 1, 1, &rakam },
            { "9"    , 2, 1, 1, 1, &rakam },
            // vs.
        ];
Artık addOnClicked için hep işle'yi değil, her düğmenin kendi işlevini vereceğim:
        foreach (d; düğmeBilgileri) {
            düğmeler ~= new Button(d.isim);
            kalbur.attach(düğmeler[$-1], d.sıra, d.üstboşluk,d.genişlik,d.yükseklik);
            düğmeler[$-1].addOnClicked(d.işlev);        // <-- d.işlev OLARAK DEĞİŞTİRDİM
        }
Tabii bütün o işlevleri tanımlamak gerek:
void sil(Button düğme) {
    // Buraya geldiysek "Sil"e basılmış demektir
    // ...
}
void geri(Button düğme) {
    // Buraya geldiysek "Geri"ye basılmış demektir
    // ...
}
 
// vs. 
Kodu hemen böyle değiştirmene gerek yok ama aklında bulunsun...

Ek olarak, Düğme kurucusunun sonundaki düğmeler[1].addOnClicked(&işle) ifadesi gereksiz, değil mi? Çünkü aynı ifade az yukarıdaki foreach döngüsünde 1 için zaten işletiliyor.

Ali
cos00kun #84
Üye Kas 2014 tarihinden beri · 217 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Oh be çözümlere bak :-) süper bu bilgiler..

acehreli:
işle() işlevinin başındaki uzun if ifadesi yerine şu yöntemi kullanabilirsin:
    const işlemDüğmeleri = [ "+", "-", "*", "/", "=", "Sil", "Geri", "Kapat", "", "," ];
    // ...
    import std.algorithm : canFind;
    if(işlemDüğmeleri.canFind(düğme.getLabel())) {
        // ...
    }
Ali
Bunu Erdem hocamda dediydi zaten kullanacaktım ama siz hazır lokmayı verdiniz bana  :-p ama çok faydası oldu artık tam olarak anlamış oldum çok güzel bir olanakmış canFind() işlevi..

acehreli:
...........
Kodu hemen böyle değiştirmene gerek yok ama aklında bulunsun...
Ali
Ali hocam sonuçta değiştirdikçe gelişimim artıyor hem Erdem Hem de sizin ve söylediğiniz şeyleri uygulayınca aslında bi tık daha ileri gittiğimi hissediyorum.. Gerçi şu an bu kadar karışık ( Elbette size göre değil ama bana göre) bir program olacağını ve bunu başarabileceğimi pek sanmıyordum ama her ikinizin sayesinde çok şeyler öğrendim Allah razı olsun ikinizdende aslında takip eden birileri varsa onlar da buna dahil sonuçta herkesin işi var gücü var katılmamaları ilgilenmedikleri anlamına gelmiyor elbette  :-)

acehreli:
Ek olarak, Düğme kurucusunun sonundaki düğmeler[1].addOnClicked(&işle) ifadesi gereksiz, değil mi? Çünkü aynı ifade az yukarıdaki foreach döngüsünde 1 için zaten işletiliyor.
Ali
Ah evet orda sırıtıp duruyordu farkındaydım ama daha öncede dediğim gibi henüz programın ana hatlarıyla uğraştığımdan şimdilik dokunmamıştım.. şimdi bir el atma vakti geldi sanırım.

Bu arada kafam çok karışıyor herşey iç içe geçmeye başlıyor bu normalmidir bilmiyorum ama mesela son kodları yazarken artık kendimce yaptığım şekilli akış diyagramı planladım yoksa altından kalkamıyorum artık (diktörtgen, dörtgen vesaire şekilli bildiğiniz eski usül akış diyagramı işte)
sevgi ve saygılarımla..
E=mc^2
erdem (Moderatör) #85
Üye Tem 2009 tarihinden beri · 1049 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Gerçekten Ali hoca hoş çözümler göstermiş :)
cos00kun #86
Üye Kas 2014 tarihinden beri · 217 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
erdem:
Gerçekten Ali hoca hoş çözümler göstermiş :)
Evet ama dediğim gibi sizin kadar uzman olmadığımdan kafam allak bullak oluyor ancak 1 yada 2 günde hazmedebiliyorum  :blush:

Bu arada Erdem hocam Benim gelişimimdeki en büyük emekte sizindir lütfen hakkınızı yemeyelim  :-)
E=mc^2
cos00kun #87
Üye Kas 2014 tarihinden beri · 217 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali Hocam verdiğiniz bilgiler doğrultusunda kodda denemeler yapmaya başladım.. şu kodda;
import gtk.Main;
import gtk.MainWindow;
import gtk.VBox;
import gtk.Grid;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio : writeln;
import std.string : format;
import std.conv;
 
class Pencere : MainWindow {
    int rakam1,rakam2,işlem;
    string hafıza1,hafıza2;
    VBox kutu;
    Entry giriş1;
    Grid kalbur;
    Label etiket1;
    Button[] düğmeler;
    alias Tıklamaİşlevi = void function(Button);
 
    this() {
        super("İlkel Hesap Makinası..");
        struct DüğmeBilgisi {
            string isim;
            uint sıra;
            uint üstboşluk;
            uint genişlik;
            uint yükseklik;
            Tıklamaİşlevi işlev;
        }
 
            DüğmeBilgisi[] düğmeBilgileri = [
                { "Sil"  , 0, 0, 1, 1,&Sil},
                { "Geri" , 1, 0, 1, 1,&Geri},
                { ""     , 1, 0, 1, 1,&Boş },
                { "Kapat", 3, 0, 1, 1,&Kapat },
                { "7"    , 0, 1, 1, 1,&Rakam },
                { "8"    , 1, 1, 1, 1,&Rakam },
                { "9"    , 2, 1, 1, 1,&Rakam },
                { "/"    , 3, 1, 1, 1,&Bölme },
                { "4"    , 0, 2, 1, 1,&Rakam },
                { "5"    , 1, 2, 1, 1,&Rakam },
                { "6"     , 2, 2, 1, 1,&Rakam },
                { "*"     , 3, 2, 1, 1,&Çarpma },
                { "1"     , 0, 3, 1, 1,&Rakam },
                { "2"     , 1, 3, 1, 1,&Rakam },
                { "3"     , 2, 3, 1, 1,&Rakam },
                { "-"     , 3, 3, 1, 1,&Çıkarma },
                { "0"     , 0, 4, 1, 1,&Rakam },
                { ","     , 1, 4, 1, 1,&Virgül },
                { "="     , 2, 4, 1, 1,&Eşittir },
                { "+"     , 3, 4, 1, 1,&Toplama },
            ];
 
        kutu = new VBox(false, 2);
        kalbur = new Grid();
        giriş1 = new Entry();
        setSizeRequest(250, 230);
        move(200, 120);
        giriş1.setAlignment(1);
        kalbur.setRowHomogeneous(true);
        kalbur.setColumnHomogeneous(true);
        kutu.packStart(giriş1, false, false, 0);
        kutu.packEnd(kalbur, true, true, 0);
 
        add(kutu);  
        showAll();
 
        foreach (d; düğmeBilgileri) {
            düğmeler ~= new Button(d.isim);
            kalbur.attach(düğmeler[$-1], d.sıra, d.üstboşluk,d.genişlik,d.yükseklik);
            düğmeler[$-1].addOnClicked(d.işlev); 
        }
    }
    void Rakam(Button düğme)  {    }
    void Çıkarma(Button düğme)  {    }
    void Toplama(Button düğme)  {    }
    void Çarpma(Button düğme)  {    }
    void Bölme(Button düğme)  {    }
    void Eşittir(Button düğme)  {    }
    void Sil(Button düğme)  {    }
    void Geri(Button düğme)  {    }
    void Boş(Button düğme)  {    }
    void Virgül(Button düğme)  {    }
    void Kapat(Button düğme)  {    }
}
 
void main(string[] args)
{
    Main.init(args);
    Pencere pencere= new Pencere();
    Main.run();
}

çalıştığında
main.d(48): Error: cannot implicitly convert expression `&this.Sil` of type `void delegate(Button düğme)` to `void function(Button)`
main.d(49): Error: cannot implicitly convert expression `&this.Geri` of type `void delegate(Button düğme)` to `void function(Button)`
main.d(50): Error: cannot implicitly convert expression `&this.Boş` of type `void delegate(Button düğme)` to `void function(Button)`
...........
..........

türü hatalar alıyorum.. Sizide fazla yük olmama adına sadece buradaki hata bendenmi kaynaklı yoksa "alias Tıklamaİşlevi = void function(Button);" ile "void Sil(Button düğme)" arasında bir sorunmu var ? bunu söylemeniz yeterli eğer hata bende ise büyük ihtimal parametre hatası yapıyorumdur onu mutlaka kendim çözerim..

Birde hocam ısrarla ;
{ ""     , 1, 0, 1, 1, &buNedir }, // :) 
diye sormuşsunuz ancak görebildim.. Bu aslında hiçbirşey değil sadece hesap makinasında Grid modülünde boşluk gösteremediğimiz için o bölgeyi boş bir Label olarak tanıttık.. Onu sileceğim sadece şekil olarak kalacak  :blush:
E=mc^2
erdem (Moderatör) #88
Üye Tem 2009 tarihinden beri · 1049 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Estağfurullah.

Benim için de programcılık öğrenirken sanırım 2000'li yılların başından beri C Dili Grubundan ddili.org'a gelene kadar Ali hocanın çok yardımı olmuştur.

Allah razı olsun.

Hatta zamanında C++ konusunda yaptığımız hararetli tartışmaların fazlamesai gibi başka sitelere taştığını hatırlıyorum.  ;-)
erdem (Moderatör) #89
Üye Tem 2009 tarihinden beri · 1049 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
    alias Tıklamaİşlevi = void delegate(Button);

olarak değiştirip showAll() işlevini en sona aldığında sanırım çalışıyor.  Örneğin sil işlevine ekrana bir şeyler yazdırarak deneyebilirsin.
cos00kun #90
Üye Kas 2014 tarihinden beri · 217 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
tamamdır çalıştı  ;-)
E=mc^2
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2  3  4  5  6  7  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-01-19, 21:18:57 (UTC -08:00)