proje ödevi: kendi excel versiyonumuzu oluşturmak..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

proje ödevi: kendi excel versiyonumuzu oluşturmak..

Mesaj gönderen raikkonen21 »

ödev buna yakın arkadaşlar.. microsoft excelden yardım almadan ona bağlantı yapmadan..5 10 işlemden oluşan bir ödev..
ben ilk önce her hangi iki hücre arasında 4 işlem yamayı yapacağım sonra da hücre adresleme..4 işlem ahkkında bir dökuman var ama kurcaladım anlayamadım..yardım edebilirmisiniz bana ?

kod..

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='1.Sayi';
StringGrid1.Cells[1,0]:='2.Sayi';
StringGrid1.Cells[2,0]:='Toplam';
StringGrid1.Cells[3,0]:='Fark';
StringGrid1.Cells[4,0]:='Çarpım';
StringGrid1.Cells[5,0]:='Bolum';
end;

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
var
sayi1,sayi2:integer;
sayi11,sayi22:real;
begin
sayi1:=StrToIntDef(StringGrid1.Cells[0,ARow],0);
sayi2:=StrToIntDef(StringGrid1.Cells[1 ,ARow],0);
sayi11:=StrToFloatDef(StringGrid1.Cells[0 ,ARow],0);
sayi22:=StrToFloatDef(StringGrid1.Cells[1 ,ARow],0);
StringGrid1.Cells[2,ARow]:=inttostr((sayi1) + (sayi2));
StringGrid1.Cells[3,ARow]:=inttostr((sayi1) - (sayi2));
StringGrid1.Cells[4,ARow]:=inttostr((sayi1) * (sayi2));
StringGrid1.Cells[5,ARow]:=FloatToStr((sayi11) / (sayi22));

end;

end.


bu kodu buldum arkadaşlar ama çalışmadı..
benim yapacağı aynı excelde oldugu gibi herhangi iki hucreye ornegin c1 e 5 a3 de 8 yazdık başka bır hucreye de c1+a3 dedik..o hucrenın ıcıne veya edite(bu farketmez benım için.) sonucu yazdırmam lasım.. kod uzun ise bir tanesini yazın gerisini ben getirmeye çalışayım yanı bır fıkrım yok arkadaslar yarrdım edın..

Hücre adresleme de de aynı sekılde ...Aklımdakı su ..ben bu hucrenın secme ozellıgını bılmıyorum... eger komutu ıle eger (bu hucre secılırse )kı ben komutu bılmıyorum ...labela hucrenın adresını yaz dıyecegım..benım aklıma gelen bu..daha kolay bır yontemı varsa benı uzun uznu yazmaktan kurtarmıs olursunuz..

Yardımlarınız ve emeğiniz için şimdiden teşekkürler Abiler...
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

bana yardım edin lütfen :(
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Bulduğunuz kodla uğraşmayın. Kendiniz yazmayı deneyin. Stringgrid'in özelliklerini kullanınç eğer bir hücrenin içeriği = ile başlıyorsa orada analiz işlemini başlatın. ilk başlarda parantez analizi yapmayın. dediğiniz gibi önce dört işlem üzerine yoğunlaşın. hücre içeriğini karakter karakter okuyun ve hangi hücreye referas ettiği bulun.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

baslangic yeri olarak acik kaynak kodlu bu tur uygulamalari inceleyebilirsin.


formula engine bunlardan birisi.
http://sourceforge.net/projects/formulaengine/
http://www.codeproject.com/vb/net/FormulaEngine.asp

delphi ile yazilmamis ama mantik kurma yonunden yardimci olabilir.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

teşekkur ederim bakacagım buraya..
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

hocam yapamadim yaa yardım edın

var
s1,sonuc:integer;
s2:integer;

begin
s1:=strtoint(form1.StringGrid1.Cells[1,1]);
s2:=strtoint(form1.StringGrid1.Cells[1,2]);
sonuc:=s1+s2;
edit1.Text:=inttostr(sonuc);

end;

burda amacım grıdın ıcıne yazdıgım herhangı ıkı sayıyı toplatmak
buttona bastıgım da edıte yazdırayım dedım ama hata mesajı verdı :(
burdan yola cıkmak ıstedım
bunun genısını dusunursek herhangı ıkı kutucuga yazdıgım sayıları topla buttonuna bastıgımda edıte sonucu yazdıracagım..yapamadım abıler yardım ya
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

hata mesajlarını da yazmalısın. ayrıca neden hata versinki. siz sayıları a1 ve b1 hücrelerine yazmış olamanız gerekir.
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

hocam yazdım hata veriyor..beceremedim..ama bu sefer dediğiniz giibi kendim yazdım.benim elimden gelen bu kadar..yardım edin bu comeze :)
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

Resim

boyle bir hata verdi abiler..ıkı sayıyı toplayıp edite yazdıracak..tabı ben baslangıc olarak bunu sectım
sonrasında hucrelerın adreslerını yazıp..uc edit kullanıp ikiisine mesela a1+b1 yazıp butona bastıgımda 3. edıte sonucu yazmasını ısteyecegım...zamanım az oldugu ıcın adreslemeyı de sormak ıstıyorum
orda nasıl yapacagız...
mesela ıf X hucresını secerse then
yaz x hucresını labela;
ama bunu nasıl yapacagımı bılmıyorum abiler
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

bak AktiveX tabında TF1book clasını süsleyip verebilirsin ama bunu illa stringgridde yapacam dersen alt yapısını iii hazırlaman lazım çünkü formül işini grid col ve row satırı sayısında bir matrixde saklaman ve ilk okutacağın kısmı dinamik matrix dizi de okuman lazım griddede görülen kısımda hesaplamayı hücredeki edit modunda ise matrix dizide bulunan forul varsa formulu yoksa editte bulunan gerçek diziyi getirmen lazım.


Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

hocam teşekkur ederim fakat f1book ilk başta yaptım verdimm..zaten onu koysam 4 işlem baştan bitiyor.geriye adresleme kalıyor..f1 book u kabul etmedi hocamız..sizin dediğiniz matrix olayını pek anlamadım ama anladıgım kadarı ıle hucre ıcı toplama da yapılabılecek..ben o kadarını yapamam şu usttekı basıttı benım ıcın olsaydı ugrasır tum hucrelerın ısmını yazardım gerıye 4 ıslem kalıyordu.
yani stringgrid benim istediğim birsey değil yapmak zorunda oldugum bırsey hocam. :?
Kullanıcı avatarı
dynamo
Üye
Mesajlar: 96
Kayıt: 21 Haz 2005 02:05
Konum: istanbul

Mesaj gönderen dynamo »

stringridte[x,y]------------>x:satır , y:sütun demektir.

Kod: Tümünü seç

s2:=strtoint(form1.StringGrid1.Cells[2,1]);
bu şekilde yaparsan çalışır.
Kullanıcı avatarı
dynamo
Üye
Mesajlar: 96
Kayıt: 21 Haz 2005 02:05
Konum: istanbul

Mesaj gönderen dynamo »

stringgridi baştan sona tarayıp dolu olan hücrelerdeki sayısal değerleri toplayıp Edit1' e atalım:

Kod: Tümünü seç

procedure TForm1.FormShow(Sender: TObject);
begin
   stringgrid1.Cells[1,0]:='A';
   stringgrid1.Cells[2,0]:='B';
   stringgrid1.Cells[3,0]:='C';
   stringgrid1.Cells[4,0]:='D';

   stringgrid1.Cells[0,1]:='1';
   stringgrid1.Cells[0,2]:='2';
   stringgrid1.Cells[0,3]:='3';
   stringgrid1.Cells[0,4]:='4';
end;

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
   i,j:integer;
   toplam:integer;
begin
   toplam:=0;
   for i:=1 to stringgrid1.RowCount-1 do begin
      for j:=1 to stringgrid1.ColCount-1 do begin
         if stringgrid1.Cells[i,j]<>'' then begin
            toplam:=toplam+strtoint(stringgrid1.Cells[i,j]);
         end;
      end;
   end;
   Edit1.Text:=inttostr(toplam);
end;


Stringgridin ilk satırını başlık için kullandığından i:=1 den başlıyor. aynı şekilde ilk sütununu sıra için kullndığından j:=1'den başlıyor.

umarım işini görür.
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

hocam su an okuldayım evde bakacagım bu yazdıklarınıza..cok tesekkur ederım yardımlarınız ıcın...

alttakı yazdıgınız karsılastırma kodunu pek anlamadım evde bakacagm..
Kullanıcı avatarı
raikkonen21
Üye
Mesajlar: 49
Kayıt: 02 Nis 2007 10:02
Konum: Konya

Mesaj gönderen raikkonen21 »

hım sımdı bıraz bırseyler anladım galıba...ıstedıgımız satıra ıstedıgımız rakamı yazıyoruz toplattırıyoruz galıba..bu olayda satır sayısı onemlı degıl galıba ..
Cevapla