Ever since upgrade to XE6 there seems to be a bug in the application menus when you use styles, best explained with these screenshots:
The 2nd screenshot has the "22" item Visible set to False
Delphi XE6 is using a outdated version of the VCL Styles Utils project to style the popup menus. This issue doesn't happen if the last version of the VCL Styles Utiles Project is used as replacement of the Embarcadero version. So as workaround you must download the VCL Styles Utils project from the repository, then add the units Vcl.Styles.Utils.Menus, Vcl.Styles.Utils.SysControls and Vcl.Styles.Utils.SysStyleHook to your project and finally comment or remove the Line (27) {$UNDEF UseVCLStyleUtilsMenu} in the Vcl.Styles.Utils.Menus unit.
Related
I am developing a mobile app in FMX where i need Popupmenu but it is showing disable in Tool Palette i cant use it but in VCL its enabled in Tool Palette and can use it. I just want to know if Firemonkey supports Popupmenu or my installation is having problems or we have to use other tools instead of Popupmenu in FMX? or what else can I do?
and actually i opened one VCL project and copied popupmenu from there to FMX and wrote code on one button and that code is
procedure TFRM_Party.BTN_Party_OptionClick(Sender: TObject);
begin
PopupMenu1.Popup(10,10);
PopupMenu1.Parent := Self;
end;
this code is not showing any error and also not performing also.
what to do? anybody having idea?
The short answer to your question is "Yes", you ought to be able to use the FMX version of TPopupMenu in a project created from File | New |Multi-Device Application in the IDE. If you can't find the FMX TPopupMenu on the Component Palette, something must be wrong with your Delphi install. I'm not quite sure what you mean when you say that it's "disabled" - components are usually either on the Component Palette or not, I don't recall seeing one looking disabled there.
You don't say in your question which version of Delphi you are using, but if it has FireMonkey at all, AFAIK it definitely ought to have the FMX version of TPopupMenu.
In Delphi 10.2 Seattle, for example, the FMX TPopupMenu appears on the "Standard" tab of the component palette, and is contained in the source unit FMX.Menus along with TMenuBar and TMainMenu, amongst others.
If you go to Component | Install packages in the IDE, the pop-up should show Embarcadero FMX Standard Components in the list, which is the file dclfmxstd250.bpl in the bin folder of your Delphi install. If that package isn't listed, that explains why you can't find the FMX TPopupMenu, but if that's the case for you, your Delphi ought to be lacking a lot more FMC components besides TPopupMenu. However, it should be easily solved by installing the .bpl file (or equivalent in your Delphi version). If the package is there, clicking the Components button to the bottom right of the pop-up should bring up the entire list of FXM standard components (which in my case does include TPopupMenu).
If your Delphi does include the Embarcadero FMX Standard Components but is still lacking TPopupMenu, you might try creating a new Package, adding FMX.Menus.pas to it and compiling and installing it in the IDE.
BTW, although it is possible to set up a combined FMX + VCL project (Google for how), just because you might be able to put a VCL TPopupMenu on an FMX Form doesn't mean that it's going to work.
Components are Grayed if you can't use its on current OS(your current choice in top combobox)
I've ran into a problem with "Vista Dialogs" in "Delphi 10 Seattle" yesterday. It seems to not work well with some VCL Styles.
This bug occured while using "Windows 10 Dark" as default style in my app.
So my immediate thought was that Vista Dialogs does not work with Custom VCL Styles, but when using "Windows" as a default style and using Windows 10 as OS the dialog works fine.
I've uploaded two pictures, one with the style applied showing the visual bug and one without it, working just fine.
Without "Windows 10 Dark" VCL Style applied
With "Windows 10 Dark" VCL Style applied
I've researched about this, this error is mentioned in other posts, but this bug is not what those posts are about...
Anybody understands why this happen? and how can I fix it?
The VCL Styles version included in RAD Studio only can style the classic dialogs, If you want full support for the New Dialogs you must use the VCL Styles Utils project.
Just install the library and add these units to your project.
uses
Vcl.Styles.Utils.Menus, //Popup and Shell Menus (class #32768)
Vcl.Styles.Utils.Forms, //dialogs box (class #32770)
Vcl.Styles.Utils.StdCtrls, //buttons, static, and so on
Vcl.Styles.Utils.ComCtrls, //SysTreeView32, SysListView32
Vcl.Styles.Utils.ScreenTips, //tooltips_class32 class
Vcl.Styles.Utils.SysControls,
Vcl.Styles.Utils.SysStyleHook;
I just upgraded from Delphi 2009 to Delphi XE8. Doing so has changed the appearance of the buttons on the toolbar of my program.
When compiled with Delphi 2009, it looked like this:
But now with Delphi XE8, it looks like this:
It seems to me that this is related to the Down property. If a Down property of a button is true, then its background will be blue. If I click on the button then that will change the Down property to false and the button will lose the blue background.
Does anyone know what might be causing the blue background and how I can eliminate it?
I am on Windows 8.1.
Followup: David's answer that this is the default display for Windows 8.1 is correct. Checking other programs, I see they do this as well.
I wasn't expecting this to be the default because my program compiled with Delphi 2009 didn't do this. But as David also explained, that's because Delphi 2009 did not have built in theme support, but Delphi XE8 does. (It may have been added in Delphi XE2, but don't quote me on that)
David's mentioned the manifest as a possible cause. It wasn't in this case, but he alerted me that I may have multiple manifests and should check for it.
So the final answer to my question is that I don't want to eliminate the blue background. It is the Windows 8.1 default way of displaying Down buttons, and I want to display the native theme by my program.
Your D2009 program is not themed, but your XE8 program is themed. By that I mean that the XE8 includes an application manifest that specifies version 6 of comctl32. Your D2009 program does not include a manifest, or does not include that part of the manifest which requests comctl32 version 6.
The visual appearance of the XE8 program is the native platform appearance, and on the face of it, it would be normal to follow the platform's lead. So the option that I would opt for is to leave the appearance as the platform standard. That is go with the XE8 version.
However, to answer your question, you can revert to the old appearance by removing the comctl32 v6 part of the manifest. This will affect other parts of your program too. If you only want to disable themes for the toolbar, that can be achieved with SetWindowTheme.
As the title says really. How can I add an FMX form to a delphi package? In the package I have a Tpanel descendant component - which is all installed fine. What I'd like to do is include a form in the package so that when I click on the panel at runtime the form pops up for example. (I don't want to use the FMX form at design time - just at runtime, so I just want to include the FMX form as in the package, the component has design time properties though)
It seems I can only add a VCL form to the package - when I right click and 'add new' to the package, it tries to add the VCL to the package - which I don't want. I want to run it on OSX.
I've found plenty of adding VCL forms e.g. Adding forms and frames to packages probably something obvious I'm missing - tia
Delphi XE6 on Windows 8/OSX target
Packages have affinity to a particular framework. Your package appears to be a VCL package. In the .dproj file you will find
<FrameworkType>VCL</FrameworkType>
Change this to
<FrameworkType>FMX</FrameworkType>
to have affinity to FireMonkey.
Although I've not done so recently, I expect that you get to make the framework affinity choice when you create the package. Presumably you chose VCL. Or the package was created before FMX existed and the project upgrade process added (correctly) the VCL framework setting.
To define the VCL styles for my application at runtime, I found the following link DELPHI VCL STYLES.
Is there also an option to set the VCL style for my appliaction during the compilation process using finalbuilder tools ?
Turns out I somehow have more than one profile on SO. Here's the screenshot