I am working in labview on using multiple gig-e industrial cameras to display a set of images for a semi-automatic test system with data and human visual inspection.
The main issue that I have currently encountered with the vision software is that screen tearing corrupts the display of the video making it hard to observe the dynamic aspect of the test. There is a VI control called the IMAQ WindDraw external image display that has an anti-tearing option that appears to work but I need to embed 4-5 video displays into one window and not show the title bars/window buttons. Basically I want to tie the external displays to the front panel VI and run them in a windowed full screen mode.
The front panel VI will not need to be scrolled or be resizeable as the system is dedicated to the task.
Here's an example that uses one of the Vision DLLs to include an IMAQ WinDraw external display into the front panel of a VI.
Hope this helps.
Ah... as a new user I can't post images... Oh well.
You can use the NIVisWnd.dll (to be found in C:\WINDOWS\system32) to get the IMAQ WinDraw external image's handle (function name is : GetWindowHandle) and then use user32.dll to make external image child of FP (function name is : SetParent).
Related
I needed a control with Run, Stop and Step buttons and thought I would put a TMediaPlayer to work. It has the buttons I need and I can control the enables and use of colour.
If I drop one onto a form and compile and run - the buttons are all disabled. I unchecked the AutoEnable property and now the buttons are enabled when I run, but as soon as I click any of them I get an error No MCI Device Open.
I get that it's a media player and I haven't told it anything about any media, but is there a way of getting it to run in a media-free environment?
If your question is whether you can use TMediaPleyer buttons to control other things then I'm afraid the answer is NO.
The mentioned buttons are part of TMediaPlayer component itself and are only designed to control the Media Control Interface (MCI) driver.
Their purpose is to make working with MCI driver much easer as you don't need to link bunch of your buttons to the TMediaPleyer component as you would have to do otherwise.
So I'm afraid you will have to make your own set of buttons to do your thing.
You might want to learn about TRadioButton to see how to group multiple buttons together in a way so that only one of them can be pressed down at one time to mimic some functionality of TMediaPlayer buttons.
I download the Stack Windows Manager from Microsoft store. Someone introduced it to me and said it is a great program.
Oddly, after installing it and setting it up, I cannot find out how to start using it? There is no instruction to show me how to at least organize my desktop into this "layout tool". Is there a video anywhere?
At the first launch on each screen it shows you a few layouts to select from.
After you made the selection, either use Win+Arrow keys to move windows around, or drag windows between areas with middle mouse button (usually it is also the scroll button).
I’m in the progress of evaluation reveal.js for my future presentations. Currently I do not have a beamer at hand to test the following. I'm running the presentations locally on Mac OS X 10.2.2.
Hitting S opens a new browser tab consisting of the current slide, the upcoming slide, speaker notes, and timing.
Does the audience still only see the current slide?
As you say, it will be 2 different browser windows. The idea would be not to mirror your screen, but rather have different content on the projector and your screen. Then you put the window with the slide on the projector (possibly full screen), and the window with the speaker view on your local screen, just like i.e. keynote would do it. The speaker notes feature is described in https://revealjs.com/speaker-view/
Note that in order to use this feature, you need to be serving your slides from a node.js server (instead of just opening index.html as a file in your browser), as described in https://revealjs.com/installation/#full-setup
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.
Windows in my application are popping up off the edge of the screen, and this of course is a problem because some of the windows are modal and can't be dismissed (you don't even know they are there).
I'm using the TurboPower Orpheus component which remembers the location and size of each form, then restores it when the form is shown again. It saves the size and placement in an INI file.
What can I do to prevent windows from ever showing off the side of the screen?
It's common for this sort of thing to happen if you use multiple monitors and then disconnect one, such as when undocking a laptop. Or if you dock a laptop to a screen with a higher resolution. Or use remote desktop, etc..
The remedy is to override the "remember my position" behavior with a sanity check, to see if the left+width exceeds the width of the screen (Screen.Monitors array, actually - thanks guys), and vice-versa for the top+height.
Ideally, you "bump" by subtracting the difference, so you're butting up against the edge that the window wanted to straddle.
Also, see if there are updates to Orpheus that fix this. If not, you can get the source, make the correction (optional), and contribute it back to the project. It's OSS, as I recall.
You may want to give a look at their DefaultMonitor property and read the code from TCustomForm.SetWindowToMonitor to see how to deal with positioning relatively to Screen.Monitors.
Use DefaultMonitor to associate a form with a particular monitor in a multi-monitor application. The following table lists the possible values:
Value Meaning
dmDesktop No attempt is made to position the form on a specific monitor.
dmPrimary The form is positioned on the first monitor listed in the global screen object's Monitors property.
dmMainForm The form appears on the same monitor as the application's main form.
dmActiveForm The form appears on the same monitor as the currently active form.
Note: DefaultMonitor has no effect if the application does not have a main form.
To recall the previous position of a form, without having it suddenly in an area which is no longer available (due to a plugged off screen or changed resolution), you just call
TForm.MakeFullyVisible;
That's it. See the documentation.