Computerwissenschaften

Dropdown-Liste in einem DBGrid

So platzieren Sie eine Dropdown-Auswahlliste in einem DBGrid. Erstellen Sie visuell attraktivere Benutzeroberflächen zum Bearbeiten von Suchfeldern in einem DBGrid – mithilfe der PickList-Eigenschaft einer DBGrid-Spalte.

Nachdem Sie nun wissen, was Nachschlagefelder sind und welche Möglichkeiten es gibt, ein Nachschlagefeld in Delphis DBGrid anzuzeigen, ist es an der Zeit, die PickList-Eigenschaft einer DGBrid-Spalte zu verwenden, damit ein Benutzer einen Wert für a auswählen kann Suchfeld aus einem Dropdown-Listenfeld.

 

Eine Kurzinfo zur DBGrid-Spalteneigenschaft

Ein DBGrid- Steuerelement verfügt über eine Columns-Eigenschaft – eine Sammlung von TColumn-Objekten, die alle Spalten in einem Rastersteuerelement darstellen. Spalten können zur Entwurfszeit über den Spalteneditor oder programmgesteuert zur Laufzeit festgelegt werden. Normalerweise fügen Sie einem DBGird Spalten hinzu, wenn Sie definieren möchten, wie eine Spalte angezeigt wird, wie die Daten in der Spalte angezeigt werden und zur Laufzeit auf die Eigenschaften, Ereignisse und Methoden von TDBGridColumns zugreifen möchten. Mit einem benutzerdefinierten Raster können Sie mehrere Spalten konfigurieren, um unterschiedliche Ansichten desselben Datasets anzuzeigen (z. B. unterschiedliche Spaltenreihenfolgen, unterschiedliche Feldauswahlmöglichkeiten sowie unterschiedliche Spaltenfarben und Schriftarten).

Jetzt wird jede Spalte in einem Raster mit einem Feld aus einem im Raster angezeigten Datensatz „verknüpft“. Darüber hinaus verfügt jede Spalte über eine PickList-Eigenschaft. Die PickList-Eigenschaft listet Werte auf, die der Benutzer für den verknüpften Feldwert der Spalte auswählen kann.

 

Ausfüllen der Auswahlliste

Hier erfahren Sie, wie Sie diese Zeichenfolgenliste zur Laufzeit mit Werten aus einem anderen Dataset füllen.
Denken Sie daran, dass wir die Artikeltabelle bearbeiten und dass ein Betrefffeld nur Werte aus der Betreff-Tabelle akzeptieren kann: die ideale Situation für die Auswahlliste!

So richten Sie die PickList-Eigenschaft ein. Zunächst fügen wir der SetupGridPickList-Prozedur im OnCreate-Ereignishandler des Formulars einen Aufruf hinzu.

Prozedur TForm1.FormCreate (Absender: TObject); 
begin
 SetupGridPickList ('Subject', 'SELECT Name FROM Subjects'); 
Ende ;

Der einfachste Weg, die SetupGridPickList-Prozedur zu erstellen, besteht darin, zum privaten Teil der Formulardeklaration zu wechseln, die Deklaration dort hinzuzufügen und die Tastenkombination STRG + UMSCHALT + C zu drücken.

... 
Typ
 TForm1=class (TForm) 
... 
 privateprocedure SetupGridPickList ( 
 konst Feldname: Zeichenfolge ; 
 const sql: String ); 
 öffentlich
 ...

Hinweis: Die Prozedur SetupGridPickList akzeptiert zwei Parameter. Der erste Parameter, FieldName, ist der Name des Feldes, das als Suchfeld verwendet werden soll. Der zweite Parameter, SQL, ist der SQL-Ausdruck, mit dem die Auswahlliste mit möglichen Werten gefüllt wird. Im Allgemeinen sollte der SQL-Ausdruck ein Dataset mit nur einem Feld zurückgeben.

So sieht die SetupGridPickList aus:

procedure TForm1.SetupGridPickList ( const FieldName, sql: string ); 
var 
 slPickList: TStringList; 
Abfrage: TADOQuery; 
i: ganze Zahl; 
begin
 slPickList:=TStringList.Create; 
Abfrage:=TADOQuery.Create (self); 
 versuchen Sie
 Query.Connection:=ADOConnection1; 
Query.SQL.Text:=sql; 
Query.Open; 
 Füllen Sie // die String - Liste , während  nicht Query.EOF dobegin
 slPickList.Add (Query.Fields [0] .AsString); 
Query.Next; 
 Ende ; // während 
 // legen Sie die Liste es die richtige Spalte für i:=0 bis DBGrid1.Columns.Count-1 tun ,  
 wenn DBGrid1.Columns [i] .FieldName=Field thenbegin
 DBGrid1.Columns [i] .PickList:=slPickList; 
Brechen; 
 Ende ; 
 endlich
 slPickList.Free; 
Query.Free; 
 Ende ; 
Ende ; (* SetupGridPickList *)

Das ist es. Wenn Sie nun auf die Spalte Betreff klicken (um in den Bearbeitungsmodus zu gelangen).

Hinweis 1: Standardmäßig werden in der Dropdown-Liste 7 Werte angezeigt. Sie können die Länge dieser Liste ändern, indem Sie die DropDownRows-Eigenschaft festlegen.

Hinweis 2: Nichts hindert Sie daran, die Auswahlliste aus einer Liste von Werten zu füllen, die nicht aus einer Datenbanktabelle stammen. Wenn Sie beispielsweise ein Feld haben, das nur Wochentagsnamen akzeptiert (‚Montag‘, …, ‚Sonntag‘), können Sie eine „fest codierte“ Auswahlliste erstellen.

„Äh, ich muss 4 Mal auf die Auswahlliste klicken …“

Beachten Sie, dass Sie beim Bearbeiten des Felds, in dem eine Dropdown-Liste angezeigt wird, viermal auf die Zelle klicken müssen, um tatsächlich einen Wert aus einer Liste auszuwählen. Das nächste Code-Snippet, das dem OnCellClick-Ereignishandler des DBGrid hinzugefügt wurde, ahmt einen Treffer auf die Taste F2 nach, gefolgt von Alt + DownArrow.

Prozedur TForm1.DBGrid1CellClick (Spalte: TColumn); 
begin // Die Dropdown- Auswahlliste wird schneller angezeigt, wenn Column.PickList.Count> 0 thenbegin
 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); 
 Ende ; 
Ende ;

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.