Why does the Component Palette change when I open a data module? - delphi

I installed Delphi 7 on Windows 7 x64. Things went well for while, but now, when I open or create a data module it messes up the component palette. By messes up, I mean it seems to scramble which tabs components are on, or hide them altogether. This is really unusual behaviour.
Uninstalling and reinstalling Delphi 7 hasn't helped.

The component palette is context sensitive, so that tabs that can't be used aren't displayed. (Visual components make no sense in a datamodule, because you can't put a visual component on a datamodule. There's no point in showing you components you can't use.) A tab that has only visual components on it will be totally hidden; if there is a mix of visual and non-visual components (like the Win32 tab), only the non-visual components will be displayed.
Switching to the design window for a form should display both visual and non-visual components, including making those hidden tabs visible again.

Related

Doubling component on "Standard" palette page

Recently I've installed the new Embarcadero Delphi 10.3 Rio, and noticed that some components on the Standard toolbar page are being doubled. Particularly, the doubled components are TMainMenu, TActionList and others. These components live in Embarcadero's Standard package.
I've looked through the list of installed packages and found some Embarcadero FMX packages with these components. Unchecking those packages (need to uncheck two FMX packages) didn't give a result.
Any idea how to fix this?
This is an IDE bug that affects only components in Standard VCL or FMX package.
Standard VCL controls are displayed twice on the Component toolbar https://quality.embarcadero.com/browse/RSP-19518
It is harmless, so you don't have to do anything about it.
Which standard package controls will be duplicated (or not at all) depends on the context.
If you don't have any application or package open, you will see both VCL and FMX controls on the toolbar (no duplicates). When you hover with the mouse over the component icon hint will tell you to which package control belongs.
If you have VCL based application or package open, you will have duplicate VCL standard controls. On the other hand if you have FMX based application or package open you will see duplicates from FMX standard controls package.
However, above behavior is not carved in stone. It is just what you can observe most of the time. Component toolbar behavior can be rather unpredictable at times.

TButtons and "runtime themes": peculiar behavior

Have you seen this?
I have a little utility application (for easy load / test xml generation from CDS and/or DBGo), and I had put some buttons (the poorest button of all, TButton) to trigger some actions.
I never paid attention to appearance, because I'm the only one that uses it. So today I added a new button, and they appeared different from the others in designer - but not when running. It's just an copy and paste process (change the button name, caption and event - the rest is equal to the origin).
When I looked the other buttons have an grey gradient and round corners, the button I copied and pasted not (just a bare rectangle). When running all buttons where just bare rectangles.
So I discovered that on designer, W7 and delphi are applying themes. On running, they are obeying the Project/Options/Application/Enable runtime themes flag.
This is annoying. There's a way to make Delphi doing that obeying the project options flag on forms designer?
(Or even manually if is not possible to automate that)?
EDIT:
The toolbars on the form are from CNWizards ;-)
EDIT II:
Apart of disabling themes for the IDE executable, all buttons get themed equally if the form (or project) is reloaded. But it's really weird.
If you want to enable/disable themes in the IDE, then open the properties of bds.exe, select the 'Compatibility' tab, and make sure that the 'Disable visual themes' checkbox is unchecked/checked.
Programs that you run from the IDE will inherit the compatibility settings of the IDE.
Delphi IDE itself is an application and the way the designer draw the form is using the setting for the IDE application (delphi32.exe or bds.exe's compatibility settings) so the answer is no. The default behaviour is different between IDE versions, for eg. the opposite behaviour (not drawing themed) happened in past.

Why does the Delphi 2010 TRibbon control "flicker" on Windows XP, but not Vista/7?

I've noticed that when I use TRibbon control that comes with Delphi 2010, it works flawlessly on my Windows 7 system. However, the application has some weird painting issues on a Windows XP system with the "classic theme" (I haven't tried the playschool theme).
I know there are other Ribbon components available from DevExpress and TMS Software, however purchasing a 3rd party control is not an option for this project.
Has anyone had this issue, or know of a solution?
Most likely because Windows 7 uses "Desktop Compositing", which essentially means that a component is drawn to an off-screen bitmap and then copied onto the display. In XP, a component typically draws directly onto the display (which can cause flicker if the component first erases what's there and draws over the "clean slate").
Delphi supports double-buffering, which accomplishes the same thing. If you set the ribbon's DoubleBuffered property to True (in code, since it's not published) then that should avoid the flicker (at the cost of extra memory allocated and moved around when drawing)--I should say, however, that I haven't actually tried it with TRibbon.
Note that there is no additional overhead when running on Windows 7 (or Vista, for that matter) if you set DoubleBuffered to True. The VCL has code the skips the off-screen bitmap business when running on a version of Windows that does desktop compositing.
Most likely this is a bug in the TRibbon code, the Microsoft ribbon renders perfect in both XP and Win7.
If you change your XP theme does the Minimise button shown in the image change to reflect your theme change? If this is the case the Ribbon code has probably been optimised for Vista and 7 and not been developed to run perfectly under XP.
You cant really resolve it unless you can modify the TRibbon code.

TPanel color is black no matter what

I just activated the themes in my Windows XP (usually I work using the classic Win9x look) and I have seen that two panels are pure black. Other panels are ok (color = clBtnFace).
What these 2 panels have in common is their parent. Both are placed directly on a TForm. If I move them to a different parent (another panel for example) the have the appropriate color.
Delphi 7, win xp pro
This is another grandiose Delphi bug. I started do delete stuff from my project and recompile the project. After one hour I finally went to the main form. I deleted the XPManifest control and now, magically, the program works.
The new issue (XPMan) is discussed here: TPanel color is black when I drop a XPManifest control on my form
Edit:
Removing the XPMan is not enough. You will have to delete also the RES files. For large applications it may take a while to manually reconstruct that file. Maybe it works to big into that file and manually remove the resources added by XPMan.
Make sure the panels do not have ParentColor=false and Color=clBlack assigned to them, and that ParentBackground=true is assigned.

Imported ActiveX controls are non-visual

I have imported ActiveX controls before and were able to use them same as regular VCL controls. Every now and again I bump into a control that imports fine but doesn't show up at run-time and only show a little block in the designer.
The latest one is an ActiveX wrapper for the Scintilla editor and it shows me a grey block 100 pixels wide and 41 pixels high with the control icon on it. At run-time there's nothing, so it baiscally acts like a non-visual component even though it's supposed to be an edit control.
My questions are:
Has anyone else seen this?
Is this a known issue with Delphi's ActiveX support, or is it more likely an issue with the control itself?
I have never seen this behavior, I suspect it's a problem with the control.

Resources