dbgrid de seçilen hücrenin editte gösterimi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
igny
Üye
Mesajlar: 54
Kayıt: 14 Mar 2008 04:03

dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen igny »

formda aradım bulamadım verildi ise affola

edit1.text:=dbgrid1.columns.grig.fields[1].text;
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen White Rose »

gridin bağlı bulunduğu datasource'nin onchange olayına

edit1.text:=tableALAN_ADI.ASstring ;

yazın yeterli.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen mrmarman »

Merhaba
DBGrid'in hangi datasate'e bağlı olduğunu hatırlamak zorunda olmak istemiyorsn ( olur ya onlarca veritabanı tablosu, bir okadar da DBgrid ve DataSource ) şu şekilde deneyin. Örneğimizde DBGrid1 olarak verdim.

Kod: Tümünü seç

Var
  Veri : String;
begin
    With DBGrid1 do
      Veri := DataSource.DataSet.FieldByName( Columns[0].FieldName ).AsString;
    ShowMessage(Veri);
end;
Resim
Resim ....Resim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen sabanakman »

Benzeri bir durumu bir projemde kullandım. Gridde üzerinde bulunulan kayıt değerini aşağıdaki kodla yazmışım. label1 yerine edit kullanılabilir.

Kod: Tümünü seç

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  if Sender is TDBGrid then with TDBGrid(Sender) do begin
    if Assigned(SelectedField) then
      if SelectedField.IsNull then label1.Caption:='Null'
      else label1.Caption:=SelectedField.AsString
    else label1.Caption:='Yok'
  end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen F.Atagun »

Buda güzel bir yöntem. Gridin DrawColumnCell özelliğine yazabilirsiniz.
If (gdSelected in state) then // eğer seçili ise
begin
DBGrid1.Canvas.Brush.Color := $00FD959C; // zemin rengi
DbGrid1.Canvas.Font.Color := clYellow; // font rengi
Edit1.Text:=dbgrid1.Fields[1].Text;
end
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen mrmarman »

@F.Atagun bu riskli bir yöntem.

Riski şurada, sen mouse'u DBGrid'in ilgili alanı üzerinde dolaştırıken, form/grid yeniden boyutlandırılırken, öne başka form gelir sonra arkadaki grid içeren form yeniden görüntülenirken... KISACA grid renk boyama işleminde herhangi bir şekilde değşiklik olduğunda EDIT içindeki text defaten değiştirilmeye çalışılır.

EDIT içine giriş yapılırken değerlerin eski değere dönmesi her zaman memnuniyet getiren bir uygulama olmaz. Bu nedenle DRAW olaylarını sadece boyama / çizim işlerine bırakmakta fayda var diye altını çizmek istiyorum.
Resim
Resim ....Resim
F.Atagun
Üye
Mesajlar: 158
Kayıt: 01 Oca 2008 01:56

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen F.Atagun »

Teşekkürler Hocam,
Bu detay bilgiyi bilmiyordum
smokie
Üye
Mesajlar: 72
Kayıt: 01 Tem 2007 10:26

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen smokie »

mrmarman yazdı:Merhaba
DBGrid'in hangi datasate'e bağlı olduğunu hatırlamak zorunda olmak istemiyorsn ( olur ya onlarca veritabanı tablosu, bir okadar da DBgrid ve DataSource ) şu şekilde deneyin. Örneğimizde DBGrid1 olarak verdim.

Kod: Tümünü seç

Var
  Veri : String;
begin
    With DBGrid1 do
      Veri := DataSource.DataSet.FieldByName( Columns[0].FieldName ).AsString;
    ShowMessage(Veri);
end;

Merhaba, verdiğiniz kodu biraz değiştirdim ama beceremedim :roll:

Kod: Tümünü seç

Var
  Veri : String;
begin
    With DBGrid1 do
      Veri := DataSource.DataSet.FieldByName(Columns[0].FieldName).AsString;
      if Veri='3' then
ShowMessage('Evet');
üc olan hücreyi smessage da Evet uyarısını alıyorum, benim istediğim 3 olan hücreye Evet yazması
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen sabanakman »

Bu işi grid kullanmadan çok basit bir yolla halledebilirsiniz. İlgili alanın onGetText olayına

Kod: Tümünü seç

procedure TForm1.Table1DenemeGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  if Sender.AsString='3' then
   Text :='Evet';
end;
kodunu yazmayı denemelisiniz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ufb1453
Üye
Mesajlar: 52
Kayıt: 14 Oca 2014 09:41
İletişim:

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen ufb1453 »

Hayırlı Geceler!

Gün içerisinde baya aradım, googledande araştırdım ancak bulamadım, en yakın bu topic de buldum ancak istediğim şekilde değil, combobox kullanıyorum,

Kod: Tümünü seç

combobox1.Text:=dbgrid1.DataSource.DataSet.FieldValues['MAĞAZA ADI'];
     combobox1.Text:=dbgrid1.DataSource.DataSet.FieldByName('MAĞAZA ADI').Value;
     with dbgrid1 do
      combobox1.Text:= dbgrid1.Fields[3].Value; 
      combobox1.Text:= DataSource.DataSet.FieldByName( Columns[3].FieldName ).AsString;
     combobox1.text:=dbgrid1.columns.grid.fields[3].text;
Yukarıdaki 5 farklı şekilde de denediğimde DBGridde 2 veya daha fazla kayıt var ise en üstteki kayıdı veriyor, ben edit2 ye girilen bir kaydı "bul" isimli butona basarak aratıyorum dbgridde kalan değerler için combobox1.text alanına, DBgrid de bir alt satıra indiğimde ilgili satırdaki istediğim alanın bilgisinin gelmesini istemekteyim. yardımcı olabilir misiniz?
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen ertank »

Merhaba, acaba ComboBox nesnesinin Style özelliği csDropDown veya csSimple dışında bir değere ayarlanmış olabilir mi?
ufb1453
Üye
Mesajlar: 52
Kayıt: 14 Oca 2014 09:41
İletişim:

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen ufb1453 »

csdropdown style özelliği üstadım
ufb1453
Üye
Mesajlar: 52
Kayıt: 14 Oca 2014 09:41
İletişim:

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen ufb1453 »

Kod: Tümünü seç

rocedure TForm28.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
combobox1.Text:=dbgrid1.DataSource.DataSet.FieldValues['MAĞAZA ADI'];
end;

procedure TForm28.DBGrid1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
combobox1.Text:=dbgrid1.DataSource.DataSet.FieldValues['MAĞAZA ADI'];
end;
Ben sorunumu bu şekilde çözdüm, şimdi sadece boş kayıtlarda hata veriyor onuda hallettimmi tamamdır :)
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen ertank »

Bu yazdığınız iki adet prosedürü DataSource.OnDataChange() olayına aşağıdaki şekilde dönüştürebilirsiniz. Aşağıdaki örnek kodda kullanılan TypeSafe ".AsString" ifadesinin yardımı ile boş kayıtlarda da sorun yaşamamanız gerekli.

Ayrıca kullanıcı fare ile kayıtlar arasında dolaştığı zaman da bilgiler ComboBox içinde güncel olarak gösterilecektir.

Kod: Tümünü seç

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  // Eğer bilgi girişi/değişikliği yapılmayan bir Grid/DataSet ise bu kontrole gerek yoktur
  if DataSource.State = dsBrowse then
  begin
    ComboBox1.Text := DBGrid1.DataSource.DataSet.FieldByName('MAĞAZA ADI').AsString;
  end;
end;
NOT: Yukarıdaki kodu kullanır iken kendi yazdığınız iki adet prosedürü silmeli/kapatmalısınız
ufb1453
Üye
Mesajlar: 52
Kayıt: 14 Oca 2014 09:41
İletişim:

Re: dbgrid de seçilen hücrenin editte gösterimi

Mesaj gönderen ufb1453 »

Teşekkür ederim ilginiz için, bu daha iyi oldu,
Cevapla