Buton aktif/pasif

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

Buton aktif/pasif

Mesaj gönderen canset »

Herkese selamlar;

2 adet formum var. Birincisinde ürün kayıt, güncelleme ve silme işlemlerini yapmaktayım. İkincisini ise satış ekranı olarak kullanmak amacındayım.

Ürün bilgilerini girip de kaydet butonuna tıkladığım zaman, birinci formda kayıt işlemi oluştuktan sonra, ikinci formda yerleştireceğim butonların caption'larının üzerine girdiğim ürünün adlarını yazmasını istiyorum.

table1.Post;
form3.Button1.Enabled;
form3.Button1.Caption:= DBEdit1.Text;

Benim amacım, satış penceresine boş butonlar koymak, örneğin 50 adet... Birinci sayfada mesela ben bir ürün girdiğim zaman, o buton aktif hale gelecek ve üzerinde girdiğim ürünün adı yazacak...Daha sonra başka bir ürün girdiğimde de aktif halde olmayan ilk butonu bularak ürün adını o butonun üzerine atacak...Eğer ürünü silmek istersem de buton üzerindeki ürün adı silinecek ve buton aktif halden pasit hale geçecek...

Yardımcı olabileceklere şimdiden teşekkürler...

Saygılarımla...

(bu arada paradox ve table kullanmaktayım)
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Eğer Button ları isimlerini Btn_Button001 şeklinde bir düzende verirsen kolayca yapabilirsin.. Öncelikle tüm button ların enabled larını false yapmalısın.. Daha sonra while/do döngüsü ile tablondaki kayıtları sıra ile okuyup, başlangıçta sıfır atadığın bir indisi birer artırarak sıradaki button ismini bulup, caption unu ve enabled özelliklerini değiştirebilirsin.

Aslında daha kolayı şu; yine while/do döngüsü ile tablodaki kayıtları tararken buttonu run-time da oluşturmak;

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i: Integer;
const
  NamePrefix = 'MyButton';
begin
  Table1.First;
  i := 0;
  while not Table1.EOF do
  begin
    TButton.Create(Self).Name := NamePrefix + IntToStr(i);
    with TButton(FindComponent(NamePrefix + IntToStr(i))) do
    begin
      Left := 5 + (trunc(i / 10) * 150);
      Top := (i + 1) mod 10 * 50;
      Width := 130;
      Parent := Self;
      Caption := Table1.FieldByName('Company').AsString;
      Enabled := True;
      Visible := True;
      Button1Click(Self);
   // .. varsa diğer özellikleri..
    end;
    if i > 30 then
      Break;
    Table1.Next;
    inc(i);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//
end;
yukarıdaki örnek bizzat DBDEMOS / Costumer.db ile denenmiştir. Hepsine ortak bağladığınız bir Button1Click te gerekli işlemleri yapabilirsiniz.. :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Sayın RSimsek;

Anladığım kadarı ile, hazır butonlara aktarım şeklinde değil de, kendisi buton oluşturuyor değil mi?
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Mesaj gönderen ender_arslanturk »

TButton.Create(Self)
Evet. :D
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Komutla buton oluşturmak yerine, kendim diğer foruma 50 adet buton koymak istiyorum...Bunun içinde 50 tane butonu forma yerleştirip, enabled ları false yaptım...

Yapmayı düşündüğüm olay şu şekilde...: İlk önce bir sorgu ile butonların enable'larını sorgulayıp, false olanları bulmak ve verilecek komut ile butonun caption'ına istediğim adı aktarmak ve enable'ını da komut ile true hale getirmek...Daha sonra işlevin tekrarında, bu butonu enable'ı true olduğu için görmeyecek ve bir sonrakine aktarım yapacak...

Bir acemi olarak :( bu işlemi yapacak sorguya ve detaylı açıklamaya ihtiyacım var...

Cevaplarınızı bekliyorum..
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

bence bu söleidklerin için bir sey yazacam ama bazı seyler net değil...yani soruda ne istediğini tam anlayamadım...

ama sunu anladım istediğin bizim hepimizin bildiği ve her zaman kullandığı bir sey...Ne istiyorsun

elma mı armutmu ? önce iyice anlamamız lazım? açarsan durumu
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

zorlamakk

Mesaj gönderen nosedive »

Sanıyorum biraz zorlarsanız bu işi halledebilirsiniz...çok güzel bir de uygulama olur sizin için iç içe bi kaç döngü var...bunları kendiniz güzel bir şekilde kurarsanız çok iyi olur...ama burdan size yardımcı olacak bir kodu aldığınız takdirde bu programcılık geleceğiniz için çürük bir temel demektir.....

Programcılık := dene + olmadı bir daha + bir daha + bi daha + bi daha + kafa patlat + olmuyor bi daha bla bla bla.........
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Re: zorlamakk

Mesaj gönderen canset »

nosedive yazdı:Sanıyorum biraz zorlarsanız bu işi halledebilirsiniz...çok güzel bir de uygulama olur sizin için iç içe bi kaç döngü var...bunları kendiniz güzel bir şekilde kurarsanız çok iyi olur...ama burdan size yardımcı olacak bir kodu aldığınız takdirde bu programcılık geleceğiniz için çürük bir temel demektir.....

Programcılık := dene + olmadı bir daha + bir daha + bi daha + bi daha + kafa patlat + olmuyor bi daha bla bla bla.........
Bununla sabahtan beri uğraşıyorum zaten, forumda da arattım ama benzer bir örneğe rastlayamadım...Zaten böyle cins şeyler de benim aklıma geliyor herhalde.. :twisted:

Formun birisinde bilgileri kaydederken, buraya yazacağım bir komut ile diğer formda bununan butonların caption'larına kaydettiğim ürünün adını aktaracağım ki; bunu daha sonra tekrardan kullanmayı düşünüyorum...Bu aşamada takıldığım konu da butonların enabled'ları false olanları nasıl arattırmak gerektiği :?:
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

tuanna yazdı:bence bu söleidklerin için bir sey yazacam ama bazı seyler net değil...yani soruda ne istediğini tam anlayamadım...

ama sunu anladım istediğin bizim hepimizin bildiği ve her zaman kullandığı bir sey...Ne istiyorsun

elma mı armutmu ? önce iyice anlamamız lazım? açarsan durumu
Acemiliğimden olsa gerek, zannedersem meramımı tam olarak izah edemiyorum..Şimdi yeniden anlatayım...

Ürün adı, fiyatı vs. kaydettiğim bir form var...Bir de bunların satışını yapacağım ikinci bir form var..

Birinci formda ürünün tüm bilgilerini girip KAYDET butonuna bastığımda, aynı zamanda ikinci forma attığım BUTON'un üzerine o kaydettiğim ürünün adı yazılmış olacak...Hani şu marketlerde kullanılan manav terazilerinin üzerinde elma, armut,vs vs diye yazar ya, bizim ikinci formda koyacağımız 50 adet butonun üzerinde de onlar yazacak işte...

Ürün sayımız 50 ile sınırlı olacağı için ikinci forma 50 adet buton koyayım diyorum, onların da enabled özelliklerini false yapalım...Birinci formdaki KAYDET butonuna öyle bir döngü yazmalıyım ki; ikinci formdaki enabled=false olan butonları bulsun ve ürünün adını bulduğu butonun üzerine yazsın....

Daha sonraki aşamada ise, kullanıcı bu butona tıkladığında bir miktar editini ayrıyeten kullanıma sunup, ürünün fiyatını da ilgili table'dan çekmeyi ve bunları bir gridde göstermeyi düşünüyorum, ama bu sonraki iş...

Algoritmayı kafamda bu şekilde oluşturdum ama acemiliğim uygulamaya izin vermiyor, gerekli komutların neler olduğunu bilmiyorum..

Saygılar..
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

bi soru daha

Mesaj gönderen nosedive »

peki programı kapatıp açtığınız zaman database de kayıtlı olan ürünlerin yine diğer 50 butonun üstünde görünmesini istiyormusunuz...o zaman form create olduğunda db yi bir tarayıp aynı döngüyü orda da çalıştırmanız gerekecek ?
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Kod: Tümünü seç

var
  i : Integer;//tmpCounter
begin
  for i:=0 to Pred (ComponentCount) do
    if (Components[i] is TButton) then
      if TButton(Components[i]).Enabled then
        ShowMessage ('Enabled True')
      else
        ShowMessage ('Enabled False');
end;

gibi bir kod bloğu olabilir sanırım...
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Re: bi soru daha

Mesaj gönderen canset »

nosedive yazdı:peki programı kapatıp açtığınız zaman database de kayıtlı olan ürünlerin yine diğer 50 butonun üstünde görünmesini istiyormusunuz...o zaman form create olduğunda db yi bir tarayıp aynı döngüyü orda da çalıştırmanız gerekecek ?
Buton üzerindeki isimler kalıcı olacak, ancak database'de ürünü sildiğim zaman buton üzerindeki isim silinmeli...
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

tavsiye

Mesaj gönderen nosedive »

tek bir tavsiyem var

yapmaya calistigin sey guzel bir sey....ugras yaparsan iyi bir kazanc senin icin....baslangic asamasi icin guzel bir ornek...ben yapiyordum bisi ama simdi vazgectim iste :)
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Action lar derdine deva olabilecek güçlü yapılar. Delphi demolarının içinde örneği mevcut.
Kullanıcı avatarı
canset
Üye
Mesajlar: 151
Kayıt: 19 Haz 2005 12:38

Mesaj gönderen canset »

Nosedive;

Bir şey biliyorsan ve yardımcı olacaksan yaz, yok amacın sadece muhabbet etmekse onun yeri burası değil...

Forumların amacı bilgiyi paylaşmaktır, saklayıp başkasının öğrenmesini engellemek değildir...

Burada ciddi bir konu mevcut ve benden daha deneyimli arkadaşların yardımlarını istirham ettim...

Bak yukarıda RSimsek, Blue Alone, Coderlord bilmediğim konuda fikir sahibi olabilmem için önerilerde bulunuyorlar...Fikirleri yapmak istediklerimi karşılar ya da karşılamaz veya yöntem farklılıkları olabilir...Şimdi Coderlord arkadaşımız 'Action'lardan bahsetmiş, o yapıları inceleyeceğim...

Eğer senin de varsa tavsiye edebileceğin bir yapı, ondan bahset, laf kalabalığını bırak, insanları da meşgul etme...
Cevapla