DBGrid pitanja :)

DBGrid pitanja :)

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

Ajde da pokusamo ovog nekadasnjeg Delphi programera da rehabilitujemo Smile

Radim u Lazarusu.

Kada neko polje u DBGrid tabeli izmenim, hocu da imam neki Event.
Ocekivao sam da ce se izvrsiti event 'dbGrid1.OnFieldEditMask'... medjutim, nista.
Koj event se izvrsava kada se promeni vrednost u polju u dbGrid tabeli?

I drugo pitanje.
Kako da procitam vrednost polja u aktivnoj koloni [ iz dbGrid tabele] ?
Probao sam dbGrid1.Columns.Items[1]... ali se odatle izgubim...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Mislim da mozes da iskoristis OnKeyPress. Trik je samo otkriti u kojem si tacno cell-u. To je sve.

Drugo pitanje...
DBGrid.Columns ima property Field (TField).

Ali nesto ovde ne stima. Mislim da ne postavljas pitanje kako treba. Ako je u pitanju DBGrid (ne StringGrid), to znaci da imas tabelu/query koji je vezan preko dataSource. Sta onda prckas po samom gridu?! Treba da prckas po bazi. Grid je tu samo da prikaze vrednosti.

Savet:
Da bi naucio lepo da baratas bazama, moja preporuka je da umesto DataAware komponente, tvog omiljenog grida, koristis TListView, sa propertijem Style na Report.
Zasto?
1. lakse ces da baratas vrednostima celija, ako ti je bas stalo da po njma prckas.
2. Komponenta nije vezana za automatsko popunjavanje. Ti si zaduzen za to = imas potpunu kontrolu
3. Prima ikonice i ostale zezancije (objekte)
4. Naucices da brljas direktno po dataset-u



offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

ok, kako onda preko DataSource1 da dodjem bar do neke vrednosti nekog polja?
Datasource1.Components[1]. ?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Kada ne koristis DataAware komponente onda ti DataSource i ne treba. Dovoljan ti je DataSet i iz njega vadis podatke.

DataSet objekti imaju Fields property koji drzi niz TField objekata ili objekata koji nasledjuju TField.

Pogledaj i ostale Field* property-e.

Tagodje imas i funkcije koje ti olaksavaju pronalazenje nekog TField objekta:

ClearFields
FieldByName
FindField
GetFieldNames
.
.
.

Sve u svemu, kad dobijes TField objekat (to je u sustini kolona u tabeli) mozes da upisujes ili iscitavas podatke. Najbolje od svega je sto podatak mozes da upises kao Variant i da se ne brines oko konverzije.

Pogledaj help za TDataSet, TFields i TField klase za vise informacija.

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

Tacno je to sto Srki kaze.
Ako budes koristio TListView, onda ti samo treba tvoj dataset

Ako pak imas bilo koju dataaware komponentu, a nemas pristup datasetu (ako imas radi sa njim), onda je Grid.DataSource.DataSet. (sta bilo od dataseta, recimo, .fields[0])

Ko je trenutno na forumu
 

Ukupno su 1171 korisnika na forumu :: 41 registrovanih, 4 sakrivenih i 1126 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: AC-DC, AleksSE, Apok, babaroga, bojank, bokisha253, ccoogg123, chica, debeli, DH, Dogma21, Fisherman, goxin, hyla, ikan, ILGromovnik, interesujeme, ivan1973, Komentator, Kotarle, Kubovac, kybonacci, Leonov, lord sir giga, mercedesamg, Milos ZA, moldway, mrav pesadinac, nemkea71, novator, operniki, opt1, ozz, prle122, radoznao, Saratoga, SlaKoj, sombrero, TalicniTom, vathra, YugoSlav