I am using Delphi 10.2 Tokyo and the VCL component from TMS Software named WebOSMaps. That component uses a TWebBrowser component to display a map with several markers on it.
Over a marker I use a TPopupMenu to display my own menu. My problem is, if the PopupMenu is open, there is no interaction with other components on that Form, like OnMouseOver or OnClick. If I right-click on another position of that TWebBrowser, the TPopupMenu shows up again, but with the same information as before, because of there is no interaction with the OnMouseDown event of the TWebBrowser.
Any suggestions?
Related
I have two controls on my form.
TWebBrowser with Align set to Client
TMemo with Align set to None
I want to display TMemo on top of TWebBrowser for a particular scenario and for that am using Memo.BringToFront but it does nothing.
Am I missing something?
TWebBrowser Is a particular firemonkey Control. Firemonkey control are "paint" according to their z-order on a openGL surface (ie: the form). but TwebBrowser is a native control that is draw on another surface that is placed on the top of the form, hidding in this way everything back to it.
The only way you can do is to show you memo inside another window on the top of the TwebBrowser. for this you can use a native Memo. As far as i know their is only one native memo implemented on android (delphi already have some that work on ios/windows) it's https://github.com/Zeus64/alcinoe
I have a TMapView. Above the TPanel. Problem is that the map visible through the TPanel. How to make background non-transparent for TPanel
There are no way to show panel (or any other styled FMX control) on the TMapView, TWebBrowser, other controls with ControlType = Platform (like TEdit) on mobile platforms.
TMapView is a wrapper around native control. Native controls always shown on top of form because of differences in the mechanism of rendering. Like in VCL, TEdit always displayed above TLabel, because TEdit is descendant of TCustomControl, which painting controlled by OS, and TLabel is descendant of TGraphicControl, which painting controlled by form.
If you want to show some controls above TMapView/TWebBrowser, etc..., you should use only native controls.
a good explanation is given on http://www.tmssoftware.com/site/fmxicl.asp
Does anybody have an idea how to connect TWordApplication to my TForm window to get under control the location, because since Office 2007 Word opens on the background and user must click to its icon on taskbar and it makes confusing a bit. I would get also posibility to add some MenuItems to do some other specific tasks such as insert texts, ...
Thanks for all replies.
I have a main form with a left panel and in the center of the form I have a page control..and I am trying to dock other forms on the page control, as I have seen on an example made by Alister Christie; the thing is that the dragging of forms into the pagecontrol is lazy; I've discovered that a JVCL dockserver and a JVCL dockclient will help me with this.. the thing is that I want to assign pagecontrol to JVCL dockserver as a custom dock panel, but i don't know how to do it: here is the code i wrote on the oncreate event of mainform
procedure Tform1.FormCreate(Sender: TObject);
begin
jvdockserver1.CustomDockPanel := jvpagecontrol1;
end;
could you please help me out?
Forgot to mention that I am a kind of a novice in programmning and I am using Delphi XE2;
The JVCL Docking server component can only accept a PANEL as a docking location, either one of the built in ones, or a custom TPanel that you place on your form at designtime. However the Jedi Docking library will create page controls for you if you want it to. However, it has to be the one that manages them, because those controls could get moved (by you or by some other jvdocking code).
So, if you want to have some tabs visible, you should not try to use your own page control, instead you should use the Docking In Code Demo as your sample, which comes with the JVCL, in the folder jvcl\examples\JvDocking\DockingInCode.
Here is what the tabs look like that the JvDocking system makes for you, using the CustomDockPanel where the custom dock panel is attached to a TPanel, and then JvDocking "creates a page control" automatically for you when you need it:
Note that the pages are created or destroyed by the docking system, and the underlying work of managing the tabs is done by the JvDocking library, not by you.
The main thing you need to do is use this code from MainFm.pas:
tabHost := ManualTabDock( ctrl, newDocFm1, newDocFm2);
How do I do the IDE method or eventually make the basic dock method without the very slow freezing movement of the dockable form?
When I Googled for dockable forms in Delphi and found a post by Zibadian on Programmers Heaven:
First off: The windows in the Delphi IDE aren't MDI forms, by SDI forms.
Now to create a dockable window.
Form2 will be dockable and Form1 will be the place to dock it to. Place a control (such as a TPanel) on Form1 to serve a DockSite. Make sure that you set the DockSite and the UseDockManager properties to true for that control.
For Form2 set the DragKind to dkDrop, the DragMode to dmAutomatic and UseDockManager to true.
That was the basic dock function. If you run your program, show the Form2 and drag that form over the docksite, it should dock at that site. You can even undock it by grabbing the "caption" as you have seen in the IDE.
For me, that method moves the dockable form very slowly. However, Zibadian's answer continues to describe how the IDE does it instead:
The dock-method of the IDE is a little more complex, since you don't see the docksite. I think, you need to write a Form1.OnDockOver or Form1.OnDockDrop to perform that. That (Those) event(s) need to show the docksite at the appropriate location.
Have a look at the Using the TDockTabSet component article by Jeremy North. It is a few years old but should give you some helpful pointers.
Try the JVCL Docking library