Flex 4 - Vertical layout problem on TitleWindow - user-interface

This must be a simple problem, but I can't get my head around it. I have a resizable title window. Inside I just want a VGroup to hold the contents of the form and an HGroup to have a few buttons at the bottom. Very standard stuff.
<!-- Content -->
<s:VGroup id="content" height="340" width="100%">
...more stuff in here...
</s:VGroup>
<!-- Buttons -->
<s:HGroup id="buttonGroup" width="100%">
...buttons in here...
</s:HGroup>
Horizonal resizing works fine. However, I want it to behave such that when the TitleWindow is resized vertically that the buttons stay in the same place relative to the TitleWindow and the content VGroup is resized vertically. But I don't know what to set the height of the VGroup to?
Ideally it would be like this:
height="{this.parent.height - buttonGroup.height - top*
or something like that....

You can also try the following trick:
<s:VGroup id="layoutContainer" width="100%" height="100%">
<s:SkinnableContainer id="content" height="100%">
....content here....
</s:SkinnableContainer>
<!-- Buttons -->
<s:HGroup id="buttonGroup">
... buttons here...
</s:HGroup>
</s:VGroup>
The intent is to make the content-container take as mush as possible vertical space within the VGroup.
Let me know if that worked for you!

Use constraint properties.
You could try for AS:
content.top = 0;
content.bottom = buttonGroup.height;
buttonGroup.bottom = 0;
But better put it to MXML definition of the components
<s:VGroup id="content" top="0" bottom="{buttonGroup.height}" width="100%">
...more stuff in here...
</s:VGroup>
<s:HGroup id="buttonGroup" bottom="0" width="100%">
...buttons in here...
</s:HGroup>
Add some paddings and margins if you like

Related

<router-outlet> works fine but causes problems <page-router-outlet>

I am creating NativeScript - Angular app. I had a problem with routing inside my app with not working back button (back button in my smartphone, it is supposed to go back to previous page but it is turning off my app).
I was using in my app.component.html file so I changed it to and back buttons started to works like it supposed to but layout of my home page is completly destroyed - all objects in in overlap on themselfs and "Preview" ActionBar appears in one of .
<!-- app.component.html -->
<GridLayout class="page">
<ScrollView>
<GridLayout rows="80 *" columns="*">
<FlexboxLayout class="menu">
<Image class="menu" src="~/app/images/burger.png" width="10%"></Image>
</FlexboxLayout>
<ScrollView></ScrollView>
<GridLayout class="bialy" row="1" rows="*" columns="*">
<FlexboxLayout>
<GridLayout class="space"></GridLayout>
<page-router-outlet></page-router-outlet>
</FlexboxLayout>
</GridLayout>
</GridLayout>
</ScrollView>
</GridLayout>
<!-- app.css -->
GridLayout.page {
background: linear-gradient(-85deg, #08BD73, #02A373);
flex-direction: column;
}
GridLayout.bialy {
background: white;
flex-direction: column;
border-radius: 40 40 0 0;
justify-content: center;
}
<!-- home.component.html -->
<Button text="Add" [nsRouterLink]="['/new']"></Button>
<Button text="Watering" [nsRouterLink]="['/watering']"></Button>
<Button text="catalog" [nsRouterLink]="['/catalog']" ></Button>
What shall I do to make my app with the same as app version with
This is how version with looks like (screen 1):
And this is how version with looks like (and I want my app to look like this) (screen 2)
Set actionBarVisibility to never on page-router-outlet to hide the action bar.
Your home component doesn't seem to have any layout which may be the reason you are seeing only the last button, wrap them with a StackLayout.

Enable Telerik Rad Grid Horizontal Scrolling

I am trying to enable horizontal scrolling in telerik grid
I followed the example from demo.telerik.com but had no luck
Here is my code . can anyone help me with this .
by the way I am using telerik Grid In DNN with DnnGrid
<div class="panel-body">
<div>
<dnn:dnngrid allowfilteringbycolumn="true"
currentfilterfunction="Contains"
onitemdatabound="grd_ItemDataBound"
oncolumncreated="grd_ColumnCreated"
cssclass="grid"
id="grdWaitingForCommand"
runat="server"
autogeneratecolumns="true"
allowmultirowselection="false"
onitemcommand="grd_ItemCommand"
width="800px">
<ClientSettings EnablePostBackOnRowClick="true">
<Scrolling AllowScroll="True"
UseStaticHeaders="True"
SaveScrollPosition="true"></Scrolling>
<Selecting AllowRowSelect="True" />
</ClientSettings>
<HeaderStyle Width="225px"></HeaderStyle>
<MasterTableView >
<Columns>
<dnn:GridTemplateColumn
UniqueName="IndexColumn"
HeaderText="ردیف"
AllowFiltering="false">
<ItemTemplate>
<asp:Label ID="numberLabel" runat="server" Width="30px" />
</ItemTemplate>
<HeaderStyle Width="30px" />
</dnn:GridTemplateColumn>
</Columns>
</MasterTableView>
</dnn:dnngrid>
</div>
</div>
I had the same requirement. From our side the first part was to set the correct properties of the grid using the demo from Telerik. The next part was a javascript function, that was executing when the grid was created.
grid.ClientSettings.ClientEvents.OnGridCreating = "ShowHorizontalScroll"
The function sets overflow style to auto. You also may want to hide the vertical scrollbar because from what I remember, Telerik enables both horizontal and vertical scrollbars if you enable the feature.
The fix may not work in some browsers. The solution, that works for us, currently works on Chrome. Small changes may be needed to the styling if IE.
Now I saw, that the width of your column is smaller than the width of the grid. You can reduce the width of the grid or increase the width of the column and you should see the scroll.

AdvancedDataGrid Width more than the Parent Container?

Here is the hierarchy of my controls:
<Canvas width="100%" height="100%">
<ViewStack width="100%" height="100%">
<box id="box1" width="100%" height="100%">
<AdvancedDataGrid width="100%" height="100%"/>
</box>
<box id="box2" width="100%" height="100%">
<SomeOtherControl width="100%" height="100%"/>
</box>
</ViewStack>
</Canvas>
My ADG is having around 30 - 40 columns and i am seeing two horizontal scroll bars, 1 is coming from ADG which is ok but another one is coming from parent container, so it seems ADG's width is getting assigned more than the parent container.
I can't set the width of ADG to explicit value because it is causing problems in scaling.
Please advise/Help.
Instead of setting width="100%" on your ADG, set it to width="{box1.width}"

Flex 4 Application not showing to 100% in Browser

Hello I am having issue with showing everything from my flex application. It only shows around of the whole application.
My application is as such:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%"
xmlns:local="*">
<mx:ViewStack id="mainstack" width="100%" height="100%" >
<mx:HBox id="Mod1" width="100%" height="100%" label="Mod1" horizontalAlign="center" verticalAlign="middle">
<local:modloader url="Mod1.swf" id="mod1" />
</mx:HBox>
<mx:HBox id="Mod2" width="100%" height="100%" label="Mod2" horizontalAlign="center" verticalAlign="middle">
<local:modloader url="Mod2.swf" id="mod3" />
</mx:HBox>
<mx:HBox id="Mod3" width="100%" height="100%" label="Mod3" horizontalAlign="center" verticalAlign="middle">
<local:modloader url="Mod2.swf" id="mod3" />
</mx:HBox>
</mx:ViewStack>
</s:Application>
I also tried putting the following lines in initialize function of Application container but in vain:
systemManager.stage.scaleMode=StageScaleMode.SHOW_ALL (or TO_FIT);
systemManager.stage.align = StageAlign.TOP;
In fact when using SHOW.ALL..the whole application is as if squeeed to some 50% which makes everything small and this is not nice to view.
I also modified the index.template.html and have put the width and height to 100% instead to explicit values.
BUT my application only shows around 70%..the rest(at the bottom) go beyond the screen. (Just note that my screen resolution is 1366 x 768)*
Any bright idea why this does not work??
Try setting the minHeight property of your application to 100 and see if it helps.

Flex Component using global variable

I am using Flash Builder 4 Burrito Preview - builing a Mobile Application. I have a custom component called footer.mxml. That footer has 4 buttons, and one of them has a lable that is bound to cartValue. I am trying to maintain a global variable called cartValue within all views and footer component.
footer.mxml
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="64" chromeColor="#000000" fontSize="10">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<mx:CurrencyFormatter id="currencyFormatter"
currencySymbol="$"
useThousandsSeparator="true"
precision="2" />
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable]
public var cartValue:int;
]]>
</fx:Script>
<s:HGroup width="100%" contentBackgroundColor="#000000" paddingBottom="0" paddingLeft="0"
paddingRight="0" paddingTop="0">
<s:Button x="0" y="624.5" width="25%" height="64" label="Account" chromeColor="#2259AA"
enabled="true" fontSize="10" fontWeight="bold" icon="#Embed('assets/user.png')"/>
<s:Button x="121" y="624.5" width="25%" height="64" label="Orders" chromeColor="#2259AA"
fontSize="10" icon="#Embed('assets/doc_lines_stright.png')"/>
<s:Button x="241" y="624.5" width="25%" height="64" label="Help" chromeColor="#2259AA"
fontSize="10" icon="#Embed('assets/spechbubble.png')"/>
<s:Button x="360" y="624.5" width="25%" height="64" label="{currencyFormatter.format(cartValue)}" chromeColor="#2259AA"
fontSize="10" icon="#Embed('assets/shop_cart.png')"/>
</s:HGroup>
</s:Group>
RincoTest.mxml
<s:MobileApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="#000000" firstView="views.RincoTestHome"
>
<fx:Style source="RincoTest.css"/>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable]
public var cartValue:int;
]]>
</fx:Script>
<s:titleContent>
<s:Image left="1" top="3" width="173" height="75" backgroundAlpha="1.0" smooth="true"
source="assets/iphone_large.png"/>
</s:titleContent>
<s:navigationContent>
<mx:Spacer width="10" height="82"/>
</s:navigationContent>
</s:MobileApplication>
And this is how I am implementing it
<components:footer x="1.65" y="614.95" width="100%" height="64" cartValue="{cartValue}"/>
I have tried to bind Application.application.cartValue and
MobileApplication.application.cartValue. Neither of them work.
If there is a better way to maintain a cartValue across the entire application please let me know. This is my first attempt with Flex.
Thanks,
Ernie
Use a static variable in the component.
Reference it as ComponentName.staticVar. Usually, everything that needs to know about the global already knows about (e.g. imports) the component file.
Cheers
Another solution is using a singleton pattern: a single instance that everything references through a static accessor.
The effect is about the same. The only advantage to a static reference to an instance over static properties is that the instance can be part of an inheritance and can fulfill an interface.
I've also had some intermittent problems with binding to static values, but that might have been a previous version, PEBCAK, etc.
Cheers

Resources