Freigeben über


Erleichtern der Verwendung von Steuerelementen

Vermutlich möchten Sie es den Benutzern so einfach wie möglich machen, Ihre Steuerelemente zu verstehen und einzusetzen. Zugriffstasten, Aktivierfolge, QuickInfo-Text und selektives Deaktivieren sind wichtige Mittel für einen benutzerfreundlichen Entwurf.

Festlegen von Zugriffstasten

Unter Verwendung von Zugriffstasten können Benutzer Steuerelemente von einer beliebigen Stelle im Formular auswählen, indem sie die ALT-TASTE und die jeweilige Taste drücken.

So legen Sie eine Zugriffstaste für ein Steuerelement fest

  • Setzen Sie in der Caption-Eigenschaft für das Steuerelement einen umgekehrten Schrägstrich und ein Kleiner-als-Zeichen (\<) vor den als Zugriffstaste gewünschten Buchstaben.

Beispielsweise legt die folgende Caption-Einstellung für die Beschriftung einer Befehlsschaltfläche f als Zugriffstaste fest.

\<Open

Benutzer können die Befehlsschaltfläche an beliebiger Stelle des Formulars auswählen, indem sie ALT+O drücken.

So legen Sie eine Zugriffstaste für ein Textfeld oder ein Bearbeitungsfeld fest

  1. Erstellen Sie eine Beschriftung mit einem umgekehrten Schrägstrich und einem Kleiner-als-Zeichen (\<) vor dem gewünschten Buchstaben, wie z. B. bei C\<ustomer.
  2. Achten Sie darauf, dass sich die Beschriftung in der Aktivierfolge direkt vor dem Textfeld bzw. dem Bearbeitungsfeld befindet, das den Fokus erhalten soll.

Festlegen der Aktivierfolge von Steuerelementen

Die Standardaktivierfolge von Steuerelementen in Ihrem Formular ist die Reihenfolge, in der Sie diese Elemente zum Formular hinzugefügt haben.

Tipp   Legen Sie die Aktivierfolge von Steuerelementen so fest, dass der Benutzer sich mühelos in einer logischen Reihenfolge durch Ihre Steuerelemente bewegen kann.

So ändern Sie die Aktivierfolge von Steuerelementen

  1. Klicken Sie auf der Symbolleiste für den Formular-Designer auf die Schaltfläche Aktivierreihenfolge bestimmen.
  2. Doppelklicken Sie auf das Feld neben dem Steuerelement, das beim Öffnen des Formulars den Anfangsfokus besitzen soll.
  3. Klicken Sie neben die anderen Steuerelemente in der Reihenfolge, in der Sie später mit TAB gelangen möchten.
  4. Um den Vorgang abzuschließen, klicken Sie auf eine beliebige Stelle außerhalb der Felder für die Aktivierreihenfolge.

Je nach der Einstellung in der Registerkarte Formulare des Dialogfeldes Optionen können Sie die Aktivierfolge für die Objekte Ihres Formulars auch nach Liste festlegen.

Sie können für die Optionsfelder und Befehlsschaltflächen innerhalb einer Steuerelementgruppe eine Auswahlfolge festlegen. Wenn der Benutzer eine Steuerelementgruppe mit der Tastatur ansteuern möchte, kann er mit TAB zu dem ersten Feld oder der ersten Schaltfläche wechseln und dann mit den Pfeiltasten andere Schaltflächen innerhalb der Steuerelementgruppe auswählen.

So ändern Sie die Auswahlfolge von Feldern/Schaltflächen innerhalb einer Steuerelementgruppe

  1. Wählen Sie im Eigenschaftenfenster die Gruppe aus dem Objektlistenfeld. Mit einem dicken Rahmen wird angezeigt, dass sich die Gruppe im Bearbeitungsmodus befindet.
  2. Wählen Sie das Fenster Formular-Designer aus.
  3. Wählen Sie aus dem Menü Ansicht den Befehl Aktivierfolge.
  4. Stellen Sie die Auswahlfolge so ein, wie Sie die Aktivierfolge von Steuerelementen festlegen würden.

Einstellen des QuickInfo-Textes

Jedes Steuerelement verfügt über die ToolTipText-Eigenschaft, mit der Sie den Text festlegen können, der angezeigt wird, wenn der Benutzer den Mauszeiger über das Steuerelement bewegt. QuickInfos sind besonders zweckmäßig bei Schaltflächen, die Symbole statt Text anzeigen.

So legen Sie QuickInfo-Text fest

  • Wählen Sie im Eigenschaftenfenster die ToolTipText-Eigenschaft aus, und geben Sie den gewünschten Text ein.

Die ShowTips-Eigenschaft des Formulars legt fest, ob QuickInfo-Text angezeigt wird.

Ändern des Mauszeigers

Um den Benutzer auf die verschiedenen aktuellen Zustände der Anwendung visuell hinzuweisen, können Sie die Anzeige des Mauszeigers ändern.

In der tsBaseForm-Klasse der Beispielanwendung Tasmanische Handelsgesellschaft ändert beispielsweise die WaitMode-Methode den Mauszeiger und zeigt den Standardcursor für den Wartezustand an. Vor der Ausführung von Code, für dessen Verarbeitung längere Zeit benötigt wird, übergibt diese Beispielanwendung der WaitMode-Methode den Wert Wahr (.T.) und ändert dadurch den Mauszeiger, so dass der Benutzer darüber informiert ist, dass die Verarbeitung noch nicht abgeschlossen ist. Nach dem Ende der Verarbeitung wird der Standardmauszeiger durch einen Aufruf der WaitMode-Methode mit dem Wert Falsch (.F.) wiederhergestellt.

* WaitMode Method of tsBaseForm class
LPARAMETERS tlWaitMode

lnMousePointer = IIF(tlWaitMode, MOUSE_HOURGLASS, MOUSE_DEFAULT)
THISFORM.MousePointer = lnMousePointer
THISFORM.SetAll('MousePointer', lnMousePointer)

Wenn Sie keinen Standardmauszeiger verwenden möchten, setzen Sie die MousePointer-Eigenschaft auf 99 - Custom, und stellen Sie die MousePointer-Eigenschaft auf Ihre eigene Cursordatei (CUR) bzw. auf Ihre eigene Symboldatei (ICO) ein.

Aktivieren und Deaktivieren von Steuerelementen

Wenn die Funktionalität eines Steuerelements in einer bestimmten Situation nicht verfügbar ist, stellen Sie dessen Enabled-Eigenschaft auf Falsch (.F.) ein.

Aktivieren und Deaktivieren von Schaltflächen in einer Gruppe

Sie können einzelne Optionsfelder oder Befehlsschaltflächen in einer Gruppe aktivieren oder deaktivieren, indem Sie die Enabled-Eigenschaft jeder dieser Schaltflächen entweder auf Wahr (.T.) oder auf Falsch (.F.) einstellen. Es ist auch möglich, alle Schaltflächen in einer Gruppe zu deaktivieren oder zu aktivieren, indem Sie die Enabled-Eigenschaft der Gruppe wie in der folgenden Codezeile einstellen:

frmForm1.cmgCommandGroup1.Enabled = .T.

Wenn Sie die Enabled-Eigenschaft einer Optionsgruppe oder einer Befehlsschaltflächen-Gruppe auf Falsch (.F.) einstellen, werden alle Schaltflächen der Gruppe deaktiviert, jedoch nicht mit den deaktivierten Farbeigenschaften und ForeColor und BackColor angezeigt. Durch das Einstellen der Enabled-Eigenschaft für die Gruppe wird die Enabled-Eigenschaft der einzelnen Schaltflächen in der Gruppe nicht geändert. Dies gibt Ihnen die Möglichkeit, eine Gruppe von Schaltflächen zu deaktivieren, in der einige Schaltflächen bereits deaktiviert sind. Wenn Sie die Gruppe aktivieren, bleiben ursprünglich deaktivierte Schaltflächen weiterhin deaktiviert.

Falls Sie sämtliche Schaltflächen in einer Gruppe deaktivieren möchten, damit sie deaktiviert angezeigt werden, und falls Sie Informationen darüber, welche Schaltflächen ursprünglich deaktiviert oder aktiviert waren, nicht beibehalten möchten, können Sie die SetAll-Methode der Gruppe folgendermaßen verwenden:

frmForm1.opgOptionGroup1.SetAll("Enabled", .F.)

Zulassen der Drag & Drop-Textbearbeitung für Benutzer

Beim Entwerfen von Visual FoxPro-Anwendungen können Sie Text, Dateien und Objekte aus der Komponentensammlung, dem Projekt-Manager, dem Datenbank-Designer und dem Datenumgebungs-Designer an die gewünschten Positionen in Formularen und Berichten ziehen. Sie können Ihren Benutzern die Drag & Drop-Funktionalität von Visual FoxPro auch zur Laufzeit zur Verfügung stellen.

Die Möglichkeiten von Drag & Drop reichen bis zu Vorgängen mit mehreren Formularen. Der Benutzer kann Text, Dateien und Steuerelemente an jede Stelle auf dem Formular und auch auf andere Formulare ziehen.

Unter Visual FoxPro werden jetzt zwei Drag & Drop-Typen unterstützt: OLE-Drag & Drop und Control-Drag & Drop. OLE-Drag & Drop ermöglicht es Ihnen, Daten zwischen anderen Anwendungen, die OLE-Drag & Drop unterstützen (wie z. B. Visual FoxPro, Visual Basic, dem Windows-Explorer, Microsoft Word und Excel), zu verschieben. Unter einer installierten Visual FoxPro-Anwendung können Sie Daten zwischen Steuerelementen innerhalb der Anwendung oder zwischen Steuerelementen und anderen Windows-Anwendungen verschieben, die OLE-Drag & Drop unterstützen.

Mit Control-Drag & Drop können Sie Visual FoxPro-Steuerelemente innerhalb Ihrer Visual FoxPro-Anwendungen verschieben. Control-Drag & Drop wird ebenfalls unter früheren Versionen von Visual FoxPro unterstützt. Während der Benutzer ein Steuerelement zieht, blendet Visual FoxPro einen grauen Umriss von der Größe des Objekts ein, der zusammen mit dem Mauszeiger verschoben wird. Sie können dieses Standardverhalten außer Kraft setzen, indem Sie für die DragIcon-Eigenschaft eines Steuerelements eine Cursordatei (CUR) festlegen.

In diesem Abschnitt wird Control-Drag & Drop beschrieben. Weitere Informationen zu OLE-Drag & Drop finden Sie in Kapitel 31, "Interoperabilität im Internet", im Abschnitt OLE-Drag & Drop.

So zeigen Sie Beispiele für die Verwendung von Drag & Drop an

  1. Führen Sie Solution.app im Visual FoxPro-Verzeichnis …\Samples\Microsoft Visual FoxPro 7\Solution aus.

  2. Klicken Sie in der Strukturansicht auf Steuerelemente, und klicken Sie dann auf Objekt.

    Anmerkung   Beim Ziehen eines Steuerelements zur Laufzeit wird dessen Position nicht automatisch geändert. Sie müssen die Neupositionierung selbst programmieren. Eine entsprechende Beschreibung finden Sie im Abschnitt "Bewirken einer Steuerelementverschiebung in einem Drag & Drop-Vorgang". Das Ziehen wird häufig nur verwendet, um eine bestimmte Aktion auszuführen. Nach dem Loslassen der Maustaste nimmt das Steuerelement seine ursprüngliche Position wieder ein.

Mit Hilfe der folgenden Eigenschaften, Ereignisse und Methoden für Drag & Drop können Sie die Wirkung eines Ziehvorgangs angeben und außerdem festlegen, wie das Ziehen bei einem bestimmten Steuerelement (sofern gewünscht) initialisiert wird.

Aufgabenstellung Verwenden Sie dieses Merkmal
Automatisches oder manuelles Ziehen eines Steuerelements zulassen. DragMode-Eigenschaft
Das Symbol angeben, das beim Ziehen des Steuerelements angezeigt wird. DragIcon-Eigenschaft
Erkennen, wann ein Steuerelement auf einem Objekt abgelegt wird. DragDrop-Ereignis
Erkennen, wann ein Steuerelement über ein Objekt gezogen wird. DragOver-Ereignis
Manuelles Ziehen starten oder beenden. Drag-Methode

Alle visuellen Steuerelemente können zur Laufzeit gezogen werden, und alle Steuerelemente verfügen gemeinsam über die in der vorstehenden Tabelle aufgelisteten Eigenschaften. Formulare erkennen zwar die Ereignisse DragDrop und DragOver, besitzen jedoch keine Eigenschaften DragMode und DragIcon.

Aktivieren des automatischen Ziehmodus

Wenn der Benutzer die Möglichkeit erhalten soll, ein Steuerelement zu ziehen, nachdem er auf dieses geklickt hat, setzen Sie die DragMode-Eigenschaft auf 1. Hierdurch wird das automatische Ziehen des Steuerelements aktiviert. Wenn Sie das Ziehen auf Automatic einstellen, ist der Ziehmodus immer aktiviert.

Anmerkung   Während ein automatischer Ziehvorgang abläuft, erkennt das gezogene Steuerelement keine anderen Mausereignisse.

Reagieren, wenn der Benutzer das Objekt ablegt

Wenn der Benutzer die Maustaste loslässt, nachdem er ein Steuerelement gezogen hat, erzeugt Visual FoxPro ein DragDrop-Ereignis. Es gibt viele Möglichkeiten, auf dieses Ereignis zu reagieren. Sie können das Steuerelement an die neue Position verschieben, die durch die letzte Position des grauen Umrisses bezeichnet wird. Denken Sie daran, dass das Steuerelement nicht automatisch an die neue Position verschoben wird.

Im Zusammenhang mit Drag & Drop-Vorgängen gibt es zwei wichtige Begriffe:

Begriff Bedeutung
Quelle Spricht das Steuerelement an, das gezogen wird.
Ziel Bezeichnet das Objekt, auf dem der Benutzer das Steuerelement ablegt. Dieses Objekt (ein Formular oder Steuerelement) erkennt das DragDrop-Ereignis.

Ein Steuerelement ist das Ziel, wenn sich der Mauszeiger beim Loslassen der Maustaste innerhalb der Begrenzung des Steuerelements befindet. Ein Formular ist das Ziel, wenn sich der Mauszeiger in einem freien Bereich des Formulars befindet.

Das DragDrop-Ereignis empfängt drei Parameter: oSource, nXCoord und nYCoord. Der Parameter oSource ist ein Bezug auf das Steuerelement, das auf dem Ziel abgelegt wurde. Die Parameter nXCoord und nYCoord enthalten die horizontale bzw. vertikale Koordinate des Mauszeigers innerhalb des Zieles.

Da es sich bei oSource um ein Objekt handelt, können Sie es wie ein Steuerelement verwenden. Sie können auf die zugehörigen Eigenschaften verweisen oder eine zugehörige Methode aufrufen. Beispielsweise prüfen die folgenden Anweisungen in dem mit dem DragDrop-Ereignis verbundenen Code, ob der Benutzer ein Steuerelement auf dem Element selbst abgelegt hat:

LPARAMETERS oSource, nXCoord, nYCoord
IF oSource.Name != THIS.Name
   * Take some action.
ELSE
   * Control was dropped on itself.
   * Take some other action.
ENDIF

Alle für oSource möglichen Steuerelementtypen besitzen eine Visible-Eigenschaft. Deshalb können Sie ein Steuerelement unsichtbar machen, wenn es auf einem bestimmten Teil eines Formulars oder auf einem anderen Steuerelement abgelegt wird. Die folgende Zeile in dem mit dem DragDrop-Ereignis eines Abbildungs-Steuerelements verbundenen Code bewirkt, dass ein gezogenes Steuerelement beim Ablegen auf der Abbildung unsichtbar wird:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Visible = .F.

Hinweisen auf gültige Dropzonen

Beim Aktivieren von Drag & Drop können Sie Ihren Benutzern helfen, indem Sie visuelle Hinweise einbeziehen. Hierzu ändern Sie am besten in dem mit dem DragOver-Ereignis verbundenen Code die DragIcon-Eigenschaft der Quelle.

Der folgende Code im DragOver-Ereignis eines Steuerelements weist einen Benutzer darauf hin, dass das Steuerelement kein gültiges Dropziel ist. In diesem Beispiel ist cOldIcon eine benutzerdefinierte Eigenschaft des Formulars.

LPARAMETERS oSource, nXCoord, nYCoord, nState
DO CASE
   CASE nState = 0 && Enter
      THISFORM.cOldIcon = oSource.DragIcon
      oSource.DragIcon = "NODROP01.CUR"
   CASE nState = 1 && Leave
      oSource.DragIcon = THISFORM.cOldIcon
ENDCASE

Steuern des Beginns und des Endes des Ziehvorgangs

Die Einstellung "Manual" der DragMode-Eigenschaft ermöglicht Ihnen eine bessere Steuerung als die Einstellung "Automatic". Mit der Einstellung "Manual" können Sie festlegen, wann ein Steuerelement gezogen werden kann und wann nicht. (Wenn DragMode auf "Automatic" eingestellt ist, kann das Steuerelement immer gezogen werden, sofern die Einstellung nicht geändert wird.)

So möchten Sie beispielsweise das Ziehen als Reaktion auf Ereignisse MouseDown und MouseUp oder als Reaktion auf einen Tastatur- oder Menübefehl aktivieren. Die Einstellung "Manual" ermöglicht es Ihnen außerdem, ein MouseDown-Ereignis vor Beginn des Ziehens zu erkennen, so dass Sie die Mauszeigerposition speichern können.

Wenn Sie das Ziehen mit Hilfe von Code aktivieren möchten, behalten Sie für die DragMode-Eigenschaft die Standardeinstellung (0 - Manual) bei. Verwenden Sie dann die Drag-Methode immer, wenn Sie das Ziehen eines Objekts beginnen oder beenden möchten:

container.control.Drag(nAction)

Wenn nAction gleich 1 ist, startet die Drag-Methode das Ziehen des Steuerelements. Ist nAction gleich 2, wird das Steuerelement abgelegt und ein DragDrop-Ereignis ausgelöst. Der Wert 0 für nAction bricht das Ziehen ab. Die Wirkung ist ähnlich wie bei dem Wert 2. Allerdings tritt kein DragDrop-Ereignis ein.

Anmerkung   Wenn Sie Drag & Drop aus einem Listenfeld aktivieren möchten, rufen Sie die Drag-Methode am besten in dem Code auf, der mit dem MouseMove-Ereignis des Quelllistenfeldes verbundenen ist, nachdem Sie festgelegt haben, dass die Maustaste gedrückt ist. Ein Beispiel finden Sie in der Datei Lmover.scx im Visual FoxPro-Verzeichnis …\Samples\Solution\Controls\Lists aus.

Bewirken einer Steuerelementverschiebung in einem Drag & Drop-Vorgang

Vermutlich möchten Sie, dass das Quellsteuerelement seine Position ändert, nachdem der Benutzer die Maustaste losgelassen hat. Mit der Move-Methode bewirken Sie, dass ein Steuerelement zu der neuen Mauszeigerposition verschoben wird. Beispielsweise verschiebt der folgende Code im DragDrop-Ereignis eines Formulars das gezogene Steuerelement zu seiner Ablegeposition:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Move(nXCoord, nYCoord)

Mit diesem Code erzielen Sie möglicherweise nicht die erwünschte Wirkung, da sich der Mauszeiger an der oberen linken Ecke des Steuerelements befindet. Der folgende Code richtet die Mitte des Steuerelements an der Mauszeigerposition aus:

LPARAMETERS oSource, nXCoord, nYCoord
oSource.Move ((nXCoord – oSource.Width / 2), ;
   (nYCoord – oSource.Height / 2))

Dieser Code funktioniert am besten, wenn die DragIcon-Eigenschaft auf einen anderen Wert als den Standardwert (das graue Rechteck) eingestellt wird. Wird das graue Rechteck verwendet, möchte der Benutzer das Steuerelement normalerweise exakt in die Endposition des Rechtecks verschieben. Zeichnen Sie zu diesem Zweck die Ausgangsposition des Mauszeigers im Quellsteuerelement auf. Verwenden Sie diese Position dann als Versatz beim Verschieben des Steuerelements. Ein Beispiel hierfür finden Sie in der Datei Ddrop.scx im Visual FoxPro-Verzeichnis …\Samples\Solution\Forms.

So zeichnen Sie die Ausgangsposition des Mauszeigers auf

  1. Legen Sie manuelles Ziehen des Steuerelements fest.
  2. Deklarieren Sie zwei Variablen auf Formularebene, nDragX und nDragY.
  3. Aktivieren Sie das Ziehen, wenn ein MouseDown-Ereignis auftritt. Speichern Sie in diesem Fall den Wert von nXCoord und nYCoord in den entsprechenden Eigenschaften des Formulars.
  4. Deaktivieren Sie das Ziehen, wenn ein MouseUp-Ereignis auftritt.

Siehe auch

Anzeigen von Steuerelementen in Rasterspalten | Erweitern von Formularen | Verwenden von Steuerelementen | Caption-Eigenschaft | Eigenschaftenfenster | Steuerelemente und Objekte