Erdem hocam cevap güzel ama henüz yazdıklarınızı anlayabilecek düzeyde değilim.. Yavaş yavaş bakıyorum dediğiniz konulara.. Bu arada kodda biraz karalama birşeyler yaptım ancak aşağıda belirttiğim yerde bi ufak tıkanıklık yaşadım;
import gtk.Main;
import gtk.MainWindow;
import gtk.Layout;
import gtk.Label;
import gtk.Entry;
import gtk.Button;
import std.stdio : writeln;
import std.string : format;
import std.conv;
class Pencere : MainWindow {
Layout düzen;
Entry giriş1,giriş2,giriş3;
Label etiket1;
Button[] düğmeler;
this() {
super("İlkel Hesap Makinası..");
struct DüğmeBilgisi {
string isim;
int x;
int y;
}
DüğmeBilgisi[] düğmeBilgileri = [
{ "0", 10, 210 },
{ "1", 10, 165 },
{ "2", 70, 165 },
{ "3", 130, 165 },
{ "4", 10, 120 },
{ "5", 70, 120 },
{ "6", 130, 120 },
{ "7", 10, 75 },
{ "8", 70, 75 },
{ "9", 130, 75 },
{ "+", 190, 75 },
{ "-", 190, 120 },
{ "*", 190, 165 },
{ "/", 190, 210 },
{ ".", 70, 210 },
{ "=", 130, 210 },
];
düzen = new Layout(null, null);
etiket1 = new Label("İLKEL HESAPLAMA YAPIYORUZ..");
giriş1 = new Entry();
foreach (d; düğmeBilgileri) {
düğmeler ~= new Button(d.isim);
düzen.put(düğmeler[$-1], d.x, d.y);
düğmeler[$-1].addOnClicked(&işle);
}
// Bileşen Ayarları..
setSizeRequest(250, 275);
move(100, 100);
giriş1.setAlignment(1);
düzen.setSizeRequest(50, 50);
düzen.put(etiket1, 5, 5);
düzen.put(giriş1, 10, 25);
add(düzen);
showAll();
düğmeler[1].addOnClicked(&işle);
}
void işle(Button düğme) { // Bu işlevde girilen değerler sayımı değilmi ve giriş kutusuna gelen değerler yan yana eklenerek yazılıyor..
if(düğme.getLabel()=="+"||düğme.getLabel()=="-"||düğme.getLabel()=="*"||düğme.getLabel()=="/"||düğme.getLabel()=="=") {
işlemYap();
}
else {
writeln("Tıklama oldu",düğme.getLabel()); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır. Program bitimikaldırılacak!
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: İki 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));
}
}
}
void işlemYap() { // Bu işlevde 4 işlem ve "=" işlemleri komtrol edilecek böylece 4 işlem yapılabilecek
writeln("işlemYap Tıklandı işlem yapıyorum..."); // fonksiyonun çalışıp çalışmadığının konrolünü sağlamak için vardır. Program bitimikaldırılacak!
switch (düğme.getLabel()) {
case "+":
writeln("+ Tıklandı");
break;
case "-":
writeln("- Tıklandı");
break;
case "*":
writeln("* Tıklandı");
break;
case "/":
writeln("/ Tıklandı");
break;
case "=":
writeln("= Tıklandı");
break;
default:
break;
}
}
}
void main(string[] args)
{
Main.init(args);
Pencere pencere= new Pencere();
Main.run();
}
Bu kod da 'switch (düğme.getLabel()) {' ifadesinde hata alıyorum.. Sanırım bir işlevden diğer işleve giderken bir parametre hatası yapıyorum..
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]