[Flex 3] PopUpButton.closeOnActivity

У Flex є такий компонент PopUpButton. Поведінка його схожа на ComboBox, тільки ми маємо можливість задати будь-який компонент який відкриється при натисканні. Але маємо неприємність з тим, що при натисканні на щойно відкритий компонент він зразу зачиняється. Тобто ми не можемо використовувати, наприклад, List з встановленим allowMultipleSelection=true та вибрати декілька елементів в List. У компонента PopUpButton є потрібна нам властивість:

/**
*  @private
*  Storage for the closeOnActivity property.
*/
private var _closeOnActivity:Boolean = true;

/**
*  @private
*  Specifies popUp would close on click/enter activity.
*  In popUps like Menu/List/TileList etc, one need not change
*  this as they should close on activity. However for multiple
*  selection, and other popUp, this can be set to false, to
*  prevent the popUp from closing on activity.
*
*  @default true
*/
private function get closeOnActivity():Boolean
{
	// We are not exposing this property for now, until the need arises.
	return _closeOnActivity;
}

/**
*  @private
*/
private function set closeOnActivity(value:Boolean):void
{
	_closeOnActivity = value;
}

Але як бачите вона є private :)

Рішення:

Потрібно зупинити всі MouseEvent.Click від нашого PopUp’у :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
	<mx:PopUpButton>
		<mx:popUp>
			<mx:List id="list" allowMultipleSelection="true">
				<mx:dataProvider>
					<mx:Array>
						<mx:String>Один</mx:String>
						<mx:String>Два</mx:String>
						<mx:String>Три</mx:String>
						<mx:String>Чотири</mx:String>
						<mx:String>П'ять</mx:String>
					</mx:Array>
				</mx:dataProvider>
			</mx:List>
		</mx:popUp>
	</mx:PopUpButton>
	<mx:creationComplete>
		<![CDATA[
			list.addEventListener(MouseEvent.CLICK, listClickHandler, true);
		]]>
	</mx:creationComplete>
	<mx:Script>
		<![CDATA[
			private function listClickHandler(event:MouseEvent):void
			{
				event.stopImmediatePropagation();
			}
		]]>
	</mx:Script>
</mx:Application>

Таґи: , ,

Коментарів: 31 to “[Flex 3] PopUpButton.closeOnActivity”

  1. webboki:

    Очень занятно. Было интeрeсно почитать. Спасибо.

  2. Сычкин:

    Спасибо за Ваш труд!!

  3. Седов:

    Не понимаю причину такого ажиотажа. Ничего нового и мнения разные.

  4. Vadim:

    Занятно. Подпишусь-ка я на RSS пожалуй

  5. Николаев:

    Просто замечательно - очень интересные мысли

  6. Trofimov:

    Я заметил, некоторые блоггеры любят провоцировать читателей, некоторые даже сами провокационные комменты оставляют сами у себя на блоге

  7. Сёмин:

    А как вы смотрите, чтобы завести на блоге раздел «самые горячие обсуждения» ну или типа того. Там можно будет комментировать наиболее горячие статьи вашего блога…

  8. Лапухов:

    Как там у вас с погодой? Давно не писали

  9. Solomin:

    Оценка 5, базару ноль

  10. Cherepanov:

    Круто, спасибо! ;)

  11. Виктор:

    Можно ли взять одну картинку с Вашего блога? Очень понравилась. Линк на Вас есстественно поставлю.

  12. Виталий:

    А Вы на заказ не пишите?

  13. Chistjakov:

    Такой пост и распечатать не жалко, редко такое найдешь в инете, спасибо!

  14. Ovechkin:

    Неоднократно доводилось читать подобные посты на англоязычных блогах, но это не значит что ваш пост мне не понравился

  15. Петухов:

    Спасибочки за материалы! Помогло для написание курсовой.

  16. Вергунов:

    Под впечатление от вышесказанного, благодарю за пост.

  17. Гагарин:

    Очень познавательно. Спасибо.

  18. Пирогов:

    Побольше б таких штук

  19. Lepjohin:

    А что, если завести у себя на блоге раздел «самые горячие обсуждения» ну или что-то подобное. Там думаю, нужно будет комментировать наиболее интересные темы вашего блога…

  20. Федин:

    Без преувеличения можно сказать, что пост тему раскрыл на все 100.

  21. Косяк:

    Где-то я это уже видел… А если по теме то спасибо.

  22. Reshetnikov:

    Мне нравятся Ваши посты, заставляет задуматься…

  23. Фокин:

    полностью поддерживаю, такие же мысли были.

  24. Stanislav:

    Не понимаю причину такого ажиотажа. Ничего нового и мнения разные.

  25. Крысов:

    Занятно. Подпишусь-ка я на RSS пожалуй

  26. Ostrovskij:

    Вот это пост! Сильно. Спасибо.

  27. Ponchikov:

    Спасибо. То, что нужно ))

  28. Павел:

    блин, почему так мало хороших блогов осталось? этот вне конкуренции.

  29. Elcov:

    А король-то голый! Вдумчивая статья, спасибо!

  30. Лобан:

    Отличная статья Спасибо огромное

  31. Андропов:

    что-то в этом есть, безусловно

Залиште свій коментар