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:
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]