|
|||||||||||||||||||||||
Here's another update for those of you using our Basic+ Source code publisher. This time I had a bit of a major rewrite to the HTML generator to handle the crazy 4K chunk HTML parsing in the Revelation Forum Domino server.
Originally I had wanted to keep the generated HTML for this blog and the forum pretty much the same, but alas that wasn't to be, so I had to drop back to "pre" tags again for the forum, and keep the "div" tags for here. Thanks to Jared at Revelation for his help in tracking down the weirdness. You can download version 1.7.0 from here in standard RDK format or here as an NSIS installer version. Labels: Basic+, freeware, OpenInsight, ZZ_IDE_BP_PUBLISHER
Well we've been running with Windows 7 on a couple of our laptops for a few weeks now and we like it! The ability to launch a program by typing just a few letters of its name is brilliant... the only downer was not being able to run AREV at all anymore - oh yes, and the fact that as of the time of writing OpenInsight 9.1 completely hangs - I mean COMPLETELY hangs Windows 7 64 bit.
Note I said "was" because today we installed Virtual PC for Windows 7 along with XP Mode and huzzah - we have an environment where we can actually work with AREV and OI! You can read all about it here. The only thing to point out is that once you enabled virtualization in your BIOS you have to do a cold reboot - turn the machine completely off. Easily overlooked and potentially frustrating. [Edit] - The hanging issue is fixed for OI 9.1.1 Labels: Virtual PC, Windows 7, XP Mode
A common requirement when dealing with EditTables is to prevent a user from deleting a row on a case by case basis at runtime. In many applications we've seen this implemented by trapping the standard DELETEROW event and then sending an INSERT message with the deleted row contents, but this looks messy and unprofessional because the data disappears and reappears again.
A better way to do this is to trap the low-level ETM_DELETEROW notification sent by the EditTable prior to the actual DELETEROW event occuring. However, this notification has to be handled in a synchronous fashion (via a WINMSG event), and we also have to tell OpenInsight to return a special value from its own low-level internal message handler so that the EditTable stops the deletion (This last requirement is why the event has to be handled synchronously, because we need to return a value at the point in time that the message is sent). We do this in two stages: First we tell OpenInsight to trap the WINMSG event for the EditTable and listen specifically for the ETM_DELETEROW message. This is normally done in a form's CREATE event like so: 0001 $insert logical 0002 0003 equ WM_USER$ to 1024 0004 equ ETM_INSERTROW$ to (WM_USER$ + 2004) 0005 equ ETM_DELETEROW$ to (WM_USER$ + 2005) 0006 0007 eventOp = TRUE$ ; * // Turn tracking on 0008 eventOp<4> = TRUE$ ; * // Track Synchronously 0009 0010 call send_Message( @window : ".TABLE_1", | 0011 "QUALIFY_EVENT", | 0012 ETM_DELETEROW$, | 0013 eventOp ) Next we have to add a WINMSG event handler to the EditTable to catch the ETM_DELETEROW message: 0001 $insert logical 0002 0003 equ WM_USER$ to 1024 0004 equ ETM_INSERTROW$ to (WM_USER$ + 2004) 0005 equ ETM_DELETEROW$ to (WM_USER$ + 2005) 0006 0007 begin case 0008 case ( message = ETM_DELETEROW$ ) 0009 * // Stop the delete here... 0010 call set_WinMsgVal( TRUE$, 0 ) ; * // Force PS to return 0 0011 ; * // to Windows 0012 0013 end case Set_WinMsgVal Notice the use of the Set_WinMsgVal function. This function only works from within a synchronous WINMSG event and it allows us to set the actual low-level value that OpenInsight returns internally from handling the ETM_DELETEROW message. Returning 0 here tells the EditTable not to allow the row deletion. Preventing Row Insertion We can also prevent users from inserting rows in a similar fashion, by trapping the ETM_INSERTROW message instead (which we've defined in the examples above). However, implementing this is an exercise left for the reader. Labels: EditTable, EditTable Cookbook, OpenInsight
Still on the topic of undocumented EditTable features here's the details of the MOVE_ROW message that you can use to move a row within an EditTable. The nice thing about this message is that it takes all the colour, style and formatting information when the row is moved, which makes it easier to use than deleting and inserting the row "manually" yourself.
MOVE_ROW message
E.g. 0001 * // EditTable MOVE_ROW message example to move the 0002 * // row at position 2 to position 4 0003 0004 edtID = @window : ".TABLE_1" 0005 fromRow = 2 0006 toRow = 4 0007 0008 call send_Message( edtID, "MOVE_ROW", fromRow, toRow ) Labels: EditTable, EditTable Cookbook, OpenInsight |
|||||||||||||||||||||||
| |||||||||||||||||||||||