Oto jak umieścić rozwijaną listę wyboru w DBGrid. Twórz bardziej atrakcyjne wizualnie interfejsy użytkownika do edycji pól wyszukiwania w DBGrid - za pomocą właściwości PickList kolumny DBGrid.
Teraz, kiedy wiesz, co to są pola wyszukiwania i jakie są opcje wyświetlania pola wyszukiwania DelfyDBGrid, nadszedł czas, aby zobaczyć, jak korzystać z właściwości PickList kolumny DGBrid, aby umożliwić użytkownikowi wybranie wartości dla pola odnośnika z rozwijanego pola listy.
Krótka informacja na temat właściwości kolumn DBGrid
ZA DBGrid Formant ma właściwość Kolumny - zbiór obiektów TColumn reprezentujących wszystkie kolumny w kontrolce siatki. Kolumny można ustawić w czasie projektowania za pomocą edytora Kolumny lub programowo w czasie wykonywania. Zazwyczaj dodajesz Kolumny do DBGird, gdy chcesz zdefiniować wygląd kolumny, sposób wyświetlania danych w kolumnie oraz dostęp do właściwości, zdarzeń i metod TDBGridColumns w czasie wykonywania. Dostosowana siatka umożliwia skonfigurowanie wielu kolumn w celu przedstawienia różnych widoków tego samego zestaw danych (różne kolejność kolumn, różne opcje pól oraz różne kolory i czcionki kolumn dla przykład).
Teraz każda kolumna w siatce jest „połączona” z polem z zestawu danych wyświetlanego w siatce. Co więcej, każda kolumna ma właściwość PickList. Właściwość PickList zawiera wartości, które użytkownik może wybrać dla połączonej wartości pola kolumny.
Wypełnianie listy wyboru
Dowiesz się tutaj, jak wypełnić tę listę ciągów wartościami z innego zestawu danych w czasie wykonywania.
Przypomnijmy, że edytujemy tabelę artykułów i że pole tematu może akceptować tylko wartości z tabeli przedmiotów: idealna sytuacja dla listy wyboru!
Oto jak skonfigurować właściwość PickList. Najpierw dodajemy wywołanie do procedury SetupGridPickList w module obsługi zdarzeń OnCreate formularza.
procedura TForm1.FormCreate (Sender: TObject);
zaczynać
SetupGridPickList („Subject”, „SELECT Name FROM Subjects”);
koniec;
Najprostszym sposobem na utworzenie procedury SetupGridPickList jest przejście do prywatnej części deklaracji formularza, dodaj deklarację i wciśnij kombinację klawiszy CTRL + SHIFT + C - uzupełnianie kodu w Delphi zrobi to odpoczynek:
...
rodzaj
TForm1 = klasa (TForm)
...
procedura prywatna SetupGridPickList (
const Nazwa pola: strunowy;
const sql: strunowy);
publiczny
...
Uwaga: procedura SetupGridPickList przyjmuje dwa parametry. Pierwszy parametr, FieldName, to nazwa pola, które chcemy działać jak pole odnośnika; drugim parametrem, SQL, jest wyrażenie SQL, którego używamy do zapełniania listy wyboru możliwymi wartościami - ogólnie wyrażenie SQL powinno zwracać zestaw danych zawierający tylko jedno pole.
Oto jak wygląda SetupGridPickList:
procedura TForm1.SetupGridPickList (const FieldName, sql: strunowy);
var
slPickList: TStringList;
Zapytanie: TADOQuery;
i: liczba całkowita;
zaczynać
slPickList: = TStringList. Stwórz;
Zapytanie: = TADOQuery. Utwórz (siebie);
próbować
Pytanie. Połączenie: = ADOConnection1;
Pytanie. SQL.Text: = sql;
Pytanie. Otwarty;
// Wypełnij listę ciągówpodczasnie Pytanie. EOF dobegin
slPickList. Dodaj (zapytanie. Pola [0] .AsString);
Pytanie. Kolejny;
koniec; //while
// umieść listę w odpowiedniej kolumniedla i: = 0 do DBGrid1.Columns. Count-1 robić
gdyby DBGrid1.Columns [i] .FieldName = NazwaPola wtedy zacznij
DBGrid1.Columns [i] .PickList: = slPickList;
Przerwa;
koniec;
Wreszcie
slPickList. Darmowy;
Pytanie. Darmowy;
koniec;
koniec; (* SetupGridPickList *)
Otóż to. Teraz, po kliknięciu kolumny Temat (aby przejść do trybu edycji).
Uwaga 1: domyślnie lista rozwijana wyświetla 7 wartości. Możesz zmienić długość tej listy, ustawiając właściwość DropDownRows.
Uwaga 2: nic nie stoi na przeszkodzie, aby wypełnić PickList z listy wartości nie pochodzących z tabeli bazy danych. Jeśli na przykład masz pole, które akceptuje tylko nazwy dni powszednich („poniedziałek”,…, „niedziela”), możesz zbudować „zakodowaną” listę wyboru.
„Muszę kliknąć 4 razy PickList ...”
Pamiętaj, że jeśli chcesz edytować pole z rozwijaną listą, musisz kliknąć komórkę 4 razy, aby faktycznie wybrać wartość z listy. Następny fragment kodu, dodany do modułu obsługi zdarzeń OnCellClick DBGrid, naśladuje trafienie w klawisz F2, a następnie Alt + Strzałka w dół.
procedura TForm1.DBGrid1CellClick (kolumna: TColumn);
zaczynać// Przyspieszenie wyświetlania listy rozwijanejgdyby Kolumna. Lista wyboru. Liczba> 0 wtedy zacznij
keybd_event (VK_F2,0,0,0);
keybd_event (VK_F2,0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0,0,0);
keybd_event (VK_DOWN, 0,0,0);
keybd_event (VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0, KEYEVENTF_KEYUP, 0);
koniec;
koniec;