Jak korzystać z pól wyboru w DBGrid

Zbliżenie na znak pióra i pola wyboru, strzał studio

Obrazy Tetra/Getty Images





Istnieje wiele sposobów i powodów, aby dostosować dane wyjścioweDBGridw Delfy . Jednym ze sposobów jest dodanie pól wyboru, aby wynik był bardziej atrakcyjny wizualnie.

Domyślnie, jeśli w zestawie danych znajduje się pole logiczne, DBGridwyświetla jejako „Prawda” lub „Fałsz” w zależności od wartości pola danych. Jednak wygląda to znacznie lepiej, jeśli zdecydujesz się użyć „prawdziwej” kontrolki pola wyboru, aby umożliwić edycję pól.



Utwórz przykładową aplikację

Uruchom nowy formularz w Delphi i umieść TDBGrid, TADOTable i TADOConnection, TDataSource.

Pozostaw wszystkie nazwy komponentów bez zmian, gdy zostały po raz pierwszy upuszczone do formularza (DBGrid1, ADOQuery1, AdoTable1 itd.). Użyj Inspektora obiektów, aby ustawić właściwość ConnectionString składnika ADOConnection1 (TADOConnection), aby wskazać przykładową bazę danych QuickiesContest.mdb MS Access.



Podłącz DBGrid1 do DataSource1, DataSource1 do ADOTable1, a na końcu ADOTable1 do ADOConnection1. Właściwość ADOTable1 TableName powinna wskazywać na tabelę Artykuły (aby DBGrid wyświetlał rekordy tabeli Artykuły).

Jeśli poprawnie ustawiłeś wszystkie właściwości, po uruchomieniu aplikacji (zakładając, że właściwość Active składnika ADOTable1 ma wartość True) powinieneś zobaczyć, że domyślnie DBGrid wyświetla wartość pola logicznego jako 'True' lub 'False' w zależności od na wartości pola danych.

Pole wyboru w DBGrid

Aby pokazać pole wyboru w komórce DBGrid, musimy udostępnić nam je w czasie wykonywania.

Wybierz stronę „Kontrola danych” naPaleta komponentówi wybierz Pole wyboru TDB . Upuść jeden w dowolnym miejscu na formularzu - nie ma znaczenia gdzie, ponieważ przez większość czasu będzie niewidoczny lub unosi się nad siatką.



Wskazówka: TDBCheckBox to kontrolka obsługująca dane, która pozwala użytkownikowi wybrać lub odznaczyć pojedynczą wartość, która jest odpowiednia dla pól logicznych.

Następnie ustaw jego właściwość Visible na False. Zmień właściwość Color DBCheckBox1 na ten sam kolor co DBGrid (aby zmieszać się z DBGrid) i usuń podpis.



Co najważniejsze, upewnij się, że DBCheckBox1 jest połączony z DataSource1 i właściwym polem.

Zauważ, że wszystkie powyższe wartości właściwości DBCheckBox1 można ustawić w zdarzeniu OnCreate formularza w następujący sposób:



|_+_|

Najciekawsza część jest następna. Podczas edycji pola logicznego w DBGrid musimy upewnić się, że DBCheckBox1 jest umieszczone nad ('pływającą') komórką w DBGrid wyświetlającą pole logiczne.

W przypadku pozostałych (niezogniskowanych) komórek zawierających pola logiczne (w kolumnie „Zwycięzca”) musimy zapewnić graficzną reprezentację wartości logicznej (Prawda/Fałsz). Oznacza to, że do rysowania potrzebne są co najmniej dwa obrazy: jeden dla stanu zaznaczonego (wartość True) i jeden dla stanu niezaznaczonego (wartość False).



Najłatwiejszym sposobem osiągnięcia tego jest użycie funkcji Windows API DrawFrameControl do rysowania bezpośrednio na kanwie DBGrid.

Oto kod w obsłudze zdarzeń OnDrawColumnCell DBGrid, który występuje, gdy siatka musi pomalować komórkę.

|_+_|

Aby zakończyć ten krok, musimy upewnić się, że DBCheckBox1 jest niewidoczny, gdy wychodzimy z komórki:

|_+_|

Do obsłużenia potrzebujemy jeszcze tylko dwóch zdarzeń.

Zauważ, że w trybie edycji wszystkie naciśnięcia klawiszy trafiają do komórki DBGrid, musimy upewnić się, że są wysyłane do CheckBox. W przypadku CheckBoxa interesuje nas przede wszystkim klawisz [Tab] i [Spacja]. [Tab] powinna przenieść fokus wprowadzania do następnej komórki, a [Spacja] powinna przełączyć stan CheckBox.

|_+_|

Może być właściwe, aby Nagłówek pola wyboru zmieniał się, gdy użytkownik zaznacza lub usuwa zaznaczenie tego pola. Zauważ, że DBCheckBox ma dwie właściwości (ValueChecked i ValueUnChecked) używane do określenia wartości pola reprezentowanej przez pole wyboru, gdy jest zaznaczone lub odznaczone.

Ta właściwość ValueChecked zawiera „Tak, zwycięzca!”, a ValueUnChecked równa się „Nie tym razem”.

|_+_|

Uruchom projekt, a zobaczysz pola wyboru w całej kolumnie pola Zwycięzca.