Создание компонента. Нужна помощь(идея)
Далее при создании формы VDComboBoxDB1->Zapoln();(данные заносятся в Items) при изменении(VDComboBoxDB1Change) текста Label3->Caption=VDComboBoxDB1->DataID;
Отличе которые получились - это возможность набирать в ->Text,
- откуда берет данные DataSource - закрыт.
Но при скролинге таблиц пришлось описать функцию Label2->Caption=VDComboBoxDB1->Sckroll();
Буду рад замечаниям.
class PACKAGE TVDComboBoxDB : public TComboBox
{
private:
TFieldDataLink *FListLink; //связь с полем, отображаемым в списке
TFieldDataLink *FIDLink_List; // связь с полем идентификатора таблицы (IdAsort, IdVidIzd)
int FIdent; //значение идентификатора таблицы
AnsiString __fastcall GetListField(void); //функция получения имени отображаемого поля таблицы
AnsiString __fastcall GetIDField(void); // функция получения имени поля идентификатора таблицы
TDataSource *__fastcall GetListSource(void); //функция получения источника данных
void __fastcall SetListField(AnsiString aValue); //функция установки имени отображаемого поля таблицы
void __fastcall SetIDField(AnsiString aValue); // функция установки имени поля идентификатора таблицы
void __fastcall SetListSource(TDataSource *pValue); //функция установки источника данных
TField *__fastcall GetField(void); //связь с полем, отображаемым в списке
int __fastcall GetID(void); //функция получения идентификатора
WORD lastKey;
TFieldDataLink *FDataLink; //связь с полем
AnsiString __fastcall GetDataField(void);
TDataSource *__fastcall GetDataSource(void);
void __fastcall SetDataField(AnsiString aValue_D);
void __fastcall SetDataSource(TDataSource *pValue_D);
void __fastcall DataChange(TObject *Sender);
TField *__fastcall GetDField(void); //связь с полем, отображаемым в списке
protected:
DYNAMIC void __fastcall Change(void); //действия при выборе из списка
public:
__fastcall TVDComboBoxDB(TComponent* Owner);
__fastcall ~TVDComboBoxDB(void);
__property TField *Field={read=GetField}; //свойство - поле данных таблицы
__property TField *FieldN={read=GetDataField}; //свойство - поле данных таблицы
void __fastcall Zapoln(void); //функция заполнения списка данными (из-за которой собственно и весь сыр-бор :-))
__property int DataID={read=GetID}; //свойство - идентификатор таблицы
void __fastcall NKeyDoun(Word &Key);
int __fastcall Sckroll(void);
__published: //свойства, которые мы определяем для получения данных
__property AnsiString ListField={read=GetListField, write=SetListField, nodefault};
__property AnsiString ListIDField={read=GetIDField, write=SetIDField, nodefault};
__property TDataSource *ListSource={read=GetListSource, write=SetListSource, nodefault};
__property AnsiString DataField={read=GetDataField, write=SetDataField, nodefault};
__property TDataSource *DataSource={read=GetDataSource, write=SetDataSource, nodefault};
};
//---------------------------------------------------------------------------
#endif
X)-