Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-09-2011, 14:42   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
lastItemDown für DataGrid

Hallo zusammen.

Ich hab mal wieder Probleme mit meinem DataGrid und finde die Lösung nicht...

Ich möchte gerne abfragen in welcher Spalte sich die Maus befindet beim Verschieben. Dazu habe ich mir mal angesehen welche Daten alle abgefeuert werden wenn ich dragEnter auslöse.

Unter anderem habe ich meine ItemRenderer gefunden die mir eigentlich ausreichen würden. Diese sind hinter der Eigenschaft lastItemDown hinterlegt.

Wenn ich mir jetzt diesen Wert per AS3 austracen möchte gibt es die Meldung, dass es diese Eigenschaft für DataGrid nicht gibt. Auch in den Dokumentationen habe ich nichts dazu gefunden. AAAAABER: Wenn ich mir den Trace im Debugger anschaue gibt dieser die korrekten Werte aus (siehe Bild Anhang).

Muss ich irgendwie anders auf diesen Wert zugreifen? Wäre doch ärgerlich wenn einem diese ganzen Informationen zur Verfügung stehen aber man nicht darauf zurückgreifen kann?

---

Eigentlich möchte ich nur die erste Spalte dragable machen da sich in den anderen Spalten Texte befinden die man markieren möchte.
Daher wollte ich vorm Draggen abfragen ob man auch versucht die richtige Spalte zu ziehen.

MfG Monk
Angehängte Grafiken
Dateityp: jpg lastItemDown.jpg (27,2 KB, 5x aufgerufen)
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 01-09-2011, 16:54   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.344
DataGridColumns kannst du via draggable konfigurieren.

lastItemDown scheint eine private Eigenschaft der DataGridHeader Klasse, die du nicht nutzen kannst.
Omega Psi ist offline   Mit Zitat antworten
Alt 01-09-2011, 19:03   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
argh.. grad so viel geschrieben und dann den Browser geschlossen

Deswegen als Kurzfassung: ich hatte vergessen zu erwähnen, dass ich die Daten in eine andere Liste ziehe und dort mit dragDrop entgegen nehme.

Wenn ich draggable="true" für das DataGrid setze, kann ich die einzelnen Spalten, die ich nicht draggable machen möchte, nicht sperren.

Ich hatte schon versucht per itemRollOver die Abfrage zu realisieren. Allerdings triggert die Aktion ja nur wenn man die Zeile wechselt.
Und itemClick feuert sein Event erst wenn man die Maustaste wieder los läst

Falls ich irgendwie an den columnIndex kommen würde, könnte ich das Drag-Event vielleicht manuell auslösen wenn es sich um die erste Spalte handelt. Aber lastItemDown ist der einzige Wert mit dem ich bei MouseDown die Spalte herrausfinden kann. Oder gibt es einen anderen Weg oder gar eine einfachere Lösung?

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 01-09-2011, 19:34   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.344
In den Spalten wird doch immer das gleiche Datum referenziert? Egal welche Spalte du zur Interaktion nimmst, es steckt immer das gleiche Objekt dahinter.
Omega Psi ist offline   Mit Zitat antworten
Alt 02-09-2011, 05:46   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
Guten Morgen Omega Psi.

Ja. Ich möchte auch das ganze Objekt in die andere Liste verschieben (kopieren) können.

Aber stell dir folgende Situation vor: Das DataGrid besteht aus 2 Spalten. In der ersten Spalte befindet sich ein Vorschaubild. In der zweiten Spalte stehen z.B. die Artikelnummer oder andere Texte.
Wenn jetzt jemand diese Artikelnummer markieren möchte geht dies nicht da beim makieren der Drag-Effekt schon einsetzt.
Aus dem Grund möchte ich nur die Spalte mit dem Vorschaubild draggable machen damit man in den anderen Spalten etwas markieren kann.

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 02-09-2011, 06:52   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.344
DataGridColumn.draggable != DataGrid.dragableColumns. Ich weiss nicht, welche Property du nun wo gesetzt haben könntest.
Omega Psi ist offline   Mit Zitat antworten
Alt 02-09-2011, 07:17   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 670
dragEnabled="true" habe ich auf das DataGrid angewendet.
draggableColumns="true" bewirkt ja nicht, dass man die Zeilen in andere Objekte "rausziehen" kann. Mit dieser Funktion kann man lediglich die Reihenfolge der Spalten ändern.

Wenn ich den Columns draggable="false" zuweise wirkt sich das nur auf die Möglichkeit aus, die Spalten innerhalb des DataGrids zu sortieren.

Anbei ein kleines, provisorisch erstelltes Beispielprogramm was das Problem vielleicht besser verdeutlicht:

PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
                xmlns:renderer="*"
                layout="absolute" minWidth="955" minHeight="600">
    
    <mx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.logging.errors.InvalidFilterError;
        ]]>
    </mx:Script>
    
    <mx:DataGrid id="meinDG" dragEnabled="true" x="36" y="30" width="574" minHeight="100" maxHeight="350" verticalScrollPolicy="auto" dataProvider="{myDP}" variableRowHeight="true">
        <mx:columns>
            <mx:DataGridColumn dataField="col1" headerText="Spalte 1">
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:Image source="{data.bild}"/>
                    </mx:Component>
                        
                </mx:itemRenderer>
            </mx:DataGridColumn>
            <mx:DataGridColumn dataField="name" headerText="Spalte 2" id="row2" itemRenderer="Details" draggable="false"/>
                
            
        </mx:columns>
    </mx:DataGrid>
    
    <mx:ArrayCollection id="myDP">
        <mx:Object anzahl="6" bild="keines.png"/>
        <mx:Object anzahl="8" bild="keines.png"/>
        <mx:Object anzahl="10" bild="keines.png"/>
    </mx:ArrayCollection>

</mx:Application>
PHP-Code:
// Details.as

package
{
    
import mx.containers.VBox;
    
import mx.controls.Label;
    
    public class 
Details extends VBox
    
{
        public function 
Details()
        {
            
super();
        }
        
        
override public function set data (value:Object):void {
            
super.data value;
            
            
removeAllChildren();
            
            for(var 
i:int 0i<value.anzahli++){
                var 
tempLabel:Label = new Label();
                
tempLabel.selectable true;
                
tempLabel.text "Label"+i;
                
addChild(tempLabel);
            }
        }
    }

Ziel: Per MouseDown auf das Bild soll man die Zeile draggen können. Wenn MouseDown in einer anderen Spalte ist, soll dies nicht der Fall sein.
Die Bilder dazu befinden sich in dem Anhang (Links: Drag des Bildes, Rechts: Drag der zweiten Spalte).

Gerne stelle ich auch noch ein Online-Demo zur Verfügung falls das hilfreich ist.

MfG Monk
Angehängte Grafiken
Dateityp: jpg drag_ok.jpg (68,5 KB, 1x aufgerufen)
Dateityp: jpg drag_schlecht.jpg (66,0 KB, 1x aufgerufen)
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 02-09-2011, 07:30   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.344
Schonmal vorab:
Code:
// Details.as 

package 
{ 
    import mx.containers.VBox; 
    import mx.controls.Label; 
     
    public class Details extends VBox 
    { 
        public function Details() 
        { 
            super(); 
        } 
         
        override public function set data (value:Object):void { 
            super.data = value; 
             
            removeAllChildren(); 
             
            for(var i:int = 0; i<value.anzahl; i++){ 
                var tempLabel:Label = new Label(); 
                tempLabel.selectable = true; 
                tempLabel.text = "Label"+i; 
                addChild(tempLabel); 
            } 
        } 
    } 
}
Das ist für die Performance ein Beinbruch.
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL-XML-DataGRid thiagojonas PHP und MySQL 0 27-02-2009 13:55
XML und DataGrid thiagojonas Flash 8 2 08-08-2008 19:57
Inhalte von einem Datagrid in ein zweites Datagrid übergeben...?! dahoody Flash MX 2004 0 16-02-2005 14:19
DataGrid silentx Komponenten und SmartClips 7 18-08-2004 12:03
DataGrid nemaxtowni Flash MX 2004 8 10-07-2004 14:10


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele