Anzeigen von Steuerelementen in Rasterspalten

Zusätzlich zum Anzeigen von Felddaten in einem Datenraster können Sie in die Spalten eines Datenrasters Steuerelemente einfügen und so einem Benutzer eingebettete Textfelder, Kontrollkästchen, Dropdown-Listenfelder, Drehfelder und andere Steuerelemente zur Verfügung stellen. Wenn eine Tabelle zum Beispiel ein logisches Feld enthält, kann ein Benutzer bei der Ausführung des Formulars am Kontrollkästchen erkennen, welche Datensatzwerte Wahr (.T.) und welche Falsch (.F.) sind. Der Wert lässt sich mühelos durch Aktivieren oder Deaktivieren des Kontrollkästchens ändern.

Sie können die Steuerelemente zu den Rasterspalten entweder interaktiv im Formular-Designer hinzufügen, oder indem Sie Code schreiben und die Steuerelemente zur Laufzeit hinzufügen.

So fügen Sie Steuerelemente einer Rasterspalte interaktiv hinzu

  1. Fügen Sie einem Formular ein Datenraster hinzu.

  2. Stellen Sie im Eigenschaftenfenster die ColumnCount-Eigenschaft des Datenrasters auf die Anzahl der gewünschten Spalten ein.

    Geben Sie beispielsweise 2 für ein zweispaltiges Datenraster ein.

  3. Wählen Sie im Eigenschaftenfenster die übergeordnete Spalte für das Steuerelement aus dem Objektfeld aus.

    Wählen Sie zum Beispiel Column1 aus, um der Spalte 1 ein Steuerelement hinzuzufügen. Der Rahmen des Datenrasters ändert sich und weist so darauf hin, dass Sie ein eingebettetes Objekt bearbeiten, wenn Sie die Spalte markieren.

  4. Wählen Sie auf der Symbolleiste für Formular-Steuerelemente das gewünschte Steuerelement aus, und klicken Sie auf die übergeordnete Spalte.

    Das neue Steuerelement wird zwar nicht in der Rasterspalte des Formular-Designers angezeigt, doch zur Laufzeit sichtbar sein.

  5. Vergewissern Sie sich im Eigenschaftenfenster, dass das Steuerelement unter der übergeordneten Spalte im Objektlistenfeld angezeigt wird.

    Wenn das neue Steuerelement ein Kontrollkästchen ist, stellen Sie die Caption-Eigenschaft des Kontrollkästchens auf " " und die Sparse-Eigenschaft der Spalte auf Falsch (.F.) ein.

  6. Stellen Sie die ControlSource-Eigenschaft der übergeordneten Spalte auf das gewünschte Tabellenfeld ein.

    In der folgenden Abbildung beispielsweise ist die ControlSource-Eigenschaft der Spalte products.discontinu aus Testdata.dbc im Visual FoxPro-Verzeichnis …\Samples\Data.

  7. Stellen Sie die CurrentControl-Eigenschaft der übergeordneten Spalte auf das neue Steuerelement.

Beim Ausführen des Formulars wird das Steuerelement in der Rasterspalte angezeigt.

Tipp   Wenn Sie ein Kontrollkästchen in einer Rasterspalte zentrieren möchten, erstellen Sie eine Containerklasse, fügen zu dieser ein Kontrollkästchen hinzu und passen dessen Position in der Containerklasse an. Fügen Sie die Containerklasse dann der Rasterspalte hinzu, und stellen Sie die ControlSource-Eigenschaft des Kontrollkästchens auf das gewünschte Feld ein.

So entfernen Sie Steuerelemente im Formular-Designer aus Rasterspalten

  1. Wählen Sie im Objektlistenfeld des Eigenschaftenfensters das zu entfernende Steuerelement aus.

  2. Aktivieren Sie den Formular-Designer.

    Wenn das Eigenschaftenfenster sichtbar ist, wird der Steuerelementname im Objektlistenfeld angezeigt.

  3. Drücken Sie ENTF.

Sie können Steuerelemente einer Rasterspalte auch mit der AddObject-Methode im Code hinzufügen.

So fügen Sie Steuerelemente einer Rasterspalte programmgesteuert hinzu

  • Verwenden Sie im Init-Ereignis des Datenrasters die AddObject-Methode, um der Rasterspalte das Steuerelement hinzuzufügen, und stellen Sie die CurrentControl-Eigenschaft der Spalte ein.

Beispielsweise fügen die folgenden Codezeilen im Init-Ereignis eines Datenrasters einer Rasterspalte zwei Steuerelemente hinzu und legen eines davon als aktuelles Steuerelement fest:

THIS.grcColumn1.AddObject("spnQuantity", "SPINNER")
THIS.grcColumn1.AddObject("cboQuantity", "COMBOBOX")
THIS.grcColumn1.CurrentControl = "spnQuantity"
* The following lines of code make sure the control is visible
* and is diplayed in every row in the grid
THIS.grcColumn1.spnQuantity.Visible = .T.
THIS.grcColumn1.Sparse = .F.

In diesem Beispiel gibt es für Column1 drei mögliche aktuelle Steuerelementwerte:

  • spnQuantity

  • cboQuantity

  • Text1 (das Standardsteuerelement)

    Anmerkung   Auf Datenrasterebene eingestellte Eigenschaften werden nicht an die Spalten oder Kopfzeilen übergeben. Analog müssen Sie die Eigenschaften der Kopfzeilen und eingebetteten Steuerelemente direkt einstellen, da diese ihre Eigenschaften nicht aus Einstellungen auf Spaltenebene erben.

    Tipp   Um die Kombinationsfelder in den Rasterspalten optimal anzuzeigen, stellen Sie beim Kombinationsfeld die folgenden Eigenschaften ein:

    BackStyle = 0      && Transparent
    Margin = 0
    SpecialEffect = 1 && Plain
    BorderStyle = 0      && None
    

Verwenden von bedingter Formatierung in Datenblättern

Durch spezielle Formatierung eines Datenrasters erleichtern Sie einem Benutzer die Aufgabe, die Datensätze im Datenraster nach bestimmten Informationen zu scannen. Zum Erstellen einer bedingten Formatierung verwenden Sie die Eigenschaften einer Spalte, die sich auf dynamische Schrift- und Farbgestaltung beziehen.

Sie können beispielsweise zu einem Formular ein Datenraster hinzufügen und die ColumnCount-Eigenschaft auf 2 einstellen. Stellen Sie außerdem die ControlSource-Eigenschaft der ersten Spalte auf orders.to_name und die ControlSource-Eigenschaft der zweiten Spalte auf orders.order_net ein. Zur Anzeige von Bestellsummen kleiner 500,00 mit schwarzer Vordergrundfarbe und von Bestellsummen größer gleich 500,00 mit roter Vordergrundfarbe beziehen Sie die folgende Zeile in den Init-Ereigniscode des Datenrasters ein:

THIS.Column2.DynamicForeColor = ;
   "IIF(orders.order_net >= 500, RGB(255,0,0), RGB(0,0,0))"

Allgemeine Datenrastereigenschaften

Die folgenden Datenrastereigenschaften werden normalerweise zur Entwurfszeit eingestellt.

Eigenschaft Beschreibung
ChildOrder Der Fremdschlüssel der Detailtabelle ist mit dem Primärschlüssel der Master-Tabelle verknüpft.
ColumnCount Anzahl der Spalten. Wenn die ColumnCount-Eigenschaft auf -1 gestellt ist, besitzt das Datenraster so viele Felder wie die Datensatzquelle (RecordSource-Eigenschaft) des Datenrasters.
LinkMaster Master-Tabelle für die im Datenraster angezeigten Detaildatensätze.
RecordSource Legt die im Datenraster anzuzeigenden Daten fest.
RecordSourceType Quelle der im Datenraster angezeigten Daten:
eine Tabelle, ein Alias, eine Abfrage oder eine Tabelle, die vom Benutzer unter Verwendung einer Eingabeaufforderung ausgewählt wurde.

Allgemeine Spalteneigenschaften

Die folgenden Spalteneigenschaften werden normalerweise zur Entwurfszeit eingestellt.

Eigenschaft Beschreibung
ControlSource Legt die in der Spalte anzuzeigenden Daten fest. Hierbei handelt es sich häufig um ein Feld in einer Tabelle.
Sparse Wenn Sparse auf Wahr (.T.) eingestellt ist, werden Steuerelemente in einem Datenraster nur dann als Steuerelemente angezeigt, wenn die Zelle in der Spalte ausgewählt ist. Andere Zellen in der Spalte zeigen den zugrunde liegenden Datenwert in einem Textfeld an. Die Sparse-Einstellung Wahr (.T.) ermöglicht eine schnellere Aktualisierung, wenn ein Benutzer einen Bildlauf durch ein Datenraster mit vielen angezeigten Zeilen durchführt.
CurrentControl Legt fest, welches Steuerelement im Datenraster aktiv ist. Die Standardeinstellung ist Text1. Wenn Sie der Spalte jedoch ein Steuerelement hinzufügen, können Sie dieses als CurrentControl festlegen.

Anmerkung   Die ReadOnly-Eigenschaft eines Steuerelements innerhalb der Spalte wird durch die ReadOnly-Eigenschaft der Spalte außer Kraft gesetzt. Wenn Sie die ReadOnly-Eigenschaft des Steuerelements in einer Spalte in dem mit dem AfterRowColChange-Ereignis verbundenen Code einstellen, wird die neue Einstellung gültig, während diese Zelle aktiv ist.

Siehe auch

Einrichten eines auf einer 1:n-Beziehung basierenden Formulars mit einem Datenraster-Steuerelement | Erleichtern der Verwendung von Steuerelementen | Verwenden von Steuerelementen | Erweitern von Formularen | Formular-Designer | Steuerelemente und Objekte