PDA

Volledige versie bekijken : panel laten verschijnen met button


inge88
%Europe/Berlin %751 %2006, 18:01
Hi,

Ik wil in Flex een panel laten openen doormiddel van een button, deze panel moet ook weer te sluiten zijn. Ik heb alleen geen idee hoe ik dit moet aanpakken...

TheDutch
%Europe/Berlin %846 %2006, 20:18
Hey Inge!

Leuk dat je ook aan de slag gaat met Flex 2 :).

Ik was zojuist de stappen aan het uitleggen maar bedacht me dat een voorbeeld het beter zou doen. Die ga ik even voor je maken. Tot zo!

(met main bedoel ik het hoofdbestand van jouw project)

main.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">

<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;

/*
myComponents is de directory onder de hoofddirectory
waar ik het component 'MyTitleWindow' heb opgeslagen.
*/
import myComponents.MyTitleWindow;
import mx.core.IFlexDisplayObject;

private var myTitleWindowPopUp:IFlexDisplayObject;

private function openMyTitleWindow(event:MouseEvent):void{
myTitleWindowPopUp = PopUpManager.createPopUp(this, MyTitleWindow, false);
PopUpManager.centerPopUp(myTitleWindowPopUp);
}
]]>
</mx:Script>

<mx:Button label="Open MyTitleWindow" click="openMyTitleWindow(event)" />

</mx:Application>


MyTitleWindow.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="400"
height="300"
showCloseButton="true"
close="closeTitleWindow(event)">

<mx:Script>
<![CDATA[
import mx.events.CloseEvent;
import mx.managers.PopUpManager;

private function closeTitleWindow(event:CloseEvent):void{
PopUpManager.removePopUp(this);
}
]]>
</mx:Script>

</mx:TitleWindow>


Een TitleWindow is precies hetzelfde als een Panel. Het enige wat TitleWindow meer heeft is de standaard mogelijkheid om een sluitknop zichtbaar te maken waarmee je het window weer kunt sluiten zoals je in mijn code ziet.

Ik hoop dat het allemaal duidelijk voor je is. Zo niet dan hoor ik het wel :).

inge88
%Europe/Berlin %590 %2006, 14:10
Hi, thanks voor je reactie... deze code had ik inmiddels zelf ook in de help gevonden, alleen ik wil niet slechts informatie erin proppen... ook een geheel formulier met submitknop etc. en dat is volgens mij onmogelijk als je dat allemaal in een functie moet gaan verwerken, heb het uiteraard geprobeerd, en niets dan problemen.. ik heb nu het volgende.. dat prima werkt zoals ik t wil. Er is een canvas waarin alle informatie, formulieren etc gezet kan worden, gewoon in "flextaal". Deze canvas is eigenlijk altijd al aanwezig; maar 0 bij 0 pixels, dus niet te zien. Met de functie resize die wordt aangeroepen met een klik op de button; krijgt de canvas een nieuwe hoogte en breedte mee; waardoor ie dus als t ware verschijnt. Het sluiten werkt op dezelfde manier; dan krijgt hij de waarde 0 bij 0 mee. Zie hieronder:

functions.as
private function resize(canv):void {
if (canv.width == 0) {
canv.width = 600;
canv.height = 400;
canv.x = 214;
canv.y = 153;
} else if (canv.width == 600) {
canv.width = 0;
canv.height = 0;
}
}


mxml bestand

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script source="functions.as"/>

<mx:Button label="Nieuw content item" click="resize(createCanv)"/>

<mx:Canvas id="createCanv" x="0" y="0" width="0" height="0" backgroundColor="#ffffff" resizeEffect="Resize" cornerRadius="6" borderStyle="solid" borderColor="#dddddd">
<mx:Button label="Sluiten" left="2" right="2" bottom="2" click="resize(createCanv)"/>
</mx:Canvas>
</mx:Application>


Nu nog een manier bedenken waarop het laden van de inhoudt canvas pas bij het vergroten ervan gebeurd.

TheDutch
%Europe/Berlin %625 %2006, 15:00
Inge88, ik denk dat je jezelf eens moet verdiepen in States binnen Flex 2. Dat is volgensmij precies wat jij zoekt. Leg anders eens in het kort en duidelijk uit wat je wilt bereiken dan kan ik je denk ik precies vertellen hoe je het het beste zou kunnen opzetten :).

inge88
%Europe/Berlin %549 %2006, 13:11
Ik vind deze oplossing prima zo :) de informatie die ingeladen moet worden, is trouwens niet veel.. maargoed. View states, worden die niet ook in geladen bij het openen van de applicatie (dus daarbij ook de informatie die erin staat)?

TheDutch
%Europe/Berlin %911 %2006, 21:52
Nee hoor, de informatie kan volledig dynamisch zijn dmv. bindings.

Greenstar
%Europe/Berlin %662 %2006, 15:53
hey kunnen we dit ook doen in action scrips in flash?????
ik wil ook dat ik met 1 knop dus het menu opent en volende knop een text scherm.
Maar ik krijg het nog niet echt voor elkaar

TheDutch
%Europe/Berlin %759 %2006, 18:14
Open even een nieuw onderwerp in het "ActionScript" forum, dus niet in het forum waar dit onderwerp in staat :).

Greenstar
%Europe/Berlin %572 %2006, 13:44
Ja sorry kwam er iets te laat achter dat dit Flex 2.0 & ActionScript 3.0 was.
Want was aan het zoeken door het forum :S.
Maar ikhad al 1 geopent