Freigeben über


MFC-ActiveX-Steuerelemente: Verwenden der Datenbindung in einem ActiveX-Steuerelement

Ein aus dem leistungsstarkeren Verwendung von ActiveX-Steuerelementen ist Datenbindung, die eine Eigenschaft des Steuerelements zur Bindung mit einem bestimmten Feld in einer Datenbank ermöglicht.Wenn ein Benutzer Daten in dieser gebundenen Eigenschaft geändert wird, weist das Steuerelement die Datenbank und die Anforderungen, dass das Datensatzfeld aktualisiert wird.Die Datenbank informiert dann das Steuerelement des Erfolgs oder Misserfolg zu der Anforderung.

Dieser Artikel enthält die Seite Steuerelements der Aufgabe.Die Datenbindung interaktionen mit der Datenbank zu implementieren ist die Verantwortung des Steuerelementcontainers.Wie Sie die Datenbank interaktionen im Container verwalten, liegt außerhalb des Rahmens dieser Dokumentation.Wie Sie vorbereiten, wird das Steuerelement für die Datenbindung im Rest dieses Artikels erläutert.

Konzeptionelles Diagramm eines datengebundenen Steuerelements

Datengebundenes Steuerelement

Die COleControl-Klasse stellt zweiköpfige Funktionen, die Datenbindung einen einfachen Prozess implementieren können.Die erste BoundPropertyRequestEdit-Funktion wird verwendet, um Berechtigungen anzufordern, den Eigenschaftswert zu ändern.BoundPropertyChanged, die zweite Funktion wird aufgerufen, nachdem der Eigenschaftswert erfolgreich geändert wurde.

Dieser Artikel enthält die folgenden Themen:

  • Eine bindbare Basiseigenschaft erstellen

  • Eine bindbare Get/set-Methode für erstellen

Eine bindbare Basiseigenschaft erstellen

Es ist möglich, eine datengebundene Basiseigenschaft zu erstellen, obwohl es wahrscheinlicher ist, dass Sie Rufen Sie bindbar ab, bzw. legen Sie Methode fest soll.

HinweisHinweis

Vordefinierte Eigenschaften werden als Attribute standardmäßig bindable und requestedit.

So erstellen Sie eine bindbare Basiseigenschaft mithilfe des Assistenten zum Hinzufügen von Eigenschaften hinzufügen

  1. Beginnen Sie ein Projekt mit MFC-ActiveX-Steuerelement-Assistent.

  2. Klicken Sie mit der rechten Maustaste auf den Knoten Schnittstellen für das Steuerelement.

    Dadurch wird das Kontextmenü.

  3. Klicken Sie im Kontextmenü auf Hinzufügen und klicken Sie dann auf Eigenschaft hinzufügen.

  4. Wählen Sie einen der Einträge aus der Dropdownliste aus.NameEigenschaftSie können z. B. Text auswählen.

    Da Text eine Basiseigenschaft ist, werden die bindable und requestedit-Attribute bereits überprüft.

  5. Wählen Sie die folgenden Kontrollkästchen in der IDL-Attribute Registerkarte aus: displaybind und defaultbind, um die Attribute der Eigenschaftendefinition in der IDL-Datei des Projekts einzufügen.Diese Attribute stellen dem Benutzer das Steuerelement sichtbar machen und die Basiseigenschaft die bindbare Eigenschaft.

Zu diesem Zeitpunkt kann das Steuerelement Daten aus einer Datenquelle anzeigen, aber der Benutzer kann keine Datenfelder zu aktualisieren.Wenn Sie das Steuerelement auch in der Lage sein sollen, Daten zu aktualisieren, ändern Sie die Funktion OnOcmCommandOnOcmCommand, um wie folgt aussehen:

#ifdef _WIN32
   WORD wNotifyCode = HIWORD(wParam);
#else
   WORD wNotifyCode = HIWORD(lParam);
#endif

   if(wNotifyCode==EN_CHANGE)
   {
      if(!BoundPropertyRequestEdit(DISPID_TEXT))
      {
         SetNotSupported();
      }
      else
      {
         GetText();
         // Notify container of change
         BoundPropertyChanged(DISPID_TEXT);
      }
   }

   return 0;

Sie können jetzt das Projekt erstellen, das das Steuerelement registriert.Wenn Sie das Steuerelement in einem Dialogfeld einfügen, sind die Datenfeld und Eigenschaften Datenquelle hinzugefügt, und Sie können jetzt eine Datenquelle und ein Feld auswählen, die im Steuerelement angezeigt werden sollen.

Eine bindbare Get/set-Methode für erstellen

Zusätzlich zu einem datengebundenen des Abrufens ab, bzw. legen Sie Methode erstellen, können Sie auch bindbare Basiseigenschaft fest.

HinweisHinweis

Dieses Verfahren setzt voraus, dass Sie ein ActiveX-Steuerelement-Projekt verfügen, das ein Windows-Steuerelement unterordnet.

Um ein bindungsfähiges Rufen Sie hinzuzufügen bzw. legen Sie die Methode ab, mit dem Assistenten zum Hinzufügen von Eigenschaften fest

  1. Laden Sie das Projekt des Steuerelements.

  2. Wählen Sie auf der Seite Steuerelementeinstellungen eine Fensterklasse aus, damit das Steuerelement unterordnet.Sie können beispielsweise ein Bearbeitungssteuerelement unterordnen.

  3. Laden Sie das Projekt des Steuerelements.

  4. Klicken Sie mit der rechten Maustaste auf den Knoten Schnittstellen für das Steuerelement.

    Dadurch wird das Kontextmenü.

  5. Klicken Sie im Kontextmenü auf Hinzufügen und klicken Sie dann auf Eigenschaft hinzufügen.

  6. Geben Sie den Eigenschaftennamen im Eigenschaftenname Feld ein.Verwenden Sie für dieses Beispiel MyProp.

  7. Wählen Sie einen Datentyp aus Eigenschaftentyp Dropdown-Listenfeld aus.Verwenden Sie für dieses Beispiel short.

  8. Für Implementierungstyp Klicken Sie auf Get/Set-Methoden.

  9. Wählen Sie die folgenden Kontrollkästchen aus der Registerkarte IDL-Attribut aus: bindable, requestedit, displaybind und defaultbind, um die Attribute der Eigenschaftendefinition in der IDL-Datei des Projekts einzufügen.Diese Attribute stellen dem Benutzer das Steuerelement sichtbar machen und die Basiseigenschaft die bindbare Eigenschaft.

  10. Klicken Sie auf Fertig stellen.

  11. Ändern Sie den Text der SetMyProp-Funktion so, dass sie den folgenden Code enthält:

    if(!BoundPropertyRequestEdit(1))
    {
       SetNotSupported();
       return;
    }
    else
    {
       if(AmbientUserMode()) // SendMessage only at run-time
       {
          _stprintf_s(m_strText.GetBuffer(10), 10, _T("%d"), newVal);
          SetWindowText(m_strText);
          m_strText.ReleaseBuffer();
       }
       else
       {
          InvalidateControl();
       }
    
       // Signal a property change
       // This is the MFC equivalent of OnChanged()
       BoundPropertyChanged(1);
       SetModifiedFlag();
    }
    
  12. Der Parameter, der an den BoundPropertyChanged und BoundPropertyRequestEdit-Funktionen übergeben wird, ist das dispid der Eigenschaft, die dem Parameter, der an das Attribut übergebene der id () für die Eigenschaft in der IDL-Datei.

  13. Ändern Sie die OnOcmCommand-Funktion, sodass sie enthält den folgenden Code:

    #ifdef _WIN32
       WORD wNotifyCode = HIWORD(wParam);
    #else
       WORD wNotifyCode = HIWORD(lParam);
    #endif
    
       if(wNotifyCode==EN_CHANGE)
       {
          if(!BoundPropertyRequestEdit(DISPID_TEXT))
          {
             SetNotSupported();
          }
          else
          {
             GetText();
             // Notify container of change
             BoundPropertyChanged(DISPID_TEXT);
          }
       }
    
       return 0;
    
  14. Ändern Sie die OnDraw-Funktion so, dass sie den folgenden Code enthält:

    if(!AmbientUserMode())
    {
       // Draw the Text property at design-time
       pdc->FillRect(rcBounds, 
          CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
       pdc->DrawText(m_strText, -1, (LPRECT)&rcBounds, 
          DT_LEFT | DT_TOP | DT_SINGLELINE);
    }
    else
    {
       DoSuperclassPaint(pdc, rcBounds);
    }
    
  15. So fügen Sie die Headerdatei öffentlichen Abschnitt der Headerdatei für die Steuerelementklasse, die folgenden Definitionen (Konstruktoren) für Membervariablen hinzu:

    CString m_strText;
    short m_nMyNum;
    
  16. Betrachten Sie die folgende Zeile die letzte Zeile in DoPropExchange arbeiten:

    PX_String(pPX, _T("MyProp"), m_strText);
    
  17. Ändern Sie die OnResetState-Funktion so, dass sie den folgenden Code enthält:

        COleControl::OnResetState();  // Resets defaults found in DoPropExchange
       m_strText = AmbientDisplayName();
    
  18. Ändern Sie die GetMyProp-Funktion so, dass sie den folgenden Code enthält:

    if(AmbientUserMode())
    {
       GetWindowText(m_strText);
       m_nMyNum = (short)_ttoi(m_strText);
    }
    return m_nMyNum;
    

Sie können jetzt das Projekt erstellen, das das Steuerelement registriert.Wenn Sie das Steuerelement in einem Dialogfeld einfügen, sind die Datenfeld und Eigenschaften Datenquelle hinzugefügt, und Sie können jetzt eine Datenquelle und ein Feld auswählen, die im Steuerelement angezeigt werden sollen.

Siehe auch

Referenz

Datengebundene Steuerelemente (ADO und RDO)

Konzepte

MFC-ActiveX-Steuerelemente