26 May 2010

My Fav Blogs

Going to keep a list here of my fav bugs & online posts

My all time favourite (a toss up by SSW rules & How to report bugs effectively)

How to Report Bugs Effectively
by Simon Tatham, professional and free-software programmer



SSW Rules to better



Scott Hanselman : Tools List

Beth Massi's blog (excellent stuff)



Non IT Related

Belfast food reviews

19 May 2010

New Selection Editor Tips

None Slip editing enhancements (this update is mainly enhancements to slip editor although a few bugs have been fixed).

  • Entry of Irish Lotto Results from SIS (fixed)
  • Entry of 49s Results from SIS (fixed)
  • Settling of Fav/2nd Fav (fixed)

Enhancements to bet slip editor

  • Warnings on no rule4 applied before payout
  • Warnings on amended result before payout
  • Warnings on Stewarts Enquiries or Objections before payout

See bottom of document for screenshots.


The new results viewer is much easier on the eye


  • Dead heats/Co Favs etc... highlighted in yellow

What you will notice 


  • Some new shortcut keys (so it may take a bit of getting used too) 
  • Switching sports (e.g. Ctrl + L is much faster)
  • Filtering when typing selection names is much faster
  • Numbers editor defaults to forty nines upon login, and then last edited numbers game, for subsequent ctrl + N calls until you log back out. 

Ctrl + E will return you to text entry textbox at any time (without having to refresh coupon)
Tip: You would use this if you had clicked elsewhere, and wanted to go back to editing another selection

If using the arrow up and down to enter a selection, use "+" key on keyboard to add that particular selection (rather then the enter key)

Entering Dogs/Horses by time & number (of fav)
Tab over to the time filter text box

  • You can filter time by entering exact time (e.g. 3.05) or if you just enter 3 (it will show all races between 3pm & 4pm – and you can use up down arrow to select).  If only one race is shown the Market list box will go green. 
  • If more than one race matches your search criteria use the up down arrows (or mouse) to select appropriate race.
  • Once you are happy with the race click [Space] or [Tab] and enter your numbers of favourites
    • 2 3 (will select numbers 2 & 3)
    • 2 f (will select number 2 & the favourite)
    • 2 2f (will select number 2 & the second favourite)

How was this achieved in code?
  • Enhanced reading from database (using stream data instead of database tables)
  • Local caching of data, to prevent database calls, if stream data is not updated
  • Enhanced filtering during editing using LINQ instead of dataview

    Screenshot | 1 (Amended result + no rule 4 warning)

    R4 Missing & Amended result

    New Results Viewer

    18 May 2010

    DatagridView : Sort Generic List on any property (minimal code)

    Had been wrecking my head with this for a few hours but got a good solution (with very little code).
    Okay so it using reflection and mightn't have order log n speed, but so what if you are sorting collections with normally less than 50 items.

    I handle the Column Header Mouse Click
    Get the data property name.
    Then use some reflection to sort the generic list.  (before this I had to use select case, and sort by knowing the property name in code, but when I add new properties this was a pain to maintain).


        Private Sub SelectionsCollectionsDataGridView_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles SelectionsCollectionsDataGridView.ColumnHeaderMouseClick
            Try
                Dim col = Me.SelectionsCollectionsDataGridView.Columns(e.ColumnIndex)
                Me.selectedMarket.SelectionsCollections.Sort(Function(p1, p2) p1.GetType.GetProperty(col.DataPropertyName).GetValue(p1, Nothing).CompareTo(p2.GetType.GetProperty(col.DataPropertyName).GetValue(p2, Nothing)))
                Me.SelectionsCollectionsBindingSource.CurrencyManager.Refresh()
            Catch ex As Exception
                MsgBox(ex.ToString, MsgBoxStyle.Critical)
            End Try
        End Sub

    24 Apr 2010

    In Running Betting

    bizTech Software are pleased to announce in-running betting is now available in arkle bet POS.

    • Display in running on arkle betting screens in your shop.
    • Edit in running bets on arkle ePos, and view full price change history, in your ePos and online.
    • Prices automatically update and suspend in real time.

    Sports Available

    • Football
      • Match betting, next goalscorer, correct score, match handicaps.
    • Snooker, Tennis, Golf (and more sports coming soon).

    23 Apr 2010

    Cleaning Cyberview Scanner

    Scanner Cleaning

    Perform the following cleaning procedure periodically every week, whenever black lines appear on the scanned image or scanning errors occur.
    1. Grab the Scanner Cover by the tips of the input and output guides, or alternatively, by the Front and Back borders on each side.
    Grab
    clip_image002
    2. Either use one or two hands
    i.
    Grab
    Grab
    clip_image004
    3. Lift-up the Scanner Cover.
    Lift-Up
    clip_image005clip_image007
    i.
    Lift-Up
    clip_image008clip_image010
    4. Place the Scanner Cover away from the scanner.
    clip_image012
    5. Locate the two Feed Roller Lock-Levers as shown (only right side shown).
    Right Side Lock-Lever
    clip_image013
    Feed Roller
    clip_image014clip_image016
    6. Place both thumbs on the Feed Roller Lock-Levers grooves and push-backward to rotate them.
    Rotate Backward
    clip_image017clip_image018clip_image020


    7. Rotate the two Lever-Locks until the Lever-Tail is oriented upward (only right side shown).
    i. clip_image018[1]clip_image022
    Lock-Tail oriented upward
    ii. clip_image023clip_image025
    8. The Feed-Roller will be released when the 2 Lock-Tails are in the upward position
    9. Grab-up both Lock-Tails.
    i.
    Grab-up
    Grab-up
    clip_image027
    ii.
    Grab-up
    clip_image029
    10. Lift the Feed Roller straight up by holding the two Lock-Tails.
    i.
    Lift straight up
    clip_image030clip_image031clip_image033
    ii.
    Lift-up
    clip_image034clip_image036


    11. Take-away the Feed Roller.
    Take-away
    clip_image037clip_image039
    12. The Glass of the Image Sensor will swing up and be fully exposed.
    13. Open a new Cleaning Wipe bag provided and gently swipe the impregnated wipe over the entire glass surface from side to side.
    i. clip_image040clip_image041
    Swipe
    Glass
    clip_image043
    14. Examine closely the surface of the Image Sensor Glass for cleanliness and rub with a fingernail on difficult-to-remove spots.
    15. Put-back the Feed Roller by holding the Lock-Levers Handles vertically, then engaging them into their slots. Ensure the toothed gear wheels mesh correctly.
    clip_image044clip_image045
    Put-back in
    clip_image033[1]
    16. Once engaged in their slots, turn the Lever-Locks toward the front.
    i.
    Turn toward Front
    Turn toward Front
    clip_image046clip_image047clip_image048clip_image050
    ii. clip_image052
    17. Pushdown the two Lever-Tails until they reach the horizontal position.
    Push-down
    clip_image053clip_image055
    18. The two Lever-Tails should be pushed-down toward the front; otherwise, the Feed Roller will pop off during operation of the scanner.
    19. Replace the Scanner Cover.
    i.
    Push-down
    clip_image056clip_image058
    5 with one hand
    clip_image059
    i. clip_image061
    5 or alternatively, with two hands
    20. The scanner is now ready to operate.

    22 Apr 2010

    Arkle ePos Datafeeds

    bizTech are pleased to announce we can now provide data feeds from various sources, for use with Arkle ePos*
    • Super Soccer (all markets, including results)
    • Bruce Betting (all markets, including results)
    • Bet Byrne (all markets, prices only, no results at present)
    Betting from other bookmakers also available (contact us for details).


    * Please note you will need to sign up with the odds provider and a cost may occur.
    Also for each shop connecting there will be a charge of £10 per month, to cover bizTechs cost of hosting the data.

    6 Apr 2010

    Disable Close Button .NET WinForms

    Just seen some really neat code for doing this at: http://addressof.com/blog/articles/232.aspx

    I've also put a copy down below of the bit I used.  I modified Cory Smiths code a little, so you don't have to remember to handle the resize event (a maximise or minimise for some reason renables the close button).  On my modification I automatically add a handler for this in the Class CloseButton.


    Public Class CloseButton

        Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Integer, ByVal revert As Integer) As Integer
        Private Declare Function EnableMenuItem Lib "user32" (ByVal menu As Integer, ByVal ideEnableItem As Integer, ByVal enable As Integer) As Integer

        Private Const SC_CLOSE As Integer = &HF060
        Private Const MF_BYCOMMAND As Integer = &H0
        Private Const MF_GRAYED As Integer = &H1
        Private Const MF_ENABLED As Integer = &H0

        Private Sub New()
        End Sub

        Public Shared Sub Disable(ByVal sender As System.Object, ByVal e As System.EventArgs)
            ' The return value specifies the previous state of the menu item (it is either
            ' MF_ENABLED or MF_GRAYED). 0xFFFFFFFF indicates   that the menu item does not exist.
            Dim frm1 As Form
            frm1 = sender

            Select Case EnableMenuItem(GetSystemMenu(frm1.Handle.ToInt32, 0), SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED)
                Case MF_ENABLED
                Case MF_GRAYED
                Case &HFFFFFFFF
                    Throw New Exception("The Close menu item does not exist.")
                Case Else
            End Select


        End Sub


        Public Shared Sub Disable(ByVal form As System.Windows.Forms.Form)
            ' The return value specifies the previous state of the menu item (it is either
            ' MF_ENABLED or MF_GRAYED). 0xFFFFFFFF indicates   that the menu item does not exist.
            Select Case EnableMenuItem(GetSystemMenu(form.Handle.ToInt32, 0), SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED)
                Case MF_ENABLED
                Case MF_GRAYED
                Case &HFFFFFFFF
                    Throw New Exception("The Close menu item does not exist.")
                Case Else
            End Select

            AddHandler form.Resize, AddressOf CloseButton.Disable

        End Sub

    End Class

    FAO Cory Smith, if you don't want your code on here contact me and I'll remove it.