Delphi - DBGrid - farebnosť tabuľky a zistenie súradníc pri OnCellClick
1. Chcel by som vedieť, ako zmeniť farbu určitého riadka v tabuľke? Využitie je napr. na to, že opticky sa rozdelia riadky a tabuľka je prehľadnejšia.
2. Keď kliknem do tabuľky, tak chce, aby sa otvorilo okno, kde zadám hodnotu danej bunky. Keď som nastavil udalosť OnCellClick, tak sa mi vytvorila metóda DBGridCellClick(Column: TColumn). Ako z typu TColumn zistím stĺpec a riadok tabuľky?
1. OnDrawCell, priklad na vykreslovani je v helpu
2. Radek vis, stojis na nem v Datasetu (dbGrid.DataSource.Dataset)
Sloupec vis take - dbGrid.SelectedIndex. Pomoci dbGrid.Columns a SelectedIndex jsi schopny zjistit pole, na kterem stojis.
Prosím ťa, ešte ma napadlo, lepšie by bolo, keby sa to dalo editovať priamo v tabuľke, ako pri TTable, keď povolím editáciu. Samozrejme pri TQuery sa to nedá, ale keby sa aspoň dalo, že niekde dostanem hodnotu, ktorá sa zeditovala a tú už programovo hodím do tabuľky. Také niečo sa dá? Takto ušetrím zbytočné otváranie okna kvôli zápisu novej hodnoty. Ale chcem to tak, že editovať sa bude dať len určený stĺpec.
Live Query je mozne - prima editace v DBGridu, ale je nutne dodrzet urcite zasady - vetu je nutne jednoznacne identifikovat (unikatni klic) a nesmi se pouzit agregovane funkce (Group By) nebo spojeni vice tabulek.
CO se tyka editace jednoho sloupce, v dbGrid.Columns si muzes nastavit, zda sloupec bude ReadOnly nebo ne (aspon, co si pamatuju)
No ja tam tabuľky spájam, takže z toho nič nebude. Ide o to, že v tabuľke sa do jedného stĺpca nasáčkojú názvy produktov miesto ID čísel, názvy prác miesto ID čísel a hneď tu máme 3 spojené tabuľky. Tak ďakujem. Keď poriešim a nebude problém, označím za vyriešené. Zatiaľ nechám takto.
Co používáš za DB připojení? BDE (které bych nedoporučoval) obsahovalo komponentu Update SQL, kde sis napsal říkazy pro Insert/Update/Delete a muhl jsi to v Gridu editovat.
BDE. Myslíš, či mám InterBase, BDE alebo niečo iné?
Pokud používáš BDE, podívej se na komponentu TUpdateSQL. Ta ti vyřeší problém s aktualizací dat.
2. Sloupec tabulky v OnCellClick: Column.Field --> aktuální pole tabulky typu TField.
2. To je trošku složitější (předpokládáme, že mřížka na formu se jmenuje DBGrid1):