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

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

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

Регистрация: Nov 2009
Сообщений: 11
По умолчанию Повернуть заголовки таблицы на 90 градусов

Нужно чтоб заголовки таблицы были повернуты на 90 градусов. В следующем коде я попробовал реализовать но результат не совсем удовлетворительный. Заголовки вылазят за пределы ячейки и таблицы. Не помогает манипулирование свойствами x и y HeaderRenderer-а. Как решается такая проблема?
Код AS3:
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
 
import fl.controls.dataGridClasses.HeaderRenderer;
 
var dp:DataProvider = new DataProvider();
dp.addItem({data:"gr1", title:"choice1"});
dp.addItem({data:"gr21", title:"choice2"});
dp.addItem({data:"gr3", title:"choice3"});
dp.addItem({data:"gr4", title:"choice4"});
dp.addItem({data:"gr5", title:"choice5"});
var myDataGrid:DataGrid = new DataGrid();
 
var col1:DataGridColumn = new DataGridColumn("data");
var col2:DataGridColumn = new DataGridColumn("title");
 
var hd1:HeaderRenderer=new HeaderRenderer();
var hd2:HeaderRenderer=new HeaderRenderer();
 
hd1.rotationZ=90;
hd2.rotationZ=90;
 
 
col1.headerRenderer=hd1;
col2.headerRenderer=hd2;
myDataGrid.addColumn(col1);
myDataGrid.addColumn(col2);
myDataGrid.dataProvider = dp;
myDataGrid.rowHeight = 164;
myDataGrid.width = 200;
myDataGrid.rowCount = dp.length - 1;
myDataGrid.move(10, myDataGrid.width+10);
addChild(myDataGrid);

Старый 04.11.2009, 20:42
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 2  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Предлогаю решение проблемы написанием своего headerRenderer'а к примеру следующим образом:
Код AS3:
package  {
 
	import fl.controls.dataGridClasses.HeaderRenderer;
 
	import flash.text.AntiAliasType;
	import flash.text.GridFitType;
	import flash.text.TextFieldAutoSize;
 
	public class VHeaderRenderer extends HeaderRenderer{
 
		public function VHeaderRenderer() {
			super();
 
			textField.rotation = -90;
			//поворачиваем надпись против часовой стрелки на 90 градусов
			//rotation поддерживается только для embed (встроеных в swf) шрифтов
			//следовательно:
			textField.embedFonts = true;
			textField.antiAliasType = AntiAliasType.ADVANCED;
			textField.gridFitType = GridFitType.PIXEL;
 
			textField.autoSize = TextFieldAutoSize.LEFT; 
 
		}
 
		override protected function drawLayout():void {
 
			super.drawLayout();
 
			var txtPad:Number = Number(getStyleValue("textPadding")); //расстояние до краев
			var txtW:Number = textField.textHeight + 4; //высота нормального или ширина повернутого
			textField.x = Math.round((width - txtW) / 2); //центрируем по горизонтали
			textField.y = height - txtPad; //прижимаем к низу
 
			if (icon != null) { //иконку переместим наверх
				icon.x = Math.round((width - icon.width) / 2);
				icon.y = txtPad;
			}
 
		}
 
	}
 
}
Теперь просто
Код AS3:
 // dataGrid:DataGrid
dataGrid.setStyle("headerRenderer", VHeaderRenderer);
dataGrid.headerHeight = 100;
Однако не забываем, что шрифт надо включить во флешку. Существует ряд способов это сделать (например добавлением в нее текстового поля типа "Dynamic Text" или "Input Text" с каким-то шрифтом (пусть будет Arial) и настройкой "Character Embedding..."

Далее указываем выбранный шрифт для отрисовки заголовков:
Код AS3:
dataGrid.setStyle("headerTextFormat", new TextFormat('Arial'));
upd: в приложении данная реализация в действии
Вложения
Тип файла: zip VHeaderRenderer.zip (55.2 Кб, 56 просмотров)


Последний раз редактировалось bicubic_bublic; 04.11.2009 в 20:59.
Старый 05.11.2009, 17:26
olevacho вне форума Посмотреть профиль Отправить личное сообщение для olevacho Найти все сообщения от olevacho
  № 3  
Ответить с цитированием
olevacho

Регистрация: Nov 2009
Сообщений: 11
Спасибо. А че за зверь такой drawLayout? Что то его нету в списке защищенных методов HeaderRenderer???

Старый 05.11.2009, 17:31
bicubic_bublic вне форума Посмотреть профиль Найти все сообщения от bicubic_bublic
  № 4  
Ответить с цитированием
bicubic_bublic
Banned
[+4 25.09.09]
[+1 12.11.09]
[+4 12.12.09]

Регистрация: Sep 2009
Сообщений: 231
Цитата:
Сообщение от olevacho Посмотреть сообщение
Спасибо. А че за зверь такой drawLayout? Что то его нету в списке защищенных методов HeaderRenderer???
отрисовка после ресайза
должен быть вроде

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

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

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


 


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


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