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

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

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

Регистрация: Jun 2008
Сообщений: 24
По умолчанию Item Renderer для List

Здравствуйте всем!

У меня появилась проблема, которую я не могу решить уже третий день. Мне надо создать кастомный ItemRenderer для List. Там надо чтобы в каждой строке был RadioButton и несколько CheckBox. "Галочки" пока проблем не вызвали, но радио батон изначально создал проблему, так как они должны быть в одной группе, но это решилось как-то. Создало проблему то, что я не ожидал. Я не могу к CheckBox применить CSS из внешнего файла. Вроде все нормально его загружаю но когда я пытаюсь приметьи СSS к нему, плейер выдает ошибку.

Если кто-нибудь знает как это можно реализовать проще, без написания собвенного класса, я буду вам весьма признателен.

Спасибо.

Вот код класса:
Код:
import flash.events.Event;
   import flash.net.URLLoader;
   import flash.net.URLRequest;
   import flash.text.StyleSheet;
   
   import mx.controls.CheckBox;
   import mx.controls.Label;
   import mx.controls.RadioButton;
   import mx.controls.listClasses.BaseListData;
   import mx.controls.listClasses.ListBase;
   import mx.controls.listClasses.ListItemRenderer;
   import mx.events.ListEvent;
   
   public class RadioButtonListItemRenderer extends ListItemRenderer
   {

      private var checkBoxViseble:CheckBox;
      private var radioButton:RadioButton;
      private var checkBoxSort:CheckBox;
      private var titleLabel:Label;
      private var styleSheet:StyleSheet;
      private var request:URLRequest;
      private var loader:URLLoader;
      private var styleMan:Object;
      
      public function RadioButtonListItemRenderer()
      {
      	this.styleSheet = new StyleSheet();
         this.request = new URLRequest("style.css");
         this.loader = new URLLoader();
         this.loader.addEventListener(Event.COMPLETE,OnLoadCSS);
         this.loader.load(request);
      }

      private var list:ListBase;

      override protected function createChildren():void
      {
         super.createChildren();
         
         this.checkBoxViseble = new CheckBox();          
         this.radioButton = new RadioButton();
         this.checkBoxSort = new CheckBox();
         this.titleLabel = new Label();
         
         this.addChild(this.checkBoxViseble);
         this.addChild(this.radioButton);
         this.addChild(this.checkBoxSort);
         this.addChild(this.titleLabel);
      }
      
      override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
      {         
         super.updateDisplayList(unscaledWidth, unscaledHeight);

         this.checkBoxViseble.x = 3;
         this.checkBoxViseble.y = this.height / 2 - this.radioButton.height / 2;
         this.radioButton.x = 25;
         this.radioButton.y = this.height / 2 - this.radioButton.height / 2;
         
         this.checkBoxSort.x = 45;
         this.checkBoxSort.y = this.height / 2 - this.radioButton.height / 2;
         this.checkBoxSort.visible = false;

        
         this.label.x = 65;
         
      }
      
       private function OnLoadCSS(event:Event):void
       {
       	this.styleSheet.parseCSS(loader.data);
       	styleMan = this.styleSheet.getStyle(".visibleCBStyle");

       	//проблема собсвенно возникает здесь.
       }
      override public function set listData(value:BaseListData):void
      {
         super.listData = value;
                   
         if (value.owner is ListBase)
         {          
            if (this.list)
            {
               this.list.removeEventListener(ListEvent.CHANGE, ownerChangeHandler);
            }
                
            this.list = value.owner as ListBase;

         }
      }
      
     
      private function ownerChangeHandler(event:ListEvent):void
      {       
         this.radioButton.selected = (this.data != null && this.data == this.list.selectedItem);
      }
      
   }

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

Регистрация: Jun 2008
Сообщений: 24
Может если кто знает как можно сделать кастомный ItemRenderer без AS класса, с использованием RadioButton - то это тоже будет решеним данной проблемы.

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

Регистрация: Apr 2007
Сообщений: 1,369
http://blog.flexexamples.com/2008/01...derer-in-flex/ - тут посмотрите, может на мысль наведет.
__________________
john

Старый 27.08.2008, 23:04
Pogrebeshka вне форума Посмотреть профиль Отправить личное сообщение для Pogrebeshka Найти все сообщения от Pogrebeshka
  № 4  
Ответить с цитированием
Pogrebeshka

Регистрация: Jun 2008
Сообщений: 24
Спасибо большое за ссылку, но только там немного другое. Вся проблема в том что радио батон должен принадлежать к какой нибудь группе, в которой может быть выделен только один переключатель. Я не могу этого добиться при создании компонента как mxml.

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

Регистрация: Aug 2007
Сообщений: 467
ItemRenderer и в нем загрузка CSS — это уже полный ... т.е. неправильно!
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать!

Старый 28.08.2008, 00:02
Pogrebeshka вне форума Посмотреть профиль Отправить личное сообщение для Pogrebeshka Найти все сообщения от Pogrebeshka
  № 6  
Ответить с цитированием
Pogrebeshka

Регистрация: Jun 2008
Сообщений: 24
Я согласен полностью что это не хорошо, но так как у меня пока нет другога выхода, приходится делать так, хотя бы как нибудь. Потому что я не знаю что делать...

Старый 29.08.2008, 02:29
Pogrebeshka вне форума Посмотреть профиль Отправить личное сообщение для Pogrebeshka Найти все сообщения от Pogrebeshka
  № 7  
Ответить с цитированием
Pogrebeshka

Регистрация: Jun 2008
Сообщений: 24
Спасибо Молекула, та статья навела меня на то что мне надо было. Только не сразу, потому что я представлял себе это несколько иначе.

Старый 29.08.2008, 02:35
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 8  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Гы ) Я вообще статью перепутал, ну да ладно.
__________________
john

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

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

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


 


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


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