DBGrid jak odwołać się do konkretnej komórki

DBGrid jak odwołać się do konkretnej komórki
ST
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Witam

Mam problem z odwołaniem do konkretnej komórki w tabeli DBGrid.

w StringGrid miałem np:

Kopiuj
Edit1.text:= StringGrid1.Cells[1,1];

tu zwraca mi zaznaczony wiersz z 3 kolumny:

Kopiuj
Edit1.Text:=dbGrid1.Fields[3].AsString;

a jak odwołać się konkretnie do 3 kolumny i 3 wiersza.

GS
  • Rejestracja: dni
  • Ostatnio: dni
1

DBgrid jest kontrolką wizualizającą dane z dataseta, i sam jako taki nie przchechowuje żadnych danych.
Informacji musisz szukać w datasetcie
np.

Kopiuj
myStr:=myDataset.fieldbyname('anyField').asstring

myStr:=myDbgrid.datasource.dataset.fieldbyname('anyField').asstring

https://docwiki.embarcadero.com/Libraries/Sydney/en/Data.DB.TDataSet

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0

Dbgrid nie przechowuje danych mysisz sie odwolqc do dataset czyli quety.locate ustawiasz na odpowiednim wierszu/rekordzie i po prostu fieldbyname aby odwołać się do właściwej kolumny

ST
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Zrobiłem coś takiego, działa i zwraca mi wartość komórki ale w DBGridzie zaznacza mi ją idzie to jakoś wyłączyć

Kopiuj
datasource1.dataset.RecNo:=3;
Edit1.Text:=DataSource1.DataSet.FieldByName('Nazwa').asstring;
PD
  • Rejestracja: dni
  • Ostatnio: dni
2

musisz najpierw zapamiętać numer zaznaczonego rekordu a później do niego wrócić, np;

Kopiuj
var
  rno: Integer;
begin
  rno := DataSource1.DataSet.RecNo;
  DataSource1.DataSet.DisableControls;
  DataSource1.DataSet.RecNo := 3;
  Edit1.Text := DataSource1.DataSet.FieldByName('Nazwa').AsString;
  DataSource1.DataSet.RecNo := rno;
  DataSource1.DataSet.EnableControls;
end;
GS
  • Rejestracja: dni
  • Ostatnio: dni
0

@Paweł Dmitruk
Masz rację. Tylko taki kod może doprowadzić użytkownika do oczopląsu.
Po ustawieniu DataSource1.DataSet.RecNo := rno; grid może się nieco "przescrollować"

Miang
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1792
1
grzegorz_so napisał(a):

@Paweł Dmitruk
Masz rację. Tylko taki kod może doprowadzić użytkownika do oczopląsu.
Po ustawieniu DataSource1.DataSet.RecNo := rno; grid może się nieco "przescrollować"

TDataSet.DisableControls kiedyś się używało

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

TDataSet.DisableControls kiedyś się używało

I dale się używa :) Ale to nie niweluje "oczopląsu" i scrollowania Grida.
Mam kod który to eliminuje. I postaram się go wkleić

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.