This is not a question, but a help for my future me!
When you load a layout your RadTitleElement miss events, you cannot directly set .Click event, for example, on the RadTitleElement object memory var.
You need to find out the element and set the event.
So the code below shows how to do it.
void LoadLayout(RadPanorama panorama, string userFileConfig)
{
panorama.LoadLayout(fileUserConfig);
Fire("radTileElement1").click += (ss,ee) => DoSomething();
Fire("myCustomElementName").click += DoSomething2();
//....
}
#if (DEBUG)
private string missingBlocks { get; set; } = "";
#endif
private RadTileElement Fire(string name)
{
for (var n = 0; n < radPanorama1.Groups.Count(); n++)
{
var grp = (TileGroupElement)radPanorama1.Groups[n];
foreach (RadTileElement item in grp.Items)
{
if (item.Name.IsEquals(name)) return item;
}
}
#if (DEBUG)
missingBlocks += ";" + name;
// This guide you if goes wrong any .Name property
System.Diagnostics.Debug.WriteLine(missingBlocks);
#endif
return new RadTileElement();
}
How use it?
Any were you like restore a layout:
LoadLayout(radPanorama1, mySavedLayoutFile);
#jefferson2020
Hello! I'm new to the panorama and didn't dive into the code yet, so I might ask some foolish question - sorry in advance.
Question 1. I see in the panorama demo that if the user drags and drop the tiles, changing their order and position, the rest of the tiles are automatically rearranged. Is this done in the demo code, or is it a method of the panorama?
Is it possible to rearrange automatically the tiles after changing the size of on of the tiles? (I saw a thread where it was said that we have to do it manually, but it was in 2014, so maybe...)
Question 2. Is it possible for the user to resize the tiles with the mouse - drag from the right bottom corner for example? I guess if it is not an option of the control, there are still some other possibilities-we can check MouseOver, see if the position of the mouse is at the corner of a tile, change the cursor to indicate this<->, manage mouse click etc
Greetings.
Using the code below, it is possible to set vertical group layout :
RadPanorama1.PanoramaElement.GroupLayout.Orientation = Orientation.Vertical
BUT,
what would be the usage as it disables the scroll ball. I found relevant threads, but It would be helpful for VB.NET developers if you just not provide solutions in C#, but also in VB.NET (I already know C# can be converted to VB.NET, but it isn't comfortable in many cases).
For instance, I edited the relevant thread to create custom Panoroma :
Imports
Telerik.WinControls
Imports
Telerik.WinControls.Layouts
Imports
Telerik.WinControls.UI
Class
CustomPanorama
Inherits
RadPanorama
Private
vScroll
As
RadScrollBarElement
Protected
Overrides
Sub
CreateChildItems(
ByVal
parent
As
Telerik.WinControls.RadElement)
MyBase
.CreateChildItems(parent)
Me
.vScroll =
New
RadScrollBarElement()
Me
.vScroll.ScrollType = ScrollType.Vertical
Me
.vScroll.StretchHorizontally =
False
Me
.vScroll.StretchVertically =
True
Me
.vScroll.MinSize =
New
System.Drawing.Size(16, 0)
Me
.vScroll.Alignment = System.Drawing.ContentAlignment.TopRight
Me
.PanoramaElement.Children.Add(vScroll)
AddHandler
vScroll.ValueChanged,
AddressOf
vScroll_ValueChanged
AddHandler
PanoramaElement.GroupLayout.RadPropertyChanged,
AddressOf
GroupLayout_RadPropertyChanged
AddHandler
PanoramaElement.TileLayout.RadPropertyChanged,
AddressOf
GroupLayout_RadPropertyChanged
Me
.ScrollBarAlignment = HorizontalScrollAlignment.Bottom
End
Sub
Private
Sub
GroupLayout_RadPropertyChanged(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.WinControls.RadPropertyChangedEventArgs)
If
e.Equals(RadElement.BoundsProperty)
AndAlso
sender =
Me
.GetCurrentLayout()
Then
UpdateVScroll()
End
If
End
Sub
Protected
Overrides
Sub
OnSizeChanged(
ByVal
e
As
EventArgs)
MyBase
.OnSizeChanged(e)
UpdateVScroll()
End
Sub
Private
Sub
UpdateVScroll()
vScroll.Maximum =
Me
.GetCurrentLayout().Size.Height
vScroll.LargeChange = Math.Max(0,
CInt
((
Me
.Size.Height -
Me
.PanoramaElement.ScrollBar.Size.Height)))
If
vScroll.LargeChange >= vScroll.Maximum
Then
vScroll.Visibility = ElementVisibility.Hidden
Else
vScroll.Visibility = ElementVisibility.Visible
End
If
If
Me
.PanoramaElement.ScrollBar.Visibility = ElementVisibility.Visible
Then
vScroll.Margin =
New
System.Windows.Forms.Padding(0, 0, 0,
Me
.PanoramaElement.ScrollBar.Size.Height)
Else
vScroll.Margin =
New
System.Windows.Forms.Padding(0)
End
If
End
Sub
Private
Sub
vScroll_ValueChanged(
ByVal
sender
As
Object
,
ByVal
e
As
EventArgs)
Me
.GetCurrentLayout().PositionOffset =
New
System.Drawing.SizeF(0, -
Me
.vScroll.Value)
End
Sub
Private
Function
GetCurrentLayout()
As
LayoutPanel
If
Me
.ShowGroups
Then
Return
Me
.PanoramaElement.GroupLayout
End
If
Return
Me
.PanoramaElement.TileLayout
End
Function
Public
Overrides
Property
ThemeClassName
As
String
Get
Return
GetType
(RadPanorama).FullName
End
Get
Set
(
ByVal
value
As
String
)
MyBase
.ThemeClassName = value
End
Set
End
Property
End
Class
But, in this way, we have to create all elements such as tiles programmatically, really difficult and annoying in comparison with visual creation.
How to enable vertical scrollbar for vertical Group Layout ?
Thanks in advance.
Greetings,
Using the Panorama control , it is possible to design panels similar to Windows start menu panel. But I It would be even better if there had been a fade-in effect for tiles when appearing for the first time. I attached a gif image that I recorded from my Windows 8.1 start menu panel to illustrate what I'm talking about.
P.S I tried making tiles invisible and then making them visible one by one , like every 10 milliseconds, through rows and columns of groups in the control. Not bad, but changing visibility this way isn't smooth as the fade-in effect .
Any trick ?
I have a couple questions regarding Panorama:
s it possible to change the scroll type from horizontal to vertical
Hello,
At this moment, when using a touchscreen, a pangesture on the scrollbar, that's on the bottom of the Panorama results in a pangesture event.
Is it possible that this pangesture ON THE SCROLLBAR controls the scrollbar?
(see video : http://www.soundware.nl/Data/20190103_161853.mp4)
The pangesture on the rest of the Panorama-control needs to be intact.
Best regards
Patrick Vossen
Hello,
I'm testing RadPanorama for Windows Forms
I love the zooming feature (although having the ability to set an initial zoom value depending on the screen resolution would make it better), however I can't find how to make the tile text bigger.
When I go to the tile's properties, then font and make the font bigger, it automatically changes back to 'Segoe UI Light, 16pt'.
I then tried doing the same on the TileGroupElement itself, but its font always automatically becomes 'Segoe UI Light, 20.25pt'
I finally tried to change the font of the RadPanorama as a whole, and although the value does change, it doesn't have any effect on the tiles.
So how do I go about doing that? Thank you in advance :)
Hello,
I have a custom RadTileElement where the ripple animation is enabled.
The animation works when clicking the tile element, but is it possible to raise/start the ripple animation from code?
This to draw the attention of the user to the tile element.
Grtz Patrick Vossen
Hello
I am hiding a group via code at runtime with
carers.Visibility = Telerik.WinControls.ElementVisibility.Hidden
however the gap stays there, is there a function to auto reorganize so the next group to the right takes its spot
(fills in the gap)
if not, can set there order via code, or delete the group completely
all at runtime
thanks