| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
TMyEditor::Edit() Чтобы продемонстрировать это, мы создадим простой член данных типа AnsiString, который будет содержать имя файла. Переопределим Edit() так, чтобы он вызывал TOpenDialog, в котором можно будет выбрать файл, имя которого затем сохранится в переменной. Вам нужно заново открыть модуль компонента, так что выберите ‘Close All’ из меню ‘File’, а затем ‘Open’. Откройте ExampleEditor.cpp. Добавьте следующий код в заголовочный файл: //--------------------------------------------------------------------------- class PACKAGE TExampleEditor : public TComponent { private: AnsiString FFileName; void __fastcall SetFileName(AnsiString Value); protected: public: void __fastcall Something(void); void __fastcall SomethingElse(void); __fastcall TExampleEditor(TComponent* Owner); __published: __property AnsiString FileName = {read = FFileName, write = SetFileName}; }; Нужно сказать, что даже если свойство представляет из себя какой-то класс или массив, не составит сложности реализовать эту возможность, но для примера оставим это на будущее. А этот код добавьте в главный файл: //--------------------------------------------------------------------------- void __fastcall TExampleEditor::SetFileName(AnsiString Value) { FFileName = Value; // Do whatever else needs doing } Мы создали свойство, которое будет отображаться в Object Inspector. Теперь давайте напишем код, который будут отображать TOpenDialog. Добавьте это в h-файл: class TMyEditor : public TComponentEditor { private: void __fastcall ExecuteVerb(int Index); AnsiString __fastcall GetVerb(int Index); int __fastcall GetVerbCount(void); void __fastcall Edit(void); protected: public: }; И наконец, добавьте это в главный файл: //--------------------------------------------------------------------------- void __fastcall TMyEditor::Edit(void) { TOpenDialog *OD = new TOpenDialog(Component); if(OD->Execute()) { ((TExampleEditor *)Component)->FileName = ExtractFileName(OD->FileName); Designer->Modified(); } delete OD; } Важное замечание! Обратите внимание на вызов Designer->Modified(). Вы ДОЛЖНЫ вызвать Modified(), когда изменяете данные компонента. Если его не вызвать, данные не отобразятся в Object Inspector и данные свойства НЕ сохранятся вместе с компонентом. Еще раз повторите процесс компиляции и инсталляции. Создайте новое приложение, поместите на форму TExampleEditor и дважды щелкните на нем. Выберите любой файл и нажмите 'Open'. Имя выбранного файла отобразится в Object Inspector в поле свойства FileName. Теперь можете сохранить проект под любым именем. |
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|