Klasa CRecordView
Widok, który wyświetla rekordy bazy danych w kontrolkach.
Składnia
class AFX_NOVTABLE CRecordView : public CFormView
Elementy członkowskie
Konstruktory chronione
Nazwa/nazwisko | opis |
---|---|
CRecordView::CRecordView | CRecordView Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CRecordView::IsOnFirstRecord | Zwraca wartość nonzero, jeśli bieżący rekord jest pierwszym rekordem w skojarzonym zestawie rekordów. |
CRecordView::IsOnLastRecord | Zwraca wartość nonzero, jeśli bieżący rekord jest ostatnim rekordem w skojarzonym zestawie rekordów. |
CRecordView::OnGetRecordset | Zwraca wskaźnik do obiektu klasy pochodzącej z CRecordset klasy . KlasaWizard zastępuje tę funkcję w razie potrzeby i tworzy zestaw rekordów. |
CRecordView::OnMove |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
CRecordView::OnMove | Jeśli bieżący rekord uległ zmianie, aktualizuje go w źródle danych, a następnie przechodzi do określonego rekordu (następny, poprzedni, pierwszy lub ostatni). |
Uwagi
Widok jest widokiem formularza połączonym bezpośrednio z obiektem CRecordset
. Widok jest tworzony na podstawie zasobu szablonu okna dialogowego i wyświetla pola CRecordset
obiektu w kontrolkach szablonu okna dialogowego. Obiekt CRecordView
używa wymiany danych dialogowych (DDX) i wymiany pól rekordów (RFX), aby zautomatyzować przenoszenie danych między kontrolkami w formularzu i polach zestawu rekordów. CRecordView
Udostępnia również domyślną implementację przejścia do pierwszego, następnego, poprzedniego lub ostatniego rekordu oraz interfejs do aktualizowania rekordu aktualnie w widoku.
Uwaga
Jeśli pracujesz z klasami Data Access Objects (DAO), a nie z klasami Open Database Connectivity (ODBC), zamiast tego użyj klasy CDaoRecordView . Aby uzyskać więcej informacji, zobacz artykuł Omówienie: programowanie bazy danych.
Najczęstszym sposobem tworzenia widoku rekordów jest Kreator aplikacji. Kreator aplikacji tworzy zarówno klasę widoku rekordu, jak i skojarzona z nią klasę zestawu rekordów w ramach szkieletowej aplikacji początkowej. Jeśli nie utworzysz klasy widoku rekordów za pomocą Kreatora aplikacji, możesz utworzyć ją później za pomocą klasy ClassWizard. Jeśli po prostu potrzebujesz pojedynczego formularza, łatwiej jest pracę kreatora aplikacji. KlasaWizard umożliwia podjęcie decyzji o użyciu widoku rekordu w dalszej części procesu programowania. Użycie klasy ClassWizard do utworzenia widoku rekordu i zestawu rekordów oddzielnie, a następnie połączenia z nimi jest najbardziej elastycznym podejściem, ponieważ zapewnia większą kontrolę nad nazewnictwem klasy zestawu rekordów i jej klasy . H/. Pliki CPP. Takie podejście umożliwia również posiadanie wielu widoków rekordów w tej samej klasie zestawu rekordów.
Aby ułatwić użytkownikom końcowym przejście z rekordu do rekordu w widoku rekordu, Kreator aplikacji tworzy zasoby menu (i opcjonalnie pasek narzędzi) umożliwiające przejście do pierwszego, następnego, poprzedniego lub ostatniego rekordu. Jeśli tworzysz klasę widoku rekordów za pomocą klasy ClassWizard, musisz utworzyć te zasoby samodzielnie za pomocą menu i edytorów map bitowych.
Aby uzyskać informacje o domyślnej implementacji przenoszenia rekordu z rekordu do rekordu, zobacz IsOnFirstRecord
i IsOnLastRecord
artykuł Using a Record View (Korzystanie z widoku rekordu).
CRecordView
śledzi pozycję użytkownika w zestawie rekordów, dzięki czemu widok rekordów może zaktualizować interfejs użytkownika. Gdy użytkownik przechodzi na końcu zestawu rekordów, widok rekordu wyłącza obiekty interfejsu użytkownika — takie jak elementy menu lub przyciski paska narzędzi — w celu dalszego przechodzenia w tym samym kierunku.
Aby uzyskać więcej informacji na temat deklarowania i używania widoków rekordów i klas zestawów rekordów, zobacz "Projektowanie i tworzenie widoku rekordów" w artykule Widoki rekordów. Aby uzyskać więcej informacji o sposobie działania widoków rekordów i sposobie ich używania, zobacz artykuł Using a Record View (Korzystanie z widoku rekordów).
Hierarchia dziedziczenia
CRecordView
Wymagania
Nagłówek: afxdb.h
CRecordView::CRecordView
Podczas tworzenia obiektu typu pochodzącego z CRecordView
metody wywołaj jedną z form konstruktora, aby zainicjować obiekt widoku i zidentyfikować zasób okna dialogowego, na którym opiera się widok.
explicit CRecordView(LPCTSTR lpszTemplateName);
explicit CRecordView(UINT nIDTemplate);
Parametry
lpszTemplateName
Zawiera ciąg o wartości null, który jest nazwą zasobu szablonu okna dialogowego.
nIDTemplate
Zawiera identyfikator zasobu szablonu okna dialogowego.
Uwagi
Możesz zidentyfikować zasób według nazwy (przekazać ciąg jako argument do konstruktora) lub według jego identyfikatora (przekazać niepodpisaną liczbę całkowitą jako argument). Zalecane jest użycie identyfikatora zasobu.
Uwaga
Klasa pochodna musi podać własny konstruktor. W konstruktorze klasy pochodnej wywołaj konstruktor CRecordView::CRecordView
z nazwą zasobu lub identyfikatorem jako argumentem, jak pokazano w poniższym przykładzie.
CRecordView::OnInitialUpdate
wywołuje metodę UpdateData
, która wywołuje metodę DoDataExchange
. To początkowe wywołanie służące do DoDataExchange
łączenia kontrolek (pośrednio) z CRecordset
elementami CRecordView
członkowskimi danych pól utworzonymi przez klasę ClassWizard. Tych składowych danych nie można używać do momentu wywołania funkcji składowej klasy CFormView::OnInitialUpdate
bazowej.
Uwaga
Jeśli używasz klasy ClassWizard, kreator definiuje enum
wartość CRecordView::IDD
, określa ją w deklaracji klasy i używa jej na liście inicjowania składowych dla konstruktora.
Przykład
CMyRecordView::CMyRecordView()
: CRecordView(CMyRecordView::IDD)
{
m_pSet = NULL;
// TODO: add construction code here
}
CRecordView::IsOnFirstRecord
Wywołaj tę funkcję składową, aby określić, czy bieżący rekord jest pierwszym rekordem w obiekcie zestawu rekordów skojarzonym z tym widokiem rekordów.
BOOL IsOnFirstRecord();
Wartość zwracana
Nonzero, jeśli bieżący rekord jest pierwszym rekordem w zestawie rekordów; w przeciwnym razie 0.
Uwagi
Ta funkcja jest przydatna do pisania własnych implementacji domyślnych programów obsługi aktualizacji poleceń napisanych przez klasę ClassWizard.
Jeśli użytkownik przejdzie do pierwszego rekordu, platforma wyłączy wszystkie obiekty interfejsu użytkownika, które należy przenieść do pierwszego lub poprzedniego rekordu.
CRecordView::IsOnLastRecord
Wywołaj tę funkcję składową, aby określić, czy bieżący rekord jest ostatnim rekordem w obiekcie zestawu rekordów skojarzonym z tym widokiem rekordów.
BOOL IsOnLastRecord();
Wartość zwracana
Nonzero, jeśli bieżący rekord jest ostatnim rekordem w zestawie rekordów; w przeciwnym razie 0.
Uwagi
Ta funkcja jest przydatna do pisania własnych implementacji domyślnych programów obsługi aktualizacji poleceń, które klasyWizard zapisuje w celu obsługi interfejsu użytkownika do przenoszenia z rekordu do rekordu.
Uwaga
Wynik tej funkcji jest niezawodny, z wyjątkiem tego, że widok nie może wykryć końca zestawu rekordów, dopóki użytkownik nie przesunie go obok. Użytkownik musi przejść poza ostatni rekord, zanim widok rekordu będzie mógł stwierdzić, że musi wyłączyć wszystkie obiekty interfejsu użytkownika do przejścia do następnego lub ostatniego rekordu. Jeśli użytkownik przechodzi obok ostatniego rekordu, a następnie przechodzi z powrotem do ostatniego rekordu (lub przed nim), widok rekordu może śledzić pozycję użytkownika w zestawie rekordów i poprawnie wyłączyć obiekty interfejsu użytkownika. IsOnLastRecord
jest również zawodny po wywołaniu funkcji OnRecordLast
implementacji , która obsługuje ID_RECORD_LAST polecenia lub CRecordset::MoveLast
.
CRecordView::OnGetRecordset
Zwraca wskaźnik do obiektu pochodnego skojarzonego CRecordset
z widokiem rekordu.
virtual CRecordset* OnGetRecordset() = 0;
Wartość zwracana
Wskaźnik do obiektu pochodnego CRecordset
, jeśli obiekt został pomyślnie utworzony; w przeciwnym razie wskaźnik NULL.
Uwagi
Należy zastąpić tę funkcję składową, aby utworzyć lub uzyskać obiekt zestawu rekordów i zwrócić do niej wskaźnik. Jeśli zadeklarujesz klasę widoku rekordów za pomocą klasy ClassWizard, kreator napisze dla Ciebie domyślne zastąpienie. Domyślna implementacja klasyWizard zwraca wskaźnik zestawu rekordów przechowywany w widoku rekordu, jeśli istnieje. Jeśli tak nie jest, tworzy obiekt zestawu rekordów typu określonego za pomocą klasy ClassWizard i wywołuje funkcję Open
składową, aby otworzyć tabelę lub uruchomić zapytanie, a następnie zwraca wskaźnik do obiektu.
Aby uzyskać więcej informacji i przykładów, zobacz artykuł Record Views: Using a Record View (Widoki rekordów: używanie widoku rekordów).
CRecordView::OnMove
Wywołaj tę funkcję składową, aby przejść do innego rekordu w zestawie rekordów i wyświetlić jego pola w kontrolkach widoku rekordów.
virtual BOOL OnMove(UINT nIDMoveCommand);
Parametry
nIDMoveCommand
Jedna z następujących standardowych wartości identyfikatora polecenia:
ID_RECORD_FIRST Przenieś do pierwszego rekordu w zestawie rekordów.
ID_RECORD_LAST Przenieś do ostatniego rekordu w zestawie rekordów.
ID_RECORD_NEXT Przenieś do następnego rekordu w zestawie rekordów.
ID_RECORD_PREV Przenieś do poprzedniego rekordu w zestawie rekordów.
Wartość zwracana
Nonzero, jeśli przeniesienie zakończyło się pomyślnie; w przeciwnym razie 0, jeśli żądanie przeniesienia zostało odrzucone.
Uwagi
Domyślna implementacja wywołuje odpowiednią Move
funkcję CRecordset
składową obiektu skojarzonego z widokiem rekordu.
Domyślnie aktualizuje bieżący rekord w źródle danych, OnMove
jeśli użytkownik zmienił go w widoku rekordu.
Kreator aplikacji tworzy zasób menu z elementami menu Pierwszy rekord, Ostatni rekord, Następny rekord i Poprzedni rekord. W przypadku wybrania opcji Docka paska narzędzi Kreator aplikacji utworzy również pasek narzędzi z przyciskami odpowiadającymi tym poleceniom.
Jeśli przejdziesz obok ostatniego rekordu w zestawie rekordów, widok rekordu będzie nadal wyświetlać ostatni rekord. Jeśli przejdziesz wstecz do pierwszego rekordu, widok rekordu będzie nadal wyświetlać pierwszy rekord.
Uwaga
Wywołanie OnMove
zgłasza wyjątek, jeśli zestaw rekordów nie ma żadnych rekordów. Wywołaj odpowiednią funkcję obsługi aktualizacji interfejsu użytkownika — OnUpdateRecordFirst
, , OnUpdateRecordLast
OnUpdateRecordNext
lub OnUpdateRecordPrev
— przed odpowiednią operacją przenoszenia, aby określić, czy zestaw rekordów ma jakiekolwiek rekordy.
Zobacz też
Klasa CFormView
Wykres hierarchii
Klasa CRecordset
Klasa CFormView