I am writing a program in Delphi XE2. At one point in my program the user will be presented with output text, which I display through a simple "showmessage('The text of interest')" dialog.
I would like for the user to be able to copy and paste this text if they like to. It's not a key part of the program at all but I know that it might be nice for them to be able to do so.
At the moment, as far as I can see, it is not possible to select all or parts of the text from this type of message box, which brings me to my question: is there some way to make the message box text selectable for the user, or will I have to move on to other ways of displaying the text if I want this functionality? Any help would be greatly appreciated.
When you call ShowMessage a system message dialog is shown. This dialog does not support highlighting of individual portions of text. However, the dialog does respond to CTRL + C by placing the entire content of the dialog on the clipboard.
If you absolutely must have selection of individual portions of text then you will need to create the dialog yourself using Delphi controls.
I'm trying to activate Hint from control of different application created from delphi upon focus, I'm using hook to identify the focused control, and then use WM_MOUSEMOVE, which I think will activate the Hint of that control, the handle would be the Control itself and the lParam is the Left and Top of the Control. The Control activate the OnMouseMove Event, but the Hint never shows. but when I use SetCursorPos, Hint show, but I need to show the Hint with out the cursor move on that Control. Can you please help me with this? Thank you in advance... by the way I'm using Delphi XE4
Among the really asked question is how to show the hint of a control that resides on another application (i am afraid without hook that application can not be done), the title is "Delphi - Activating the Hint from another control of Application".
First is first: That can be done without knowing what language the other app was done, but it is very complex to put it here (and i am not an expert on such way of coding, also i hate apps that work that way).
Second: The main idea is to hook the other application, search on Google some code of that apps, that can show you a rectangular hole square of the object the mouse is passing over, that application while doing it is iconized (i do not remember the name of it).
Waht such app does: As you move the mouse over the screen it overlays a rectangular over the control that mouse is over, then if you press the key to print screen, that small region is the only thing that goes to clipboard; on of such apps i saw had an extra funcion, they can move such controls if you press cursors on keyboard, also can hide/enable/disable such control... more, it can also make controls that are invisible to be visible, etc... i saw it working on my computer, and hey, for fun it is pretty and to DeBug or get extra things on some apps is also great (make some menĂºs to be visible and enabled and then can use such funtions).
Please, please, understand i am agaist piracy and also against using such apps to let code to be run... some apps need pay for letting some menus enabled, but they have the code there, no need to change EXE to have/use that menus; just using this kind of apps makes that limited apps to be unlimited (just enable or show hidden menus and voila).
Note: To unhide menus, mouse point is not needed to be over the app, can be anywhere and is not moved.
The idea i want to say is: Any app can move, alter any control on any other app (at least on Windows) that is running, so maybe there can be a way to show such hint.
In the past i had use such app (sorry i do not remember the name) for DeBug my own apps, so i do not need to recompile in such cases where something was wrongly hidden, also work with buttons, labels, texts, combos, memos, etc.
Now my small problem is: I just need exactly what title say, but i can not make it to work.
Must be:
Mouse position must be irrelevant (it also must be able to be outside the application)
Just when a button that has focus is pressed with keyboard (Space or Enter) or just after some code somewhere on my application, i want to show the Hint of a specific TEdit for a short period of time.
I did not get Hint to be shown; not unless mouse point is over such TEdit but i want/need mouse pointer to not be over it, neither it to jump to the TEdit.
Idea Conept for that Hint to be shown: After doing some code that changes something, show extra info associated.
Example:
A button with that loads a file using an open dialog, filename is put on a ReadOnly TEdit (so it let user copy the text, but not change it); i want extra info that i punt on .Hint of such TEdit to be shown inmediatly.
That hint use is for not overload window with a lot of fields (TLabels) for showing such file data.
Simple idea: such Hint shows TimeStamp and size of the selected file.
P.D.: Not much related (since i am trying with a normal plain text hint), but hints can also store a full HTML page and with 3rd party tools be shown as an HTMLhint, so they can show a lot info of that file (also its content, etc) in a web based format; as i say i first try with standard plain text hints.
In order to show hint programatically you need to call TApplications ActivateHint method to which you specify the position parameter.
http://docwiki.embarcadero.com/Libraries/XE3/en/Vcl.Forms.TApplication.ActivateHint
Based on position parameter Application automatically finds which controll is at that position and shows its hint.
NOTE: Position parameter screen coordinates in pixels and not your controll coordinates. So you will have to use ClientToScreen method to change your coordinates apropriately.
You can see simple example of how to use this here: https://stackoverflow.com/a/15031208/3636228
Now if you need to do this from another application then you will have to add some comunication mechanizm to these two application so that one could send a proper message to tell the other to show the hint at specific position. But this does require you to be able to change both applications.
EDIT: This works with VCL applications but I'm not sure if it would work with FireMonkey applications.
I need to show custom data. For example I need to show a contact list with name, description, photo. And ideally I would also like to show custom data there, e.g. a button to launch telephone call. The default styles do not quite do what I want, but fairly close.
Thus, as far as I can tell, TListBox could be a decent control for this if I could create custom styles? Is that possible? (Anotther problem of course is setting the values of the custom data controls.)
You should take a good look at the FMX CustomListBox example AFAIK even the example alone already seems to have exactly what you need, already set in place.
It took me about 10 minutes to produce this result straight out of the CustomListBox example with your description:
One thing that the included FMX example demonstrates perfectly is how easy it is to add any FMX control to the ListBox via the TStyleBook Layouts such as buttons, images etc... basically any visual control upon which you then implement the HitTest, again, all very detailed in the FMX Delphi example.
I have a TWebbroser on a form wher I want to hide the scrollbars
On WebBrowser1DownloadComplete I put WebBrowser1.OleObject.document.body.scroll:='no';
But this results in an AV.
If I click continue I can see that the scrollbars are actually removed, so the code must be the right one to use.
What I am trying to do is to show a page from Google Maps with a lot of markers that I add. This page needs to be printed on an A4 page but it is to big to print directly from the TWebbrowser (or at least I can't get it to work). So I save it as an JPG image and loads that on another form, prints it using DevExpress printingsystem on A4 page with the headers and footers I want.
All is working like I want it to except the removal of the scrollbars.
For accessing Google Maps I use the gmLibrary from http://www.cadetill.com/gmlib/ - very nice lib and it has a pricetag I like.
Just put your code in the DocumentComplete event to remove the AV.
The IE HTML/CSS tricks to remove the scrollbars will not work reliable if the control is embedded. To realy remove the scrollbar you have to inherit the TWebBrowser with the IDocHostUIHandler interface. In GetHostInfo you have to set at least the DOCHOSTUIFLAG_SCROLL_NO flag.
You may consider to use one of the existing descendants like 'Embedded Web Browser Component Pack' (http://www.bsalsa.com/).
I'm looking at wanting to implement a tooltip similar to the way Delphi XE does when you're debugging and you hover over an object. ie, it opens up a hint window with + signs which you can expand etc.
I'm trying to create a hint window which will show a list of items (for example) when hovering over a control (such as a button) which will let the user click on an item and I can then do something based on the item they've selected.
Are there any components out there that might do that already? Or am I better of just creating a borderless form and handle the showing/hiding myself with mouse events?
Thanks
Jason
I know there are hint components with embedded html. So you can have a kind of html treeview inside you hint!
I think it is a solution for you.
HTMLHint from TMS Software
THintBox from Cramon Utilities (freeware!)