How do I add buttons to a FireMonkey toolbar? - delphi

With 10 years of experience in development, I could not put new buttons on the Toolbar FireMonkey. Could anyone help me?

There is no component editor menu-item to add buttons or seperators, but you can drag buttons from the toolpallet to the toolbar. Or select the toolbar in the form and press F6. Type the name of the control you want on the toolbar and press enter.

TToolBar is now simply a container. You must drop your own controls onto it.
To add a control to a ToolBar, make sure that your ToolBar is selected on the form, select your child control in the Tool Palette, and then click the location in the ToolBar that you wish your child control to appear.
Another way to do this is to ensure that the ToolBar is selected and double-click the control in the Tool Palette. Whatever control is selected becomes the parent.
Many of the new FireMonkey UI controls are now simply containers, including TStatusBar.
To add a text line to TStatusBar, you must add your own TLabel or other control.
I found that the best way to put an image on a button was to literally drop a TImage onto the button and unset the TImage's HitTest property.
All FireMonkey controls are containers and can have child controls now. It might take a little longer to configure your UI, but you have a lot of flexibility.
Use the TLayout control for dividing up the parent control and aligning your controls. Use the Margin and Padding properties to adjust the spacing.

Related

How do I 'revert to inherited' if control is not clickable?

Assume the following situation:
FrmBase has a TPanel named PnlClient, align alClient
FrmDescendant inherits from FrmBase
In FrmDescendant I change a PnlClient property
In FrmDescendant I place another control (say another TPanel named PnlDescendant) on PnlClient and align it alClient.PnlDescendant now completely covers PnlClient
I place lots of other components on PnlDescendant, not necessarily aligned, so I'm afraid to change PnlDescendant (e.g. setting align to alNone and resizing) and lose positions
How can I execute 'revert to inherited' for PnlClient?
There's nothing in the main menu, or in the popup menu for the controls in the Structure View...
Currently using Delphi 10.4.1 Sydney
This is easy for a keyboard user like myself:
Click on PnlDescendant in the form editor to make it the focused and selected control.
Press Esc to select its parent, PnlClient.
Press the Menu key on your keyboard to display the context menu of PnlClient. If you have a cheap keyboard without a Menu key, press Shift+F10 instead.
Click on "Revert to Inherited". (Or, much faster: press the menu item's underlined character, probably I.)
(But notice that this will remove PnlDescendant completely. Probably you didn't want that, but that's how it works.)

How to place a component above a TMainMenu?

When I add, for example, a TPanel to a form and align it using alTop and then add a TMainMenu to the same form, the main menu position overrides the panel position such that the Main Menu remains topmost on the form with the panel appearing below it.
Is it possible to override the TMainMenu position so I can add a component like a Panel above it and the Main Menu below it?
Alternatives like TActionManager and/or TToolBar are not suitable because of BiDi compatibility issues.
No, the main menu is a Windows component and its location is fixed. This isn't a Delphi limitation but a restriction on how menus work with windows in Windows.
From MSDN (emphasis mine) :
Only an overlapped or pop-up window can contain a menu bar; a child window cannot contain one. If the window has a title bar, the system positions the menu bar just below it. A menu bar is always visible.
If you want menu-like behaviour in a component which you can freely place anywhere on your form, you would need to either write one yourself or look for third-party alternatives.

Button tabs with images in delphi

I would like to dvelop an app with a GUI like CCleaner, where you have a left aligned tabs, (but not the typically wicvh contain only a word) with an image in a button.
I couldn't find the properties, probably because i'm working only with the installation of delphi XE2, an i have only the TTabControl on the win32 pallete.
i don't know how to create a form like this i call above. Can it be created with a ttabcontrol?
Could anyone help me? I want a form with a left tab with button in each option, that change the right side of the form...
On the Win32 palette there are TTabControl (as you know) and TPageControl which is similar to TTabControl but has separate pages (called TTabSheet) for each tab.
Both have a property TabPosition with 4 possible values: tpTop (default), tpBottom, tpLeft and tpRight. The text of the tabs are vertical for tab positions tpLeft and tpRight. Both tab controls also supports images in the tabs through the Images property which can take a TImageList as container for the images.
If you don't like the vertical text on the tabs, you can compose your form with separate buttons on the left and panels or frames as pages. As buttons you can use TBitBtn or TButton buttons placed directly on the form or on a panel if you like, or you can use a TButtonGroup All of these supports the TImageList mentioned above. For some you can have separate images for disabled, hovered (hot), selected and pressed states.
Read more about these controls in the help.

How to make an edit control in fmx transparent and hide its border?

How can I make an edit control in fmx transparent and at the same time hide the borders of the control, so it will blend into the control in the back?
What I am trying to do is to make a small Notes program where, when I double-click a tabitem, it shows an edit control to change the text of the tabitem.
Right click the edit control (let's say Edit1) and click 'Edit Custom Style'.
Expand 'edit1style1'.
Click background:TActiveStyleObject.
Clear the SourceLookup property.

How to avoid image is Hidden by Button

I have kept an TImage component at the Top-right corner of a bitbutton.While loading of Form some part of image is Hidden by Button as like in image .How to avoid this.? and also tell me how to find corner of a Button such that i can place my image correctly to show notification correctly in case of Dynamically loaded buttons.
Yours Rakesh.
A TImage cannot be brought in front of a TBitButton since a BitButton is a windowed control (TWinControl). Instead of a TBitBtn or a TButton, you can use a control which does not descend from TWinControl, like a TSpeedButton.
The top-right corner of a button is at (Button.Left + Button.Width, Button.Top).
A TBitButton owns a window handle and only controls with an own window handle can be placed in front of it. You could place your bitmap on a TPanel (TPanel inherits from TWinControl and has a window handle), and this panel you can bring in front of any other control. Set the BorderStyle of the panel to bsNone, so it only works as a container and is not visible.
P.S. If your bitmap is as simple as the one in your example, you could directly write onto the panel and set the colors accordingly.

Resources