Jump to content

John Lokanis

Members
  • Posts

    797
  • Joined

  • Last visited

  • Days Won

    14

Posts posted by John Lokanis

  1. This is driving me nuts!

     

    I have a VI with a MCLB display.  When I open this VI, I select a particular row (for example, row 3) and set the key focus to the MCLB control so the user can use the arrow keys to navigate without first clicking on the control.  This works fine the first time I open the VI in my application.  If the user presses the down arrow, the selection moves to row 4 as expected.

     

    If the user navigates to a different row (for example, row 8) and then in the main program takes an action that causes my MCLB VI to be activated again (this time selecting row 5), I bring the MCLB VI to the front most and again set the key focus to the MCLB control.  Row 5 is highlighted as expected.  But if the user presses the down arrow again, the selection changes to row 9, not 6 as would be expected.  Even though the control value is set to row 5 and row 5 is highlighted, somehow the control remembers that the last row navigated to manually was row 8 and it thinks it is still on row 8!

    I have tried setting the active cell to the selected row to see if that fixes it but with no luck.  I have also tried changing the order of when I set the MCLB value and the key focus but that seems to have no effect.

    Even if I close the VI containing the MCLB and then reopen it, it still remembers the row navigated to and not the newly set one.

     

    The thing that is bugging me even more is I vaguely remember having this problem years ago and solving it (I think) but I cannot remember how.

    Has anyone solved this or have any ideas?

     

    thanks for any thought or comments you can offer.

     

    -John

  2. Resurrecting this thread to ask about a potential LabVIEW bug.

     

    When you have several panes on your VI that are set to scale while resizing, they will all happily shrink down to the point where controls inside them become obscured (hidden) due to the pane being too small.  So far, my only way to avoid this is to set a minimum window size that prevents the window from getting too small for this to happen.  Unfortunately I have come across a situation where I do not have control of this setting for a specific VI and therefor have to deal with the effect.

    The 'bug' I am concerned with is the fact that the shrunken panes do not enlarge as the VI grows again.  So, once you have compressed them, they stay compressed permanently.  It seems to me that they should return to their original size as space allows so the controls inside can again be accessed.

     

    Does anyone know a 'trick' to work around this?

     

    thanks,

     

    -John

  3. The schedule is 'official' now.  And they have moved a few sessions around since I first set mine up.  But, I was able to fill all my slots with something and managed to fit in most of what I wanted to see.  Unlike past years where all the best sessions were scheduled at the same time!

     

    Good luck!

  4. The web interface seems to be working fine now.  And the app works too.  You must use the forgot password tool to get an initial password, apparently, to get the app to work.

    I was able to book all my sessions.  Not too bad this year.  Got all my #1 choices and only had to skip a few #2s due to conflicts.

  5. I appove of the thread jacking because it led me to some more interesting tools, but to get back on topic:

    There are four ways to turns on scroll bars:

     

    1. VI Properties (CTRL+I) >> Window Appearance >> Show vertical/horizontal scroll bar

     

     

    2. Context Menu of an existing scroll bar:

     

     

    3. Context Menu of a splitter between two panes:

     

    4. And as a property node of Pane (also shown, a lesser known fact -- you can show, customize, then hide the Labels on both Splitters and Panes to be more descriptive than Pane, Pane 2, Pane 3, Pane 4...) A mistake I oftentimes make is to search for Pane settings under the Panel class -- Class Browser (CTRL+Shift+B) helps remind.

     

    I should have thought of #1.  Thanks for pointing out the obvious and easy solution. :thumbup1:

    #2 and #3 won't work once you have lost the scroll bars and have no splitters.

    I ended up doing a variation of #4 before I saw your reply.

     

    In the end all is well but I agree that the setting should be the default.  It would have no effect on normal VIs until you set a control to scale.  So, why not?  I bet this is already on the idea exchange somewhere...

     

    Now to go off and redo all my code using that cool tab x-control!   :D

  6. Also, the "Scale Objects While Resizing" setting on the Pane (which Jack has set) is pretty important. It's not set on new VIs and it's in a really weird place (right-clicking on the scrollbar to get the shortcut menu with the Pane Sizing options).

    Ok, your version works as expected on my machine.  But there is no scroll bar on the Container.vi.  How do you get it back to adjust the setting?  If I create a VI, drop a sub-panel and then select 'fit to pane', the scroll bars seem to be gone for good.  I must be missing something...  (other than the scroll bars).

    Finally, why is this "Scale Objects While Resizing" setting not available via VI Server?

  7. Wow I've never seen that happen before.  You ran that VI un edited?  I had normal results sorry.  One thing I'd be curious about is if you use the invoke node to Fit Control to Pane (on the sub panel, or the tree) does it fix this?  To be clear I don't think you should have to do this to have it function properly I'm just wondering if this would fix the issue.

    Yes.  Just D/Led and tried it.  Same version of LV too.

    I did try the Fit Control to Pane in the resize event.  works even worse.

     

    Best performance I can get is to use one vertical splitter bar and have the sub panel resize to that.  The resize event is also passed to the VI in the sub-panel and that is where I have my custom resize code that adjusts my list box column widths.  Still a bit laggy if they move the window edge too fast but it does catch up when they stop.

  8. I have been trying to get the VI within a sub panel to re-size dynamically (while the users is actively performing a re-size).

    I have programmed the VI in the sub panel to do real time re-sizing but I cannot get the sub panel to re-size actively when the user re-sizes the front panel that owns the sub panel.  Even if you set the 'Scale all objects on the front panel as the window re-sizes' VI property, the re-size does not happen until the user stops the re-size action.  It will not do it dynamically.

    My solution was to create a vertical and horizontal splitter, then place my sub panel to the right and below the splitters.  I could then get it to resize the sub panel as the user performs the resize action.

    The problem I am left with is I cannot completly hide the splitters.  No matter what type of splitter I choose or what color I set it to or how narrow I try to make it, I still end up with a border on the top and left of the front panel a few pixels wide.

     

    My LabVIEW-fu and Google-fu has failed me on this one.  Has anyone else solved this?

     

    thanks for any ideas!

     

    -John

  9. My main goal was to come up with an automated way to document the relationships between an actor and all it's messages.  This is a natural case for a node map.  Also, it will uncover the connections from other actors that connect to an actor via it's messages.

    This mainly makes sense if you are using a messaging architecture where each message is a class and the only communication path between your independent processes is via these messages.  This is not limited to the Actor Framework.  (I use my own architecture that is much less limiting than AF) but the concept still applies.

    Applications written with this type of architecture can very quickly become too complex to understand, even for the author.  By having a diagram like this, you can have a means of graphically representing the logical links within the system that are not visible in the source code, even when using a graphical programming language like LabVIEW.

    This is admittedly a very early version of this tool that I just put together in a few hours to prove the concept.  I hope to improve on it over time but wanted to share the idea and code in case others wanted to contribute.

  10. Yes.  You get what you pay for!   :P

    But, you certainly can automate the generation of the excel file so you can easily import the data and customize the graph in several ways.  Not a bad compromise.  There are other tools out there for creating node maps.  Perhaps there is a better solution.

  11. Yes.  You can define many different properties in the node list.  I just tried color first.  This was mainly a proof of concept.  I would love to see where other take this idea.  One idea is to choose a class in the project to focus on and limit the graph to only 2 links away from that class.  Otherwise, your graph can get huge.  Here is one portion of my current project (just 25% of the UI model).

    post-2411-0-61273100-1369179764_thumb.pn

  12. Due to the overwhelming response  :rolleyes: I put together a solution using some free online tools.

     

    First, you will need a tool called yEd.  (http://www.yworks.com/en/products_yed_about.html) This is a very nice free tool for generating various graphs and charts.

    Next you will need Excel because that is the file type yEd uses to import an adjacency matrix.

    Last, you will need some LV code to generate an adjacency matrix and node property list from a project.  Here is one I made for Actor Framework.  Please excuse the poor code layout as I hacked this together quickly.

    Generate AF Node Map Data.vi

    (Note: this can easily be adapted to other message systems.  The only change would be the mapping for the color properties to the appropriate parent classes.

     

    Open the VI, choose your target project and your destination xlsx file and run it!

     

    You will get a file like this:

    AF Demo node list.zip

    (zipped for your protection.  ;) )

     

    Next you need to open this file in yEd.  When you do, you need to set the data ranges correctly, like this:

    post-2411-0-74394700-1369176427_thumb.jp

    and choose a presentation configuration like this:

    post-2411-0-42686900-1369176446_thumb.jp

    which I created earlier using this:

    post-2411-0-84151900-1369176490_thumb.jp

     

    The end result, after a few cosmetic tweaks results in this:

    post-2411-0-84877000-1369176536_thumb.pn

     

    Pretty cool, eh?   :D

     

    (Well, I think it is useful.  I always prefer to visualize my applications.  Complex apps using messaging architectures can get pretty hard to follow without good documentation.)

     

    I hope others find this useful.

     

    -John

    • Like 1
  13. I'm looking for a Node Map tool to document my applications using my messaging architecture.

    I want to write some code that can extract relationships between classes (some being processes and some being messages) and then feed that data into a tool to visualize the relationships in my application.  The end goal would be something like the http://www.visualthesaurus.com/.  Unfortunately, the software behind that tool starts at $5k.  I am hoping to find something a bit less expensive.  Has anyone found a solution they like?

     

    thanks,

     

    -John

     

     

  14. I suspect that the file date is changed.

    One thing that has always stumped me with a 'get lock' SCC regime is that you need the server to edit the file.

    I understand that there's a bug in LabVIEW. A no-op save. But that should not cause any problems. Using the 'read-only' flag is a bad method (IMHO) to control the state of a file. Merge tools are getting better (and NIs LabVIEW merge tool is reasonably good), so one should not rely on the file-date to control the contents of the file.

     

    Ton

    Well, if I check out the file it wants to save and then save it, the date is definitely changed.  But the point is the contents of the file are not changed so there was no reason to need to save it in the first place.  LabVIEW is simply marking it with a false 'changed' flag.

    Personally, I do not care for any merge process.  As a solo developer, I have no need for this.  I simply want to backup my code and be able to revert to older versions if needed.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.