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

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

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

Регистрация: Nov 2006
Сообщений: 76
По умолчанию Выравнивание CheckBox в DataGrid

Делаю в DataGrid itemRenderer CheckBox. Он выравнивается влево. Надо посерёдке. textAlign="center" в колонке не работает. Что делать?

Старый 10.02.2008, 23:09
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 2  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Делать его в контейнере и контейнеру указывать horizontalAlign="center"

Старый 11.02.2008, 00:55
NikR вне форума Посмотреть профиль Отправить личное сообщение для NikR Найти все сообщения от NikR
  № 3  
Ответить с цитированием
NikR

Регистрация: Nov 2006
Сообщений: 76
Сделал ChB.mxml:
Код:
<?xml version="1.0" encoding="windows-1251"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center">
  <mx:CheckBox id="ch" selected="{selected}"/>
  <mx:Script>
    <![CDATA[ 
    [Bindable]
    public var selected:Boolean;
    ]]>
  </mx:Script>
</mx:VBox>
Основной код(кусок):
Код:
        c=new DataGridColumn();
        c.dataField=a.name;
        c.itemRenderer=new ClassFactory(ChB);
        c.editorDataField="selected";
        c.setStyle("textAlign","center");  //для заголовка
        columns.push(c);
В результате перестало цеплять данные (все checkbox`ы пустые). Почему?
Если c.itemRenderer=new ClassFactory(CheckBox), то работает.

Старый 11.02.2008, 02:12
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 4  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Потому что CheckBox реализует интерфейс IDataRenderer и как любой дата рендерер при изменении свойства data соответсвенно реагирует. У вас же этой реакции нету...

Код:
<?xml version="1.0" encoding="windows-1251"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" horizontalAlign="center">
  <mx:CheckBox id="ch" selected="{Boolean (data)}"/>
</mx:VBox>

Старый 12.02.2008, 02:09
NikR вне форума Посмотреть профиль Отправить личное сообщение для NikR Найти все сообщения от NikR
  № 5  
Ответить с цитированием
NikR

Регистрация: Nov 2006
Сообщений: 76
Поскольку в data хранится вся строка таблицы, ваш вариант не сработает. Обратиться к конкретному полю (типа data.main) я не могу, т.к. логических полей несколько. Соответственно, как узнать, какое поле или DataGridColumn обрабатывается?

Старый 12.02.2008, 03:39
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 6  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Смотрите свойство listData, в нем содержится dataField - таким образом можно узнать используемое поле. Если хотите колонку, то в listData есть columnIndex и используя owner'a легко вытащить колонку - но это неправильный с точки зрения архитектуры вариант. А вообще, эта ин-ция хорошо расписана в хелпе.

Старый 12.02.2008, 03:56
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 7  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
Ну во первых почитать хелп (например тут), на тему ItemRenderer'ов.
Или по смотреть класс Button (CheckBox наследует от Button).

в итоге:

file test_dg.mxml
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	
	
	<mx:DataGrid width="300" height="300"
		verticalCenter="0" horizontalCenter="0" dataProvider="{dp}">
		<mx:columns>
			<mx:DataGridColumn dataField="firstName" />
			<mx:DataGridColumn dataField="lastName" />
			<mx:DataGridColumn dataField="alive" itemRenderer="TestRenderer"/>
		</mx:columns>
	</mx:DataGrid>
	
	<mx:Script>
		<![CDATA[
			import mx.controls.CheckBox;
			import mx.collections.ArrayCollection;
			
			private var _dp:ArrayCollection = null;
			
			public function get dp ():ArrayCollection {
				if (_dp == null) {
					_dp = new ArrayCollection ();
					
					var l:int = Math.round (Math.random () * 100);
					var i:int;
					
					for (i = 0; i < l; i++) {
						_dp.addItem ( 
							{ 
								firstName: 'Vasya' + i, 
								lastName: 'Pupkin', 
								alive: (Math.round (Math.random () * 15) % 4 == 0) 
								});
					} // end for
					
				} // end if
				return _dp;
			}
		]]>
	</mx:Script>
</mx:Application>

file TestRenderer.mxml
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	width="100%" height="20"
	implements="mx.controls.listClasses.IDropInListItemRenderer">
	
	<mx:CheckBox verticalCenter="0" horizontalCenter="0" 
		selected="{data [DataGridListData (listData).dataField]}"/>
	
	<mx:Script>
		<![CDATA[
			import mx.controls.listClasses.BaseListData;
			import mx.controls.DataGrid;
			
			import mx.controls.dataGridClasses.DataGridListData;
			
			private var _listData:BaseListData = null;
			
			[Bindable(event="dataChange")]
			public function get listData():BaseListData { return _listData;	}
			
			public function set listData (value:BaseListData):void {
				_listData = value;
			}
			
		]]>
	</mx:Script>
</mx:Canvas>

Старый 12.02.2008, 14:27
NikR вне форума Посмотреть профиль Отправить личное сообщение для NikR Найти все сообщения от NikR
  № 8  
Ответить с цитированием
NikR

Регистрация: Nov 2006
Сообщений: 76
Спасибо, товарищи!

ЗЫ Столько писанины, чтобы просто выровнять контрол - архитектура хромает.

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

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

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


 


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


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