Kilka DBGridów i multiselect

0

Cześć,

Nie mogę sobie poradzić z takim wyzwaniem. Mam na formatce np. trzy DBGridy. Każdy ma osobne komponenty TQuery i TDataSet i jeden wspólny TZConnection (korzystam z ZeosLib, a baza to SQLite3). Multiselect działa wspaniale jeśli miałby być tylko jeden DBGrid. Niestety ja potrzebuję trzy DBGridy (w każdym DBGridzie inna tabela z bazy danych (słowniki)).

I teraz: kiedy już pozaznaczam w pierwszym DBGridzie to co chcę i zaczynam zaznaczać w innym, to ostatnie zaznaczenie w pierwszym DBGridzie mi się odznacza :( Męczę się z tym już parę dni i nie potrafię tego przeskoczyć.

Zmierzył się może ktoś z czym takim i nie poległ i mógłby mi wskazać rozwiązanie? Ustawienie dgPersistentMultiSelect na True nic nie daje. Używam Lazarusa 1.8.4.

PS: korzystam DBGridów, bo nie znalazłem / nie znam innego komponentu, który by się do tego nadawał. Chcę z bazy danych z trzech tabel (słowniki) pobrać dane do np. trzech DBGridów i zaznaczone rekordy w tych DBGridach zapisać w innej tabeli.

Fajne są checkboksy w DBGridzie jednak znalezione w necie rozwiązanie u mnie nie działają, albo ja coś źle robię. Kliknięcie w kolejnego chceckboksa wywala program z komunikatem:

Project Ofum raised exception class 'EZSQLException' with message:
SQL Error: constraint failed
in file: .........\src\dbc\ZDbcSqLiteUtils.pas' at line 232

Pozdrawiam,
Marcin

2

Multiselect w Gridzie to takie sobie rozwiązanie.Sam zresztą widzisz że stwarza problemy.
Twoim problemem jest "trwałe" zaznaczenie w datasecie wybranych wierszy, nie w gridzie, ponieważ grid jest tylko narzędziem wizualizującym treść dataseta.
Ja bym dodał do datasetu "wirtulane" pole służące tylko do tego celu.
Np, tak ...

select field1,field2,field3, ..... , 0 as isSelected from table 

Dla wybranych (zaznaczonych) wierszy datasetu w polu isSelected wstawiasz jakąś niezerową wartość, np. 1, a dalej to już chyba nie muszę tłumaczyć.
Do tego możesz zrobić własne rysowanie grida które kolorem wyróżni zaznaczone wiersze .
Akcje select i unselect rekord w datasecie można zrobić na wiele sposobów, myszką, klawiaturą ...

0

Dzięki za podsunięcie pomysłu pod rozwagę :)

Pozdrawiam,
Marcin

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