Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 11 17:47 #1835

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Debugoltam, eljutott oda, csak nem volt hatása a DBGrid-re.
Ha beállítottam a column-okat, akkor azonnal működött. :)

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 11 15:50 #1834

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Az a lényeg, hogy a célodnak megfeleljen...
Bár ha futásidőben "nem csinált semmit" az azt jelenti, hogy nem is futott le az utasítás vagyis a forráskódban nem a megfelelő helyen (értsd: események sorrendje / eseménykezelő eljárás) próbáltad.

(Lásd még a "Globális változó" témát)
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 11 12:32 #1833

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Mindig fix nálam a query és a dbgrid is.
Ha nem adtam hozzá a DBGrid-hez a column-okat, akkor futásidőben nem csinált semmit - nem lett az adott oszlop readonly=false.

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 11 07:49 #1832

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Az OnShow eseménykezelő csak akkor hívódik amikor az adott elem (esetedben az ablak) kirajzolására (újrarajzolására) ténylegesen szükség van.

Ha nem mindig ugyanazzal a táblával szeretnéd használni az adott DBGrid-et (az oszlopok száma eltérő lehet) akkor ne az ablak (és ne a komponens) megjelenítésekor, hanem az adatok betöltése (a DBGrid-be kerülése) után közvetlenül állítsd a .ReadOnly tulajdonság értékét. Lekérdezés után futásidőben ellenőrizve a DBGrid tartalmát (pl. az oszlopainak számát: DBGrid.Columns.Count) nem kell feltétlenül előre megadni a tervezőben az oszlopokat...
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 11 07:25 #1831

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Nem szabad elfelejteni, hogy csak akkor működik, ha a design-time a DBGrid Columns property-ben hozzá kell adni az összes mezőt!
procedure TmyForm.FormShow(Sender: TObject);
begin
  // default:    bufdsDBGrid.ReadOnly:=True;
  bufdsDBGrid.Columns[3].ReadOnly := False;
end;

Köszönöm az infót!

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 10 18:28 #1830

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Kösz, megnézem.

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 10 18:09 #1829

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Az egyes oszlopok külön is beállíthatók csak olvashatónak:
DBGrid.Columns[OszlopSzam].ReadOnly := True;
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

bufDataset DBGrid egy oszlop szerkeszthetősége 2016 febr. 10 15:21 #1828

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Üdv!
Adott egy DBGrid -> BufDataset (ami egy SQL query eredményét tartalmazza egyébként).
Hogyan lehetne szépen megoldani, hogy a DBGrid-ben csak egy oszlop (column) legyen szerkeszthető?

Ha ReadOnly-ra állítom a DBGrid-et, akkor nem lehet szerkeszteni semmit. Ez nem jó. Tehát a ReadOnly:=false és valahogy figyelni kellene, hogy melyik oszlopban módosít a user.
Ezt hol érdemes lekezelni? DBGrid OnWhatEvent? :)

  • Oldal:
  • 1