Udostępnij za pośrednictwem


Formanty MFC ActiveX: używanie powiązania danych w formancie ActiveX

Jednym z zastosowań bardziej wydajne formantów ActiveX jest powiązanie danych, który pozwala właściwość formantu do powiązania z określonego pola w bazie danych.Gdy użytkownik zmienia dane w tej właściwości powiązania, formant powiadamia z bazy danych i żąda uaktualniane pola rekordu.Następnie baza danych powiadamia kontrolę nad sukces lub Niepowodzenie żądania.

W tym artykule obejmuje stronę sterowania Twoim zadaniem.Wykonawczych interakcje wiązania danych z bazy danych jest odpowiedzialny za formantu kontenera.Jak zarządzać interakcje bazy danych w sieci kontener wykracza poza zakres tej dokumentacji.Jak przygotować próbkę kontrolną do wiązania danych jest wyjaśnione w dalszej części tego artykułu.

Diagram koncepcyjny formantu powiązanego z danymi

Diagram koncepcyjny formantu powiązanych z danymi

COleControl Klasa zawiera dwie funkcje Członkowskie wchodzące w łatwy do wdrożenia powiązania danych.Pierwsza funkcja BoundPropertyRequestEdit, jest używany do żądania uprawnienia do zmiany wartości właściwości.BoundPropertyChanged, druga funkcja jest wywoływana po wartość właściwości została pomyślnie zmieniona.

W tym artykule omówiono następujące tematy:

  • Tworzenie, które można powiązać właściwości podstawowego

  • Tworzenie metody które można powiązać Get/Set

Tworzenie, które można powiązać właściwości podstawowego

Istnieje możliwość utworzenia właściwości zapasów powiązanych z danymi, chociaż jest bardziej prawdopodobne, że będziemy chcieli Metoda które można powiązać get/set.

[!UWAGA]

Mieć właściwości zapasów które można powiązać i requestedit atrybuty domyślne.

Aby dodać za pomocą Kreatora dodawania właściwości które można powiązać właściwość zapasów

  1. Rozpoczęcie projektu za pomocą Kreatora formantów ActiveX MFC.

  2. Kliknij prawym przyciskiem myszy węzeł interfejsu dla pilota.

    Spowoduje to otwarcie menu skrótów.

  3. W menu skrótów kliknij polecenie Dodaj i kliknij przycisk Dodaj właściwość.

  4. Wybierz jedną z pozycji z WłaściwościNazwa listy rozwijanej. Na przykład, można wybrać tekst.

    Ponieważ tekst jest właściwością zapasów które można powiązać i requestedit atrybuty są już zaznaczone.

  5. Zaznacz następujące pola wyboru z Atrybuty IDL kartę: displaybind i defaultbind Aby dodać atrybuty do definicji właściwości w ramach projektu.Plik IDL.Te atrybuty formant ma być widoczny dla użytkownika i zrobić pień właściwość domyślna właściwość które można powiązać.

W tym momencie formant można wyświetlać dane ze źródła danych, ale użytkownik nie będzie mógł aktualizować pola danych.Jeśli chcesz również mieć możliwość aktualizacji danych, zmień swoje formant OnOcmCommandOnOcmCommand funkcja służąca do wyszukiwania w następujący sposób: 

#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;

Teraz można utworzyć projekt, który będzie zarejestrować formant.Po wstawieniu formantu w oknie dialogowym, Pole danych i Źródła danych zostaną dodane właściwości i teraz można wybrać źródło danych i pola do wyświetlenia w formancie.

Tworzenie metody które można powiązać Get/Set

Oprócz powiązany z danymi metoda get/set, można również utworzyć które można powiązać właściwości podstawowego.

[!UWAGA]

W tej procedurze założono, że masz formantu ActiveX projektu tej podklasy sterowania systemu Windows.

Aby dodać metodę get/set które można powiązać za pomocą Kreatora dodawania właściwości

  1. Załaduj projekt z kontroli.

  2. Na Ustawienia sterowania zaznacz opcję dla formantu do podklasy klasy okna.Na przykład możesz do podklasy formantu EDYCYJNEGO.

  3. Załaduj projekt z kontroli.

  4. Kliknij prawym przyciskiem myszy węzeł interfejsu dla pilota.

    Spowoduje to otwarcie menu skrótów.

  5. W menu skrótów kliknij polecenie Dodaj i kliknij przycisk Dodaj właściwość.

  6. Wpisz nazwę właściwości w Nazwa właściwości pole.Użycie MyProp w tym przykładzie.

  7. Wybierz typ danych z Typ właściwości pole listy rozwijanej.Użycie Krótki w tym przykładzie.

  8. Dla Typ implementacji, kliknij przycisk Metody Get i Set.

  9. Zaznacz następujące pola wyboru na karcie Atrybuty IDL: które można powiązać, requestedit, displaybind, i defaultbind Aby dodać atrybuty do definicji właściwości w ramach projektu.Plik IDL.Te atrybuty formant ma być widoczny dla użytkownika i zrobić pień właściwość domyślna właściwość które można powiązać.

  10. Kliknij Zakończ.

  11. Modyfikowanie treści SetMyProp działać tak, aby zawierał następujący kod:

    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. Parametr przekazany do BoundPropertyChanged i BoundPropertyRequestEdit funkcji jest identyfikatorem dispid właściwości, która jest parametr przekazany do atrybutu id() dla właściwości w.Plik IDL.

  13. Modyfikowanie OnOcmCommand działać tak, aby zawierał następujący kod:

    #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. Modyfikowanie OnDraw działać tak, aby zawierał następujący kod:

    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. Do publicznej sekcji pliku nagłówka pliku nagłówka dla swojej klasy formantu Dodaj następujące definicje (konstruktory) zmienne składowe:

    CString m_strText;
    short m_nMyNum;
    
  16. Wprowadź następujący wiersz ostatniej linii w DoPropExchange funkcji:

    PX_String(pPX, _T("MyProp"), m_strText);
    
  17. Modyfikowanie OnResetState działać tak, aby zawierał następujący kod:

     COleControl::OnResetState();  // Resets defaults found in DoPropExchange
       m_strText = AmbientDisplayName();
    
  18. Modyfikowanie GetMyProp działać tak, aby zawierał następujący kod:

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

Teraz można utworzyć projekt, który będzie zarejestrować formant.Po wstawieniu formantu w oknie dialogowym, Pole danych i Źródła danych zostaną dodane właściwości i teraz można wybrać źródło danych i pola do wyświetlenia w formancie.

Zobacz też

Informacje

Formanty powiązane z danymi (ADO i RDO)

Koncepcje

Formanty MFC ActiveX