Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Помогите настроить dragImage или dragProxyImage для DataGrid (http://www.flasher.ru/forum/showthread.php?t=187753)

tananuka 23.11.2012 16:35

Помогите настроить dragImage или dragProxyImage для DataGrid
 
Использую Flex4 mx: DataGrid из которого делаю dragDrop в s:Group, и хочу изменить dragImage или dragProxyImage, что бы в нем была не вся строка а только одна картинка. Помогите пожалуйста,в гугле не понятно как они это делают)
Вот код DataGrid:
Код AS3:

<mx:DataGrid id="bodyConstructorData" width="200" height="95%" editable="false"
dragEnabled="true" dragMoveEnabled="false" dropEnabled="false"
enabled="true">
 
        <mx:columns>
                <mx:DataGridColumn dataField="name" width="150"> </mx:DataGridColumn>
                <mx:DataGridColumn width="32" headerText="image" dataField="imageID"
                      itemRenderer="ImageItemRender">
                </mx:DataGridColumn>
        </mx:columns>
</mx:DataGrid>

ImageItemRender.mxml
Код AS3:

<s:MXDataGridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                                                  xmlns:s="library://ns.adobe.com/flex/spark"
                                                  xmlns:mx="library://ns.adobe.com/flex/mx"
                                                  focusEnabled="true">                       
        <s:BitmapImage id="image" width="32" height="32"
        source = "{DataMain.instance.imagesData.getImageAtId(int(data.imageID))}"/>
</s:MXDataGridItemRenderer>

.

alatar 25.11.2012 14:40

Напишите совой drag proxy (в качестве примера можете посмотреть mx.controls.dataGridClasses.DataGridDragProxy) и присвойте его в dragImage вашего DataGrid.

tananuka 25.11.2012 16:25

Цитата:

Сообщение от alatar (Сообщение 1106151)
Напишите совой drag proxy (в качестве примера можете посмотреть mx.controls.dataGridClasses.DataGridDragProxy) и присвойте его в dragImage вашего DataGrid.

нашел хороший пример
добавляю в свой код, но компилятор ругается, говорит ошибка 1020: Method marked override must override another method.

Код AS3:

<mx:DataGrid id="bodyConstructorData" width="200" height="95%" editable="false"
                                                dragEnabled="true" dragMoveEnabled="false" dropEnabled="false"
                                                enabled="true">
<fx:Script>
        <![CDATA[
                import mx.controls.dataGridClasses.DataGridDragProxy;
                import mx.core.IUIComponent;
 
                [Bindable]
                public var dragProxyImage: Class = DataGridDragProxy;
 
                override protected function get dragImage():IUIComponent // ТУТ ОШИБКА 1020
                {
                        var image:IUIComponent = new dragProxyImage();
                        image.owner = this;
                        return image;
                }
        ]]>
</fx:Script>
 
....
</mx:DataGrid>


alatar 25.11.2012 16:30

Если вы считаете, что этот код будет вставлен в ваш DataGrid, то вы ошибаетесь. В вашем компоненте нет геттера dragImage, на это и ругается.

Добавлено через 15 минут
P.S. В примере это два разных mxml файла.

tananuka 25.11.2012 19:07

Цитата:

Сообщение от alatar (Сообщение 1106160)
Если вы считаете, что этот код будет вставлен в ваш DataGrid, то вы ошибаетесь. В вашем компоненте нет геттера dragImage, на это и ругается.
Добавлено через 15 минут
P.S. В примере это два разных mxml файла.

вообще запутался :confused: , как так нету геттера, почему его нет (а при ctrl + click по mx: DataGrid он есть в FB4.6), ну что за непонятные подводные рифы, помогите пожалуйста.

alatar 25.11.2012 19:59

В приведенном вами примере: на основе DataGrid сделали новый компонент, у которого переписали геттер dragImage и использовали этот компонент в другом компоненте.

Вы пытаетесь: добавить DataGrid в ваш компонент и тут же переписать у него геттер. При этом думаете, что блок <fx:Script></fx:Script> попадет в DataGrid, а не в ваш компонент.

Так понятнее?

tananuka 28.11.2012 17:37

понял, пасибо

tananuka 10.12.2012 19:49

сделал отдельный компонент и переназначил dragImage, драг работает но картинки никакой нет вообще, помогите пожалуйста, как это сделать? что бы при перетаскивании была видна "custom" картинка

Код AS3:

override protected function get dragImage():IUIComponent
{
// достаю свою картинку
var xml:XML = this.dataProvider.getItemAt(this.selectedIndex) as XML
var Pic:Class = DataMain.instance.imagesData.getImageAtId(int(xml.imageID))
// создаю свою картинку
var img:UIComponent  = new UIComponent ()
img.addChild(new Pic())
img.owner = this;
return img;
}



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

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