Dbgrid satır içinde buton ile form açmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Dbgrid satır içinde buton ile form açmak

Mesaj gönderen sadikkavakli »

Değerli Üstadlarım,

Projem ek'tedir. Form1 de bulunan Dbgrid satır içinde Malzeme Kodu içerisinde [...] şeklinde butona benzer çıkıyordu bulamadım.
1-Klik olayını gerçekleştirince Form2 açılıyordu bunu yapamadım.
2-Form2 de Popup menu var Ekle Değiştir incele değimde (Adotable1:Field(M_id) not found) Hatası almaktayım düzeltemedim.
3-Form2 de ilgili satırı seçim yapınca (Ctrl tuşuna basıp çoklu seçim yaptığımda)Form1deki gbgrid satırlarına nasıl getirbilirim.

Saygılarımla.
Dosya ekleri
GBGrid.rar
(54.94 KiB) 181 kere indirildi
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen xxxjedixxx »

1) Grid satırında button gösterme içim

Kod: Tümünü seç

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
var index: integer; // selectedindex sütun indeksleri aynı olmayabilir, bu yüzden sütun indeksini arıyoruz
begin
  if DBGrid1.SelectedField.FieldName = 'Malz_Kodu' then
  begin
    for index := 0 to DBGrid1.Columns.Count - 1 do // sütun indeksini buluyoruz.
      if DBGrid1.Columns[index].FieldName = DBGrid1.SelectedField.FieldName then Break;
    DBGrid1.Columns[index].ButtonStyle := cbsEllipsis; // buton göstermek için
  end;
end;

// burası da butonun tıklanmasında çalışacak kod
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
  if DBGrid1.SelectedField.FieldName = 'Malz_Kodu' then
  begin
    ShowMessage('aaaaaaaa');
  end;
end;
2. Bu kısımda, daha önce sana gönderdiğim başka bir projeden alıntı yapmışsın. Bir şeyi atlamışsın. Önceki gönderdiğimde Ekle, değiştir, göster menülerinin herbirinin bir Tag değeri vardı. Fakat bu yeni yaptığında hepsi sıfır görünüyor. Aşğıdaki koda dikkat edersen Tag'lara göre EditMod belirleniyor. Tag sıfır olunca EditMod = D oluyor ve I'den farklı olduğu için M_Id yok hatası veriyor. Form2'deki Ekle menüsü için Tag = 1, Değiştir için Tag = 2, İncele için Tag = 3 olmalı.

Kod: Tümünü seç

  ...
  if TMenuItem(Sender).Tag = 1 then
    EditForm.EditMod := 'I' //Yeni Kayıt
  else if TMenuItem(Sender).Tag = 2 then
    EditForm.EditMod := 'E' // Değiştir
  else EditForm.EditMod := 'D'; // Görüntüle
  if EditForm.EditMod <> 'I' then
  EditForm.M_id:=DBGrid1.DataSource.DataSet.FieldByName('M_id').AsInteger;
  ...
3. Çoklu seçimler için DBGrid.SelectedRows 'u incele.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen xozcanx »

2-

Kod: Tümünü seç

EditForm.M_id:=DBGrid1.DataSource.DataSet.FieldByName('M_id').AsInteger;
yerine

Kod: Tümünü seç

EditForm.M_id:=DBGrid1.DataSource.DataSet.FieldByName('M_İd').AsInteger;
denermisiniz.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen sadikkavakli »

Sayın xozcanx,

Access veritabanından o değişliği yaptım M_id olarak düzeltme yapmıştım.
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx,

Öncelikle bu ifade etmek istiyorum Popup ekle değiştir incele çalışması tamamen size ait kod çalışmasıdır.

Değerli bilgilerinizi paylaştığınız için çok teşekkür ederim. Form2 Popup menü ile başım belada ekle dediğimde EditForm açılıyor fakat veriler gelmiyor. Tagları da dediğiniz gibi 1,2,3 olarak tanımladım fakat hata mesajları ile başım belada. Proje Version 2 ek'tedir.

Saygılarımla.
Dosya ekleri
GBGrid v2.rar
(58.93 KiB) 156 kere indirildi
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen xxxjedixxx »

Merhaba,

Önceki gönderdiğim projede fark etmediklerinizi bu yeni projede düzelttim. 3 tane menü tek bir prosedürü kulalnıyordu fakat sen sadece ekle için prosedür tanımlamışsın. Tag'leri bu yüzden kullanmıştım. 3 tane click prosedürü yazmamak için. Tag'ler ile hangi menüye tıklandığını buluyoruz. Her bir menü için EditForm açılmaktadır.

Diğer bir hata da malzeme tablona "m_İd" adında bir alan tanımlamışsın fakat "m_id" diye kullanmaya kalkmışsın. Büyük/küçük harf sorunu. Ayrıca sana tavsiyem, hiç bir zaman tablo isimlerinde ve alan adlarında türkçe karakter kullanma, başına bela olur.

EditForm ve Form2'deki Adoconnection'lar sildim, AdoTable ve DataSet'lerin bağlantılarını form1'in Adoconnection1'ine bağladım. Böylelikle tek bir noktadan bağlantı metnini (connection string) değiştirebilirsin. Projenin kaynak kodundaki otomatik form create'leri de kaldırdım.
Dosya ekleri
GBGrid_v3.rar
(60.7 KiB) 169 kere indirildi
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx,

Elinize sağlık Bugün Cuma Allah'tan ne dilersen onu versin.

Hakkınızı helal ediniz.

Saygılarımla.
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen xxxjedixxx »

Rice ederim. Güzel temennilerin için de ayrıca teşekkür ederim. Allah hepimiz için hayırlısı neyse onu versin. Saygılar.
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx,

Popupda değiştir dediğimizde hata vermektedir. Proje ek'tedir. bazı düzenlemeler yaptım ama birde kod gelince açıklama,Birim otomatik olarak gelebilir mi?

Saygılarımla.
Dosya ekleri
GBGrid v4.rar
(72.54 KiB) 159 kere indirildi
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen xxxjedixxx »

Değiştirdeki hata unit3'teki update sorgusundan kaynaklanıyor. Kodunda,

Kod: Tümünü seç

      SQL.Text := 'update malzemeler set code=:code' +
                            'where M_id = :M_id';
yazıyor. Dikkat edersen :code 'dan sonra boşluk koymamışsın. Ya oraya yada where 'İn önüne bir boşluk koy.

Açıklama ve birim ile ilgili olarak;
DBGrid1EditButtonClick prosedürüne aşağıdaki satırları ekle.

Kod: Tümünü seç

      DBGrid1.DataSource.DataSet.FieldByName('Malz_Aciklamasi').Value := Form2.DBGrid1.DataSource.DataSet.FieldByName('aciklama').AsString;
      DBGrid1.DataSource.DataSet.FieldByName('Birim').Value := Form2.DBGrid1.DataSource.DataSet.FieldByName('birim').AsString;
sadikkavakli
Üye
Mesajlar: 33
Kayıt: 23 Nis 2014 10:04

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen sadikkavakli »

Sayın xxxjedixxx,

Proje son hali ek'tedir. Ellerine Sağlık

Saygılarımla.
Dosya ekleri
GBGrid v5 SEÇ AKTAR son hali.rar
(82.57 KiB) 266 kere indirildi
erbedas
Üye
Mesajlar: 14
Kayıt: 23 Tem 2018 06:34

Re: Dbgrid satır içinde buton ile form açmak

Mesaj gönderen erbedas »

Tüm paylaşımlar için teşekürler
aradığım buydu
Cevapla