• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > Flash erweitern > Komponenten und SmartClips

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-11-2004, 10:08   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Wien
Beiträge: 93
Question ComboBox CellRenderer in DataGrid - merkwürdiges Problem

Hallo,

Ich hab ein kleines Problem mit einem ComboBox CellRenderer in einem Datagrid.

Gewünschte Funktionsweise:

Solange die jeweilige Reihe nicht selektiert wird, wird in der Spalte price ein textfield bzw. label angezeigt. Selektiere ich jetzt die Reihe wird das TextField durch eine ComboBox ausgetauscht und ich kann die Werte beliebig ändern.

Es funktioniert auch alles recht schön, jedoch bis auf die Tatsache das sobald ich in der ComboBox einen anderen Wert ausgewählt habe und danach die Spaltengröße verändere, alle Zellen bei denen sich der ComboBox.selectedIndex geändert wurde um ca. eine Reihenhöhe nach oben verschoben wird. (y coord der celle ändert sich von 0 z.b auf -35)

Ich habe schon versucht über das columnStrech Event in jeder Zelle bei der der Wert verändert wurde abzufangen und den y wert neu zu setzen, jedoch passiert das verschieben der Zelle anscheinend erst nachdem columnStretch ausgelöst worden ist. Momentan repositionier ich die Zelle neu wenn setValue ausgelöst wird, aber das ist nicht wirklich eine gute Lösung..

Hier ein testcode für frame 1:
PHP-Code:
import mx.controls.gridclasses.DataGridColumn;

myDataGrid.addColumn(new DataGridColumn("name"));
var 
dGC:DataGridColumn = new DataGridColumn("price");
dGC.cellRenderer "ComboBoxCell";
myDataGrid.addColumn(dGC);
myDataGrid.width 150;
var 
myDP:Array = new Array({name:"Chris"price:1}, {name:"Nigel"price:2});
myDataGrid.dataProvider myDP
ComboBoxCell.as:
PHP-Code:
import mx.core.UIComponent;
import mx.controls.*;
import mx.utils.Delegate;

class 
ComboBoxCell extends mx.core.UIComponent {
    var 
comboBox:ComboBox;
     var 
owner;
    var 
listOwner;
    var 
singleLineLabel:TextField;
    var 
getCellIndex:Function;
    var 
getDataLabel:Function;
    var 
oldY:Number;

    public function 
ComboBoxCell() {}

    public function 
createChildren():Void {
        
singleLineLabel createLabel("singleLineLabel"10);
        
singleLineLabel.styleName listOwner;
        
singleLineLabel.selectable false;
        
singleLineLabel.tabEnabled false;
        
singleLineLabel.background false;
        
singleLineLabel.border false;
        
comboBox ComboBox(createClassObject(ComboBox"statusComboBox"this.getNextHighestDepth(),{visible:false}));
        
comboBox.addItem("one");
        
comboBox.addItem("two");
        
comboBox.addItem("three");
        
comboBox.addEventListener("change"Delegate.create(thisonComboBoxChange));
        
Delegate.create(thisonColumnStretch));
        
oldY this._y;
        
size();
    }

    public function 
size():Void {
        
comboBox.setSize(__width-2,Math.max(__heightlistOwner.rowHeight -2));
        
singleLineLabel.setSize(__width__height);
        
//listOwner.redraw();
        
this._y oldY;
    }

    public function 
getPreferredHeight():Number {
        return 
50;
    }

    public function 
setValue(suggested:Stringitem:Objectselected:String):Void {
        
comboBox.selectedIndex item.price;
        if(
item != undefined){
            if(
selected == "normal"){
                
singleLineLabel.text comboBox.selectedItem.label;
                
singleLineLabel._visible true;
                
comboBox.visible false;
            }
            if(
selected == "selected"){
                
comboBox.visible true;
                
singleLineLabel._visible false;
            }
            
this._y oldY;
        }
    }
    
    public function 
draw(){
        
this._y oldY;
    }
    
    public function 
onComboBoxChange(eventObj) {
        var 
index:Object getCellIndex();
        var 
colName:String listOwner.getColumnAt(index.columnIndex).columnName;
        
listOwner.dataProvider.editField(index.itemIndexcolNameeventObj.target.selectedIndex);
        
listOwner.addEventListener("columnStretch"Delegate.create(thisonColumnStretch));
    }
    
    public function 
onColumnStretch(eventObj) {
        
this._y oldY;
    }

Wär super wenn irgendwer von euch eine Idee hätte, steh momentan ein bisschen an =(.

greez

Christoph
__________________
----------------------------
Yesssssssssssssssssssssssss
ripcurlx 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 aus.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele