Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-05-2011, 11:30   #1 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Data Grid itemRender Schrift beim Scrollen

Hallo Liebes Forum!

Habe Folgendes Problem!

Fülle ein Datagrid mit Daten. In die Link Spalte kommt ein LinkButton wenn ein Link vorhanden. Habe das mit einem Canvas realisert der nur sichtbar ist falls ein Link in der Linkspalte eingetragen ist. Geht so weit auch, nur wenn ich scrolle wird die Schrift immer dicker. Mein Verdacht er der Linkbutton wird jedesmal überschrieben.
Vllt kann mir jemand einen Tipp geben. Bin ziemlich Ideenlos;

Hier der Code zu ItemRender

PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="30" >
    
    <mx:Script>
        <![CDATA[
        
            
            import mx.controls.Label;
            import mx.controls.LinkButton;
            import mx.core.*;
            import mx.events.FlexEvent;
            
            private var _data:Object;    
            
            override public function set data(value:Object):void
            {
                _data = value;
            
             if (_data.link ==""){
                this.alpha=0; //canvas unsichtbar
                
                }else{
                this.alpha=1; //canvas sichtbar
                    this.updateDisplayList(unscaledHeight,unscaledWidth);
                    var lnk:LinkButton = new LinkButton();
                    this.addChild(lnk);
                    //this.addEventListener(FlexEvent.DATA_CHANGE,updateDisplayList);
                    lnk.label = "Link";
                    //lnk.enabled= true;
                    
                    lnk.addEventListener(MouseEvent.CLICK, 
                        function():void {
                            navigateToURL(new URLRequest(_data.link));
                        }
                    
                    );
                    
                            }
            }
            override public function get data():Object
            {
                return _data;
            }
        ]]>
    </mx:Script>
</mx:Canvas>

Danke im Voraus!
burki ist offline   Mit Zitat antworten
Alt 26-05-2011, 11:49   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Ja, du baust quasi beliebig viele LinkButtons. Erzeuge einen in createChildren und steuere dann dessen Sichtbarkeit.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-05-2011, 13:13   #3 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Danke Omega!

Hab mir mal Deinen Vorschlag zu Herzen genommen und mein Code angepasst, aber jetzt stürzt er Komplett ab. Vllt findet ja jemand den Fehler.

Der neue Code

PHP-Code:
<![CDATA[
        
            
            
import mx.controls.Label;
            
import mx.controls.LinkButton;
            
import mx.core.*;
            
import mx.events.FlexEvent;
            
            private var 
_data:Object;    
            
            private var 
lnk:LinkButton;
            
            
            
            
            
            
override protected function createChildren():void {
                
                
                
super.createChildren();
                
                    {
                    
                    var    
lnkLinkButton = new LinkButton();
                    
                    
lnk.label="Link";
                }
                
            
                
            }
            
        
            
override public function set data(value:Object):void
            
{
                
_data value;
            
                
                
lnk.label "Link"
               
                if (
_data.link ==""){
                
//lnk.alpha=0; //canvas unsichtbar
                
                
}else {
                    
this.addChild(lnk);
                    
///lnk.alpha = 1;
                    //lnk.enabled= true;
                    
                    
lnk.addEventListener(MouseEvent.CLICK
                        function():
void {
                            
navigateToURL(new URLRequest(_data.link));
                        }
                    
                    );
                    
                        
                }
            }
            
            
override public function get data():Object
            
{
                return 
_data;
            }
            
        ]]> 
Dankeschön!!!
burki ist offline   Mit Zitat antworten
Alt 26-05-2011, 14:08   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Bitte unbedingt den Flex Component Livecycle anschauen.
Code:
<mx:Script>
	<![CDATA[
	import mx.controls.LinkButton;

	private var _data:Object;
	private var _linkButton:LinkButton;
	private var _dataChanged:Boolean;

	override public function set data(value:Object):void
	{
		super.data = value;
		_data = value;
		_dataChanged = _data != value;
		invalidateProperties();
	}

	override protected function commitProperties():void
	{
		super.commitProperties();

		if (data)
		{
			_linkButton.addEventListener(MouseEvent.CLICK, linkButton_clickHandler);
		}
		else
		{
			_linkButton.removeEventListener(MouseEvent.CLICK, linkButton_clickHandler);
		}

		if (_dataChanged)
		{
			_dataChanged = false;
			_linkButton.visible = _data ? _data.link != "" : false;
		}
	}

	override protected function createChildren():void
	{
		super.createChildren();

		if (!_linkButton)
		{
			_linkButton = new LinkButton();
			_linkButton.addEventListener(MouseEvent.CLICK, linkButton_clickHandler)
			_linkButton.label = "Link";
			addChild(_linkButton);
		}
	}

	private function linkButton_clickHandler(event:MouseEvent):void
	{
		navigateToURL(new URLRequest(_data.link));
	}
	]]>
</mx:Script>

Geändert von Omega Psi (26-05-2011 um 14:54 Uhr)
Omega Psi ist offline   Mit Zitat antworten
Alt 26-05-2011, 14:31   #5 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Tausend Dank lieber Omega!

Darf ich noch mal kurz lästig sein?
Aber leider geht Deine Version nicht. Der Flashplayer stürzt ab;
Folgende Meldung schmeißt er:

PHP-Code:
TypeErrorError #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht m�ch.
    
at myurlbutton2/commitProperties()[C:..Adobe Flash Builder 4.5MeintTestsrcmyurlbutton2.mxml:26
Blöde Frage:
am Canvas container kanns nicht liegen?

PHP-Code:
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100" height="30" 
burki ist offline   Mit Zitat antworten
Alt 26-05-2011, 14:39   #6 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Ich hab noch eine Anpassung im Code gemacht, noch mal testen.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-05-2011, 14:52   #7 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Nochmals Vielen Dank!

Der code läuft, nur zeigt er in jeder spalte nun einen Link an, auch wenn keiner eingetragen ist.

Ich weiß ich bin lästig
burki ist offline   Mit Zitat antworten
Alt 26-05-2011, 14:55   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Der Vergleich war falsch. Teste noch mal... aber solche Fehler kann man auch alleine finden.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-05-2011, 15:02   #9 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
_linkButton.visible = _data ? _data.link != "" : false;

Zitat:
Der Standardwert für eine Variable, die mit dem Datentyp „String" deklariert ist, lautet null. Der Wert null ist nicht das Gleiche wie eine leere Zeichenfolge (""), obwohl beide das Nichtvorhandensein von Zeichen darstellen.
also etweder im Model abfangen oder
_linkButton.visible = _data ? _data.link != null : false;
bzw.
_linkButton.visible = _data ? _data.link : false;
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 26-05-2011, 15:08   #10 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Vielen Dank Euch Beiden!

Aber die Link buttons kommen noch immer in jeder Spalte vor! Hab jetzt auch die Mildesign variante durchprobiert. Geht leider auch nicht.


lg
burki ist offline   Mit Zitat antworten
Alt 26-05-2011, 15:19   #11 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Auf was für einen Wert ist _data.link denn gesetzt wenn kein link vorhanden ist ?
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 26-05-2011, 15:25   #12 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Momentan keiner!

data.link ist ja nur ein String wo die url drin steht wenn es eine gibt...
burki ist offline   Mit Zitat antworten
Alt 26-05-2011, 15:43   #13 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
bitte definiere "Keiner"
ist es null, "", " ", undefined, "test" etc.
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 26-05-2011, 15:50   #14 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Hallo Mildesign!
"" wenn kein Url. besser wenn ich in die Datenbank einen wert reinschreibe wenns keine url gibt...? Vllt leichter dann mit if abzufragen
burki ist offline   Mit Zitat antworten
Alt 26-05-2011, 16:36   #15 (permalink)
elanimal
 
Benutzerbild von burki
 
Registriert seit: Oct 2002
Ort: Tirol
Beiträge: 378
Hab jetzt eine Lösung gefunden schreib sie gleich ins Forum!

Vielen vielen Dank Euch Beiden noch für die Hilfe!
burki 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
Data Grid und Drag and Drop mvkroiden Flash MX 2004 0 13-03-2005 17:18
Data Grid bamsi Komponenten und SmartClips 1 26-07-2004 19:18
[Data Grid] silentx Komponenten und SmartClips 3 12-07-2004 09:24
[Data-Grid] - Zeilen / Spaltenköpfe silentx Komponenten und SmartClips 0 11-07-2004 18:44
[Data Grid] silentx Komponenten und SmartClips 0 06-07-2004 07:15


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele