XDBGrid - Checkbox w kolumnie

0

Witam,

mam pytanie i ewentualnie prośbę o przykład odnośnie rozwiązania poniższego problemu:

W bazie mam tabelę "Uprawnienia" która wygląda następująco:

ID_UPRAWNIENIA ID_MODULU ID_UZYTKOWNIKA P D U E
1 14 10 1 0 0 1

**gdzie: **
P - Przegląd
D - Dodawanie
U - Usuwanie
E - Edycja

Na formie mam XDBGrid wyglądający tak:

Nazwa modułu Przegląd Dodawanie Usuwanie Edycja
Ustawienia systemu X O O X

X - Checkbox zaznaczony
O - Checkbox odznaczony

Problem jest taki, że nie każdy moduł wymaga np. Dodawania lub Edycji bo posiada tylko Przegląd dlatego chciałbym nie wyświetlać checkboxów w tych komórkach (ukryć je).

Podejrzewam, że całość funkcji sprawdzającej musiałaby znajdować się w zdarzeniu OnDrawColumnCell.
Póki co wymyśliłem to, lecz w efekcie widać nazwy kolumn ale tabela jest czarna.

if (IBDataSet2.FieldByName('NAZWA').AsString = 'Ustawienia systemu') // Jesli modul to ustawienia systemu
  and (IBDataSet2.FieldByName('P').AsString <> '') then // i aktualnie znajdujemy sie w kolumnie P (przeglad) 
    dbUprawnienia.SelectedField.Visible := False // Ukryj pole
  else
    dbUprawnienia.SelectedField.Visible := True; // Pokaz pole

Proszę o pomoc.

0

Nikt nie jest w stanie mi pomóc? ;/

Dodam, że tabela modułów wygląda następująco:

ID_MODULU NAZWA P D U E
14 Ustawienia systemu 0 0 0 1

Gdzie:
0 - Checkbox ukryty (moduł nie wymaga uprawnienia);
1 - Checkbox widoczny.

Czyli warunek wyglądałby wyświetlania checkboxa w tabeli powinien wyglądać raczej tak:

  if (IBDataset1.FieldByName('P').AsInteger = 0) then
    // Ukrycie kolumny
// No właśnie.... jak? Rysować canvasa i zakryć pole?

zapytanie:

select  * from moduly m 
inner join uprawnienia up on (up.id_uprawnienia = m.id_modulu)
inner join uzytkownicy u on (u.id = uprawnienia.id_uzytkownika)
where
  up.id_modulu = :id_modulu and
  up.id_uzytkownika = :id_uzytkownika
order by
  m.Nazwa
0
user322 napisał(a):

// No właśnie.... jak? Rysować canvasa i zakryć pole?

A czy nie prościej, zamiast rysować canvasa wpisać po prostu pusty tekst w dane pole ? (np w zdarzeniu OnGetText lub OnSetText)

1 użytkowników online, w tym zalogowanych: 0, gości: 1