Zurück   Flashforum > Flash > Flash erweitern > Komponenten und SmartClips

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-10-2008, 15:35   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 16
einzelne Zeile im DataGrid ändern

Hallo,

ich versuche gerade in einem zweisplatigen DataGrid die Schriftfarbe in der gesamten Zeile zu ändern, die gerade angeklickt ist. Also über beide Spalten hinweg. Außerdem soll die Zeile wieder die alte Farbe bekommen, sobald eine andere Zeile angeklickt wurde.
Ein bisschen habe ich schon mit dem CellRenderer rumgespielt, aber so richtig verstehe ich ihn nicht. Alle Beispiele, die ich finde, beziehen sich immer auf das Ändern einer Spalte, aber nie einer Zeile. Hat das schonmal irgendwer gemacht und kann es mir erklären?

Danke schonmal
Wanja ist offline   Mit Zitat antworten
Alt 22-10-2008, 15:35   #2 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 16
Ok, ich hab's selber heraus gefunden. Das hat mir weiter geholfen:
http://www.adobe.com/cfusion/webforu...&enterthread=y

Zuerst die TextFormats definieren, die man im DataGrid nutzen möchte:

PHP-Code:
colorTextFormat = new TextFormat();  
colorTextFormat.color 0x676767;
colorTextFormat.font "HelveticaNeue LT 55 Roman";
colorTextFormat.size 12;
StyleManager.setStyle("colorTextFormat",colorTextFormat);
            
highlightTextFormat = new TextFormat();  
highlightTextFormat.color 0xffffff;
highlightTextFormat.font "HelveticaNeue LT 55 Roman";
highlightTextFormat.size 12;
StyleManager.setStyle("highlightTextFormat",highlightTextFormat); 

Und dann Listener mit dem DataGrid registrieren um abzufangen, wenn ein item des DataGrids angeklickt usw. wird:

PHP-Code:
chapterDataGrid.addEventListener(ListEvent.ITEM_CLICK itemClickedListener);
chapterDataGrid.addEventListener(ListEvent.ITEM_ROLL_OVERitemOverListener);
chapterDataGrid.addEventListener(ListEvent.ITEM_ROLL_OUTitemOutListener);




private function 
itemOverListener(event:ListEvent):void {
            
    var 
cr0:CellRenderer chapterDataGrid.getCellRendererAt(event.index0) as CellRenderer;
    
cr0.setStyle("textFormat",StyleManager.getStyle("highlightTextFormat"));
            
    var 
cr1:CellRenderer chapterDataGrid.getCellRendererAt(event.index1) as CellRenderer;
    
cr1.setStyle("textFormat",StyleManager.getStyle("highlightTextFormat"));
}
        
        
private function 
itemOutListener(event:ListEvent):void {
            
      if(
event.index != event.target.selectedIndex){
                
         var 
cr0:CellRenderer chapterDataGrid.getCellRendererAt(event.index0) as CellRenderer;
         
cr0.setStyle("textFormat",StyleManager.getStyle("colorTextFormat"));
                
         var 
cr1:CellRenderer chapterDataGrid.getCellRendererAt(event.index1) as CellRenderer;
         
cr1.setStyle("textFormat",StyleManager.getStyle("colorTextFormat"));
     }
}
        
        
private function 
itemClickedListener(event:ListEvent):void{

    var 
cr0:CellRenderer chapterDataGrid.getCellRendererAt(event.index0) as CellRenderer;
    
cr0.setStyle("textFormat",StyleManager.getStyle("highlightTextFormat"));

    var 
cr1:CellRenderer chapterDataGrid.getCellRendererAt(event.index1) as CellRenderer;
    
cr1.setStyle("textFormat",StyleManager.getStyle("highlightTextFormat"));
            
            



Es fehlt natürlich noch das Zurücksetzen der zuvor ausgewählten Zeile, wenn eine neue angeklickt wurde. Aber das Prinzip stimmt jetzt hoffentlich.



Ursprünglich wollte ich den CellRenderer mit itemToCellRenderer() ermitteln. Da kam aber leider nur null heraus:

var cr:CellRenderer = chapterDataGrid.itemToCellRenderer(event.item) as CellRenderer;

Das steht zwar auch so in der Doku, ergibt für mich aber überhaupt keinen Sinn :"Die DataGrid-Komponente besitzt mehrere Zellen für jedes beliebige vorgegebene Element, daher gibt die item ToCallRenderer-Methode immer null zurück."

Weiß jemand wofür es diese Funktion gibt, wenn sie sowieso nur null zurück gibt? Bei Anderen scheint es aber mit dieser Methode zu funktionieren. Seltsam...

Geändert von Wanja (22-10-2008 um 16:00 Uhr)
Wanja ist offline   Mit Zitat antworten
Alt 03-03-2009, 19:40   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 61
cellRenderer dynamisch ändern

hey,

hab dazu eine ähnliche frage: ich würd gerne im nachhinein den cellRenderer einer spalte dynamisch - also auf einen klick hin - austauschen.

hab das so probiert,
Code:
private function changeSelectedCell(event:ListEvent)
{
        trace("change");
	columns[1].cellRenderer = ComboBoxCellRenderer;
}
außer der ausgabe tut sich da aber nichts.

weiß jemand, wie so was geht?

danke im voraus
zoidberg

Geändert von _Zoidberg_ (03-03-2009 um 19:42 Uhr)
_Zoidberg_ 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 13:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele