C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 85 - Редакторы свойств, выпадающий список значений / С++ Builder 5 / Borland C++

Шаг 85 - Редакторы свойств, выпадающий список значений

Ну, выпадающий список значений это мы тоже видели, знаем... Например, когда нужно true/false поставить или еще что-то выбрать. Кстати в предыдущем шаге на первом скриншоте как раз и показан такой список. Так вот. Сделать такую вещь довольно просто... Можно сказать элементарно... Для этого немного теории, о которой мы умолчали в прошлом шаге.

Вообще, у редакторов свойств есть довольно много методов, которые необходимо переопределять, чтобы добиться желаемого эффекта. Вот те методы, которые используются для диалогов и выпадающих списков:

  • Edit
  • GetAttributes
  • GetValues

Метод GetAttributes устанавливает, что наш редактор свойств умеет делать, например:

__fastcall TPropertyAttributes TColorProperty::GetAttributes()

{
	return TPropertyAttributes() << paMultiSelect << paDialog << paValueList;
}

Соответственно устанавливает, что пользователь (или все же программист?) может открыть диалог, выбрать из выпадающего списка, и в тоже время может устанавливать значение свойства, даже если выбрано несколько сходных компонентов одновременно.

Значения могут быть следующими:

  • paValueList - разрешает выпадающий список значений
  • paSubProperties - управляет вложенными свойствами этого свойства... Например, для свойств, являющихся объектами классов, или например для свойств типа Множество
  • paDialog - см. выше
  • paMultiSelect - см. выше
  • paAutoUpdate - после изменения любого свойство компонента вызывается SetValue данного свойства
  • paSortList - автоматическая сортировка выпадающего списка
  • paReadOnly - ну вроде ясно - нельзя менять значение
  • paRevertAble - разрешает опцию Инспектора Объектов Revert to Inherited

Теперь код, который это все продемонстрирует. Поскольку в нашем компоненте особенно подходящего под это нет, я решил для примера выбрать свойство Title. Выглядит все это так:

// --- FolderDialog.h
class PACKAGE TFolderStatusPropertyEditor : public TStringProperty
{
public:
	__fastcall TFolderStatusPropertyEditor(void):Dsgnintf::TStringProperty(Designer,0){};
	virtual void __fastcall GetValues(Classes::TGetStrProc Proc);
	TPropertyAttributes __fastcall GetAttributes()
	{
		return TPropertyAttributes()<<paValueList;
	};
};
//
//
// ---  FolderDialog.cpp

// ...

namespace Folderdialog
{
	void __fastcall PACKAGE Register()
	{
		TComponentClass classes[1] = {__classid(TFolderDialog)};
		RegisterComponents("Ossam", classes, 0);
		PTypeInfo ti = *GetPropInfo(__typeinfo(TFolderDialog),"Root")->PropType;
		RegisterPropertyEditor(ti, __classid(TFolderDialog),
		"Root",__classid(TFolderPropertyEditor));

		ti = *GetPropInfo(__typeinfo(TFolderDialog),"Title")->PropType;
		RegisterPropertyEditor(ti, __classid(TFolderDialog),
			"Title",__classid(TFolderStatusPropertyEditor));
	}
}
void __fastcall TFolderStatusPropertyEditor::GetValues(Classes::TGetStrProc Proc)
{
	Proc("Here you select the folder");
	Proc("Now you select the folder");
	Proc("Silly, didn't you get what to do?");
	Proc("Alright, you need not to select a folder");
}

Ну вот. Должно получиться так:

gif/85_1.gif (2063 b)

Надеюсь, этот шаг был для Вас полезной информацией. Здесь есть ссылка на архив с последней версией компонента.


Загрузить проект | | |
Автор Аванесов Самвел.
[AD]