Delphi - DBGrid - vyfarbovanie buniek a zadanie názvov stĺpcov sa bije
1. Toto nesúvisí s názvom vlákna, viem to obísť dostačujúcim riešením:
Pri vyfarbovaní, ak nemá DBGrid focus, tak správne má byť riadok len označený zobáčikom a nemá byť modro vysvietený, lenže ak pri vyfarbovaní testujem, či má riadok focus, tak nech to robím akokoľvek,
if (gdFocused in State) and (gdSelected in State) then
begin
(Sender as TDBGrid).DefaultDrawDataCell(Rect, Field, State);
exit;
if (gdFocused in State) and (gdSelected in State) then
begin
exit;
if (gdFocused in State) then
begin
(Sender as TDBGrid).DefaultDrawDataCell(Rect, Field, State);
exit;
if (gdFocused in State) then
begin
exit;
stále to rovnako nefunguje:
Riešenie spočíva v tom, že netestujem focus, iba selektovanie, ale potom je modrý pás aj vtedy, ak nemá DBGrid focus. V DBGrid mám nastavené RowSelect na true, takže v tom problém nespočíva.
2. No a toto súvisí s názvom vlákna:
Pomocou OnDrawDataCell som si vytvoril metódu na farbenie buniek. Po zadaní hodnôt DBGrid.Columns[1..n] v Object Inspectore mi prestalo vyfarbovať bunky. Čo s tým teraz? Vyplnené Columns je nutnosťou kvôli správnemu zobrazeniu diakritiky v názvoch stĺpcov (Čas, Pracovníci, Názov, atď.).
Moc dotazu nerozumím, nebo zveřejňuješ málo informací.
Patrně jsi nějak zničil defaultní vykreslování mříže, případně vykresluješ neviditelným písmem (barva písma=barva pozadí -> zkontroluj vlastnosti Font ). Dej mříž do původního stavu a pomalu přidávej metody, abys lokalizoval, co začne blbnout. Názvy sloupců zadávám v editoru polí (fieldů) tabulky/query - vlastnost DisplayLabel - mřížka si to převezme, dokonce to má přednost před titulkem v mřížce. Máš pak všechny vlastnosti dotazu na jednom místě a lépe se to udržuje. I když ve tvém případe, kdy máš porušeno vykreslování mřížky, to asi nepomůže. Můžeš mi ten zdroják poslat, ale nevím, kdy se k tomu dostanu, neboť ráno jedeme aktivovat letní kina.
Dobre, pošlem ti to poobede. Pokiaľ testujem State na hodnotu gdSelected v množine State: TGridDrawState, tak vtedy je to v poriadku. No a ten druhý problém s tým nesúvisí.
// Enter the following code in the TDBGrid's OnDrawDataCell event:
// Set the Default drawing to true. With this, it only has to draw the
// highlighted cell. If you set DefaultDrawing to false, you must draw all
// the cells yourself with the canvas properties.