Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.03.2011, 22:07
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 1  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Arrow autoSize и размер текстового поля в Header в DataGrid

Как поменять размер текстового поля в хедере компонента DataDrid таким образом, чтобы если текст входит за пределы ширины колонки он перепрыгивал на новую строку? Т.е. нужно добиться эффекта multiline в текстовом поле

Старый 23.03.2011, 22:14
Idon вне форума Посмотреть профиль Отправить личное сообщение для Idon Найти все сообщения от Idon
  № 2  
Ответить с цитированием
Idon

Регистрация: Sep 2009
Сообщений: 65
http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html

см. DataGrid -> HeaderRenderer, свойство textField и метод setSize

Старый 25.03.2011, 01:36
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 3  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
а можно пример, как можно обратиться к этому textField в Header?

Старый 25.03.2011, 06:15
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 4  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Создавайте наследника от HeaderRenderer и действуйте.
После укажете для DataGridColumn headerRenderer.

Плюс к этому придется допилить и DataGrid, если вам необходим автоматический подгон значения headerHeight.
__________________
Блог, Twitter
Брюзга.

Старый 25.03.2011, 11:57
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 5  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Цитата:
Создавайте наследника от HeaderRenderer и действуйте.
Это понятно. Только вот не могу понять какая должна быть структура у этого класса HeaderRenderer? Нигде не могу этого найти.
Кстати когда пытаюсь от него унаследоваться - пишет что базовый класс HeaderRenderer не найден!

Старый 25.03.2011, 15:28
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 6  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Чтобы подключить класс импортируйте его:
Код AS3:
import fl.controls.dataGridClasses.HeaderRenderer;
Структура класса:
Код AS3:
// Copyright 2007. Adobe Systems Incorporated. All Rights Reserved.
package fl.controls.dataGridClasses {
 
	import fl.controls.ButtonLabelPlacement;
	import fl.controls.LabelButton;
	import fl.core.UIComponent;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
 
    //--------------------------------------
    //  Styles
    //--------------------------------------
 
    /**
     * @copy fl.controls.LabelButton#style:selectedDisabledSkin
     *
     * @default HeaderRenderer_selectedDisabledSkin
     *
     * @langversion 3.0
     * @playerversion Flash 9.0.28.0
     *  
     *  @playerversion AIR 1.0
 
     *  @productversion Flash CS3
     */
    [Style(name="selectedDisabledSkin", type="Class")]
 
    /**
     * @copy fl.controls.LabelButton#style:selectedUpSkin
     *
     * @default HeaderRenderer_selectedUpSkin
     *
     * @langversion 3.0
     * @playerversion Flash 9.0.28.0
     *  
     *  @playerversion AIR 1.0
 
     *  @productversion Flash CS3
     */
    [Style(name="selectedUpSkin", type="Class")]
 
    /**
     * @copy fl.controls.LabelButton#style:selectedDownSkin
     *
     * @default HeaderRenderer_selectedDownSkin
     *
     * @langversion 3.0
     * @playerversion Flash 9.0.28.0
     *  
     *  @playerversion AIR 1.0
 
     *  @productversion Flash CS3
     */
    [Style(name="selectedDownSkin", type="Class")]
 
    /**
     * @copy fl.controls.LabelButton#style:selectedOverSkin
     *
     * @default HeaderRenderer_selectedOverSkin
     *
     * @langversion 3.0
     * @playerversion Flash 9.0.28.0
     *  
     *  @playerversion AIR 1.0
 
     *  @productversion Flash CS3
     */
    [Style(name="selectedOverSkin", type="Class")]
 
 
    //--------------------------------------
    //  Class description
    //--------------------------------------
	/**
	 * The HeaderRenderer class displays the column header for the current 
	 * DataGrid column. This class extends the LabelButton class and adds a 
     * <code>column</code> property that associates the current header with its 
	 * DataGrid column.
     *
     * @see fl.controls.DataGrid DataGrid
     *
	 * @includeExample examples/HeaderRendererExample.as
	 *
     * @langversion 3.0
     * @playerversion Flash 9.0.28.0
	 *  
	 *  @playerversion AIR 1.0
 
	 *  @productversion Flash CS3
	 */
	public class HeaderRenderer extends LabelButton {
		/**
         * @private
         *
         * @langversion 3.0
         * @playerversion Flash 9.0.28.0
		 */
		public var _column:uint;
 
        /**
         * Creates a new HeaderRenderer instance.
         *
         * @langversion 3.0
         * @playerversion Flash 9.0.28.0
         *  
         *  @playerversion AIR 1.0
 
         *  @productversion Flash CS3
         */
		public function HeaderRenderer():void {
			super();
			focusEnabled = false;
		}
 
        /**
         * @private
         *
         * @langversion 3.0
         * @playerversion Flash 9.0.28.0
         */
		private static var defaultStyles:Object = {
			upSkin: "HeaderRenderer_upSkin",
			downSkin: "HeaderRenderer_downSkin",
			overSkin: "HeaderRenderer_overSkin",
			disabledSkin: "HeaderRenderer_disabledSkin",
			selectedDisabledSkin: "HeaderRenderer_selectedDisabledSkin",
			selectedUpSkin: "HeaderRenderer_selectedUpSkin",
			selectedDownSkin: "HeaderRenderer_selectedDownSkin",
			selectedOverSkin: "HeaderRenderer_selectedOverSkin",
			textFormat: null,
			disabledTextFormat: null,
			textPadding: 5
		};
 
        /**
         * @copy fl.core.UIComponent#getStyleDefinition()
         *
		 * @includeExample ../../core/examples/UIComponent.getStyleDefinition.1.as -noswf
		 *
         * @see fl.core.UIComponent#getStyle()
         * @see fl.core.UIComponent#setStyle()
         * @see fl.managers.StyleManager
         *
         * @langversion 3.0
         * @playerversion Flash 9.0.28.0
         *  
         *  @playerversion AIR 1.0
 
         *  @productversion Flash CS3
         */
		public static function getStyleDefinition():Object {
			return defaultStyles;
		}
 
		/**
		 * The index of the column that belongs to this HeaderRenderer instance.
		 * 
		 * <p>You do not need to know how to get or set this property
		 * because it is internal. However, if you create your own  
		 * HeaderRenderer, be sure to expose it; the HeaderRenderer is used  
		 * by the DataGrid to maintain a reference between the header 
		 * and the related DataGridColumn.</p>
         *
         * @langversion 3.0
         * @playerversion Flash 9.0.28.0
		 * @internal Adobe: [LM] Added more details.  This *could* be marked (at)private.
		 *  
		 *  @playerversion AIR 1.0
 
		 *  @productversion Flash CS3
		 */
		public function get column():uint {
			return _column;
		}
 
		/**
         * @private (setter)
         *
         * @langversion 3.0
         * @playerversion Flash 9.0.28.0
		 */
		public function set column(value:uint):void {
			_column = value;
		}
 
		/**
         * @private (protected)
         *
         * @langversion 3.0
         * @playerversion Flash 9.0.28.0
		 */
		override protected function drawLayout():void {
			var txtPad:Number = Number(getStyleValue("textPadding"));
			textField.height =  textField.textHeight + 4;
			textField.visible = (label.length > 0);
			var txtW:Number = textField.textWidth + 4;
			var txtH:Number = textField.textHeight + 4;
			var paddedIconW:Number = (icon == null) ? 0 : icon.width + 4;
			var tmpWidth:Number = Math.max(0, Math.min(txtW, width - 2 * txtPad - paddedIconW));
			if (icon != null) {
				icon.x = width - txtPad - icon.width - 2;
				icon.y = Math.round((height - icon.height) / 2);
			}
			textField.width = tmpWidth;
			textField.x = txtPad;
			textField.y = Math.round((height - textField.height) / 2);
			background.width = width;
			background.height = height;
		}
	}
}
Исходный код класса мы можете найти здесь (пример для Adobe Flash CS5):

[Диск]:\Program files (x86)\Adobe Flash CS5\Common\Configuration\Component Source\ActionScript 3.0\User Interface\fl\controls\dataGridClasses\HeaderRenderer.as

В случае если у вас 32битная ОС "Program Files (x86)" меняется на "Program Files".
__________________
Блог, Twitter
Брюзга.

Старый 25.03.2011, 19:22
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 7  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Цитата:
import fl.controls.dataGridClasses.HeaderRenderer;
Я это делал, но он всё равно его не находил. Может это изза версии флеш плеера? Компилю в Flash CS3 под 9 плеером.
А за структуру класса спасибо, сейчас попробую.
Получается мне нужно проимпортить этот класс, создать ещё один класс, проекстендиться в нём от HeaderRenderer? Насколько я понял, нужно оверрайдить функцию drawLayout(), дописав в неё
Код AS3:
autoSize == "left"
? Немного не понял как они задают width, получается она равна ширине фона Хедера или я чего-то не понял?

Старый 25.03.2011, 19:41
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 8  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Ширина хедера задается DataGrid'ом.

В HeaderRenderer ширина текста устанавливается как (ширина колонки - отступ с края*2 - 4 - ширина иконки).

Вам необходимо заоверрайдить configUI.
Код AS3:
override protected function configUI(): void {
	super.configUI();
	textField.multiline = true;
        textField.wordWrap = true;
}
autoSize - ставить не надо.

Добавлено через 5 минут
По поводу компиляции ничего не подскажу, давно уже не пользуюсь Flash IDE в качестве средства компиляции кода.
Да и нативными компонентами тоже не пользуюсь
__________________
Блог, Twitter
Брюзга.


Последний раз редактировалось mayakwd; 25.03.2011 в 19:46.
Старый 26.03.2011, 00:49
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 9  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
Низкий поклон! Если б можно было плюсанул в карму раз сто!

Цитата:
Да и нативными компонентами тоже не пользуюсь
Чувствую что после такого знакомства с ними тоже дважды подумаю перед тем как с ними дело иметь)))

Старый 26.03.2011, 07:06
mayakwd вне форума Посмотреть профиль Отправить личное сообщение для mayakwd Посетить домашнюю страницу mayakwd Найти все сообщения от mayakwd
  № 10  
Ответить с цитированием
mayakwd
 
Аватар для mayakwd

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Не стесняйтесь, плюсуйте, тут каждое сообщение можно плюсовать *хитро улыбнулся* :-)

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

Я не пользуюсь ими по той причине, что необходимы заморочки с flash ide для их интеграции в проект, пляски с бубном вокруг swc, и т.д., написал аналог всех необходимых компонентов pureAS3 и спокоен
__________________
Блог, Twitter
Брюзга.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:42.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:42.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.