Bu Koda Bir Bakabilir Misiniz?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Bu Koda Bir Bakabilir Misiniz?

Mesaj gönderen canset »

Kod: Tümünü seç

procedure TForm3.FormCreate(Sender: TObject);
var
i:Integer;
k:integer;

begin

for k:= 1 to table1.RecordCount do
    begin
        for i:= 0 to pred (componentcount) do
        if (components[i] is TButton) then
            if TButton(Components[i]).Enabled=false then
            begin

            TButton(Components[i]).Enabled:= true;
            TButton(Components[i]).Caption:= Table1YEMEKADI.Text;
            table1.Next;

             end;

    end;

end;
*********

Yapmaya çalıştığım; table1'deki YEMEKAD'larının form açıldığında BUTON'ların üzerinde teker teker yerini alması...Acaba mantıksal bir hata mı yapıyorum?...
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kod: Tümünü seç

for k:= 1 to table1.RecordCount do
döngüsü yerine

Kod: Tümünü seç

table1.first;
while not(table1.eof) do
döngüsü kullanmalısın.


Bir de yazdığın kodları [ code] [ /code] tagları içine alırsan daha okunaklı olur :)
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

Kod: Tümünü seç

for k:= 1 to table1.RecordCount do
    begin
        for i:= 0 to pred (componentcount) do
        if (components[i] is TButton) then
            if TButton(Components[i]).Enabled=false then
            begin

            TButton(Components[i]).Enabled:= true;
            TButton(Components[i]).Caption:= Table1YEMEKADI.Text;
            table1.Next;

             end;

    end; 

arkadaslar buradaki pred ne işe yarıyor...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

tuanna yazdı:

Kod: Tümünü seç

for k:= 1 to table1.RecordCount do
    begin
        for i:= 0 to pred (componentcount) do
        if (components[i] is TButton) then
            if TButton(Components[i]).Enabled=false then
            begin

            TButton(Components[i]).Enabled:= true;
            TButton(Components[i]).Caption:= Table1YEMEKADI.Text;
            table1.Next;

             end;

    end; 

arkadaslar buradaki pred ne işe yarıyor...
pred hatırladığım kadarıyla -1 le aynı anlam ifade ediyor. -1 in fonksiyonu :wink:

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ı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

sag ol
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Re: Bu Koda Bir Bakabilir Misiniz?

Mesaj gönderen husonet »

canset yazdı:

Kod: Tümünü seç

procedure TForm3.FormCreate(Sender: TObject);
var
i:Integer;
k:integer;

begin

for k:= 1 to table1.RecordCount do
    begin
        for i:= 0 to pred (componentcount) do
        if (components[i] is TButton) then
            if TButton(Components[i]).Enabled=false then
            begin

            TButton(Components[i]).Enabled:= true;
            TButton(Components[i]).Caption:= Table1YEMEKADI.Text;
            table1.Next;

             end;

    end;

end;
*********

Yapmaya çalıştığım; table1'deki YEMEKAD'larının form açıldığında BUTON'ların üzerinde teker teker yerini alması...Acaba mantıksal bir hata mı yapıyorum?...
Table var olan kayıt kadar button create etmelisin :!:

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ı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Re: Bu Koda Bir Bakabilir Misiniz?

Mesaj gönderen canset »

husonet yazdı: Table var olan kayıt kadar button create etmelisin :!:
Form üzerine 50 adet buton yerleştireceğim, dolayısı iletable'da 50 ürün ile sınırlı olacak...Ama kullanıcı illa ki 50 butonun hepsini kullanacak diye bir kural olmayacak, belki 30-35 buton ile işini halledebilecek, bu yüzden kullanmadığı butonlar pasif olarak form üzerinde yer alacak, butonların enabled özelliklerini o yüzden tarattırma ihtiyacı hissettim...

Kod: Tümünü seç


procedure TForm3.FormCreate(Sender: TObject);
var
i:Integer;

begin

table1.First;
while not (table1.Eof) do
    begin
        for i:= 0 to pred (componentcount) do
        if (components[i] is TButton) then
            if TButton(Components[i]).Enabled=false then
            begin

            TButton(Components[i]).Enabled:= true;
            TButton(Components[i]).Caption:= Table1YEMEKADI.Text;
            table1.Next;

             end;

    end;

end;

Kodu bu şekilde değiştirdim, fakat mesela 4 ürün kaydediyoruz, ilk üçünü doğru kaydetmesine rağmen, 4.ürünü geri kalan butonların hepsinin caption'ına aktarıyor, burada döngüyü bir yerden kesmem gerek sanırım ama nereden olabileceğini tam çözemedim...

Bir de mesela kullanıcı ürünlerin hepsini sildi diyelim, o zaman bizim de caption'ları ilk haline getirmemiz gerekecek, yani enable= false ve caption=' ' şeklinde...Bu ihtimali nereye yazmam gerekir, bir de bunu nasıl ifade etmeliyim, EmptyTable'mı veya benim bilmediğim başka bir komut mu bu işi görür, yani döngüye "table1 boş ise" komutunu nasıl vereceğim?...Ve tüm kodun en başına mı vermem lazım o bilmediğim komutu?...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Re: Bu Koda Bir Bakabilir Misiniz?

Mesaj gönderen husonet »

Kod: Tümünü seç

procedure TForm3.FormCreate(Sender: TObject);
var
i:Integer;

begin

table1.First;
while not (table1.Eof) do
    begin
        for i:= 0 to pred (componentcount) do
        if (components[i] is TButton) then
            if TButton(Components[i]).Enabled=false then
            begin
                TButton(Components[i]).Enabled:= true;
                TButton(Components[i]).Caption:= Table1YEMEKADI.Text;
                break;
             end;
         table1.Next;
    end;

end;
bu şekilde çalışır

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ı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Sayın Husonet;

Döngü işi tamam oldu, fakat bu sefer de kaydettiklerim program açılıp kapanmadan buton üzerinde görülmüyor...Ürünleri kaydettiğim bir form var, buttonlar üzerinde de başka formda gösteriyorum, table'ın afterpost'una table1.flushbuffers yazdım...Normalde kaydettiğim ürünü diğer formda da kaydedildiği andan itibaren görebilmem için başka ne yapmam gerekir?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

kayıt yapar yapmaz commit le ve ardından kodu çalıştır...


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ı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Hocam, commit diye bir komut tanımlı değil, commitupdates diye bir komut tanımlı, o komutu verip çalıştırdığım zaman "table1: Not in cached update mode" iletisini aldım, Object Inspecter'dan table1'in cached update özelliğini true yaparak denedim...Maalesef yine olmadı...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

commit demek Cache li Transaction lu databbase lerde cacheleri Database işlemek demektir.

Veritabanınız nedir? kullandığınız bileşenler nelerdir?

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ı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

BDE Paradox
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Bir tane barkodlu satış prg. yaptım geçenlerde, onu flushbuffers ile halletmiştim, bu yaptığımda bir restorantda gördüğüm paket sistemini taklit etmek istiyorum pratiğimi artırmak için, bu kısım bayağı zorladı, bir haftadır içinden çıkamadım...
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Commit ve transaction işlemleri server veritabanları için geçerlidir..Bu durumda sizin yapmanız gereken formun show yordamlarında ilgili dataset nesnelerini kapatık tekrar açmak olacaktır.
Kolay gelsin..
Cevapla