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

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

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

Регистрация: Oct 2003
Сообщений: 74
По умолчанию Определение габаритов mx:Tree

У меня есть дерево mx:Tree. По левому клику на элементе дерева я создаю и вывожу меню (с разным набором пунктов для элементов разного типа). Если же я кликаю ниже самого нижнего видимого пункта дерева, вызывается меню для выделенного элемента дерева. Как мне определить, что клик был произведен ниже, чем видимая часть дерева, чтобы не создавать меню при клике на пустой области?

MyTree.mxml
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
  width="100%" height="100%" backgroundColor="#c9c9c7"
  styleName="loginSection">

  <mx:Script><![CDATA[
import mx.controls.List;
import mx.collections.ICollectionView;          
import mx.collections.XMLListCollection;                
import mx.controls.treeClasses.*;

import mx.controls.Menu;
import mx.events.MenuEvent;
import mx.controls.Alert;           
import flash.geom.Point;

private var point1:Point = new Point();
private var myMenu:Menu;

// Create and display the Menu control.
public function showMenu():void {
  if (selectedNode.@type =="book") {
    myMenu= Menu.createMenu(this, myMenuDataBook, false);
  } else if (selectedNode.@type == "cd") {
    myMenu= Menu.createMenu(this, myMenuDataCD, false);
  } else {
    return;
  }
  myMenu.labelField="@label"
  myMenu.addEventListener("itemClick", menuHandler);
                
  // Calculate position of Menu in Application's coordinates. 
  point1.x=mouseX;
  point1.y=mouseY+5;
  point1=this.localToGlobal(point1);

  myMenu.show(point1.x, point1.y);
}

// Event handler for the Menu control's change event.
private function menuHandler(event:MenuEvent):void  {
  if ( event.item.@eventName == "closeMenu" ) {
    return;
  }
  Alert.show("Label: " + event.item.@label, "Clicked menu item");
}

...

  <mx:Tree id="devTree" x="0" y="0" height="100%" width="100%" labelField="@label" showRoot="true" dataProvider="{treeData}" click="showMenu();" change="treeChanged(event)" />

  <mx:XML id="myMenuDataBook">
    <rootAlarm>
      <menuitem label="Print book" eventName="book_print"/>
      <menuitem label="Read book" eventName="book_read"/>
      <separator type="separator"/>
      <menuitem label="Close menu" eventName="closeMenu"/>
    </rootAlarm>
  </mx:XML>

  <mx:XML id="myMenuDataCD">
    <rootAccess>
      <menuitem label="Воспроизвести" eventName="cd_play"/>
      <menuitem label="Записать на CD-R" eventName="cd_copy"/>
      <separator type="separator"/>
      <menuitem label="Close menu" eventName="closeMenu"/>
    </rootAccess>
  </mx:XML>

</mx:Canvas>

Старый 04.07.2007, 14:31
MaxD вне форума Посмотреть профиль Отправить личное сообщение для MaxD Найти все сообщения от MaxD
  № 2  
Ответить с цитированием
MaxD
[++1.3 11.01.07]
 
Аватар для MaxD

Регистрация: Jan 2007
Адрес: Ukraine, Kyiv
Сообщений: 104
У тебя что-то недописано в коде.
if (selectedNode.@type =="book") { - что за selectedNode? И тип нигде не задается...

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

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

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


 


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


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