Jump to content

RAGrid grid custom control


Go to solution Solved by LarsJ,

Recommended Posts

On 6/15/2021 at 12:09 PM, dmob said:

I found this GRIDNOTIFY structure defined in the RAGrid.inc file, but have NO idea how to define in AutoIt

Try something similar to this:

Global $tagGRIDNOTIFY = $tagNMHDR & ";UINT col;UINT row;UINT hwnd;ptr lpdata;UINT fcancel"

The example with some of the notifications working:

#cs ----------------------------------------------------------------------------
funkey, Feb 8, 2012
https://www.autoitscript.com/forum/topic/137333-ragriddll/?do=findComment&comment=961420

RaGrid download:
;KetilO, 2009
;http://www.asmcommunity.net/forums/topic/?id=29679

Code examples:
http://c--sphinx.narod.ru/exampl_e.htm
https://maul-esel.github.io/FormsFramework/files/RaGrid/RaGrid-ahk.html
https://www.purebasic.fr/english/viewtopic.php?t=47141
https://bcxbasiccoders.com/bcxusers/ian/Miscellaneous%20Code.html
   bcx_raGridWrappers.inc
#ce ----------------------------------------------------------------------------

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Color.au3>

; #CONSTANTS# ===================================================================================================================
;gnozal, Aug 11, 2011
;https://www.purebasic.fr/english/viewtopic.php?t=47141
;http://www.pbosl.purearea.net/pbosl_examples.zip [in .\pbosl_examples\PBOSL4\EXAMPLES\PBOSL_CreateGadget\ ]

;Messages
Global Const $GM_ADDCOL         = $WM_USER + 1  ;wParam=0, lParam=lpCOLUMN
Global Const $GM_ADDROW         = $WM_USER + 2  ;wParam=0, lParam=lpROWDATA (can be NULL)
Global Const $GM_INSROW         = $WM_USER + 3  ;wParam=nRow, lParam=lpROWDATA (can be NULL)
Global Const $GM_DELROW         = $WM_USER + 4  ;wParam=nRow, lParam=0
Global Const $GM_MOVEROW        = $WM_USER + 5  ;wParam=nFromRow, lParam=nToRow
Global Const $GM_COMBOADDSTRING = $WM_USER + 6  ;wParam=nCol, lParam=lpszString
Global Const $GM_COMBOCLEAR     = $WM_USER + 7  ;wParam=nCol, lParam=0
Global Const $GM_GETCURSEL      = $WM_USER + 8  ;wParam=0, lParam=0
Global Const $GM_SETCURSEL      = $WM_USER + 9  ;wParam=nCol, lParam=nRow
Global Const $GM_GETCURCOL      = $WM_USER + 10 ;wParam=0, lParam=0
Global Const $GM_SETCURCOL      = $WM_USER + 11 ;wParam=nCol, lParam=0
Global Const $GM_GETCURROW      = $WM_USER + 12 ;wParam=0, lParam=0
Global Const $GM_SETCURROW      = $WM_USER + 13 ;wParam=nRow, lParam=0
Global Const $GM_GETCOLCOUNT    = $WM_USER + 14 ;wParam=0, lParam=0
Global Const $GM_GETROWCOUNT    = $WM_USER + 15 ;wParam=0, lParam=0
Global Const $GM_GETCELLDATA    = $WM_USER + 16 ;wParam=nRowCol, lParam=lpData
Global Const $GM_SETCELLDATA    = $WM_USER + 17 ;wParam=nRowCol, lParam=lpData (can be NULL)
Global Const $GM_GETCELLRECT    = $WM_USER + 18 ;wParam=nRowCol, lParam=lpRECT
Global Const $GM_SCROLLCELL     = $WM_USER + 19 ;wParam=0, lParam=0
Global Const $GM_GETBACKCOLOR   = $WM_USER + 20 ;wParam=0, lParam=0
Global Const $GM_SETBACKCOLOR   = $WM_USER + 21 ;wParam=nColor, lParam=0
Global Const $GM_GETGRIDCOLOR   = $WM_USER + 22 ;wParam=0, lParam=0
Global Const $GM_SETGRIDCOLOR   = $WM_USER + 23 ;wParam=nColor, lParam=0
Global Const $GM_GETTEXTCOLOR   = $WM_USER + 24 ;wParam=0, lParam=0
Global Const $GM_SETTEXTCOLOR   = $WM_USER + 25 ;wParam=nColor, lParam=0
Global Const $GM_ENTEREDIT      = $WM_USER + 26 ;wParam=nCol, lParam=nRow
Global Const $GM_ENDEDIT        = $WM_USER + 27 ;wParam=nRowCol, lParam=fCancel
Global Const $GM_GETCOLWIDTH    = $WM_USER + 28 ;wParam=nCol, lParam=0
Global Const $GM_SETCOLWIDTH    = $WM_USER + 29 ;wParam=nCol, lParam=nWidth
Global Const $GM_GETHDRHEIGHT   = $WM_USER + 30 ;wParam=0, lParam=0
Global Const $GM_SETHDRHEIGHT   = $WM_USER + 31 ;wParam=0, lParam=nHeight
Global Const $GM_GETROWHEIGHT   = $WM_USER + 32 ;wParam=0, lParam=0
Global Const $GM_SETROWHEIGHT   = $WM_USER + 33 ;wParam=0, lParam=nHeight
Global Const $GM_RESETCONTENT   = $WM_USER + 34 ;wParam=0, lParam=0
Global Const $GM_COLUMNSORT     = $WM_USER + 35 ;wParam=nCol, lParam=0=Ascending, 1=Descending, 2=Invert
Global Const $GM_GETHDRTEXT     = $WM_USER + 36 ;wParam=nCol, lParam=lpBuffer
Global Const $GM_SETHDRTEXT     = $WM_USER + 37 ;wParam=nCol, lParam=lpszText
Global Const $GM_GETCOLFORMAT   = $WM_USER + 38 ;wParam=nCol, lParam=lpBuffer
Global Const $GM_SETCOLFORMAT   = $WM_USER + 39 ;wParam=nCol, lParam=lpszText
Global Const $GM_CELLCONVERT    = $WM_USER + 40 ;wParam=nRowCol, lParam=lpBuffer
Global Const $GM_RESETCOLUMNS   = $WM_USER + 41 ;wParam=0, lParam=0
Global Const $GM_GETROWCOLOR    = $WM_USER + 42 ;wParam=nRow, lParam=lpROWCOLOR
Global Const $GM_SETROWCOLOR    = $WM_USER + 43 ;wParam=nRow, lParam=lpROWCOLOR
Global Const $GM_GETCOLDATA     = $WM_USER + 44 ;wParam=nCol, lParam=lpCOLUMN

;Column alignment
Global Const $GA_ALIGN_LEFT   = 0
Global Const $GA_ALIGN_CENTER = 1
Global Const $GA_ALIGN_RIGHT  = 2

;Column types
Global Const $TYPE_EDITTEXT = 0         ;String
Global Const $TYPE_EDITLONG = 1         ;Long
Global Const $TYPE_CHECKBOX = 2         ;Long
Global Const $TYPE_COMBOBOX = 3         ;Long
Global Const $TYPE_HOTKEY   = 4         ;Long
Global Const $TYPE_BUTTON   = 5         ;String
Global Const $TYPE_IMAGE    = 6         ;Long
Global Const $TYPE_DATE     = 7         ;Long
Global Const $TYPE_TIME     = 8         ;Long
Global Const $TYPE_USER     = 9         ;0=String, 1 to 512 bytes binary data
Global Const $TYPE_EDITBUTTON = 10      ;String

;Column sorting
Global Const $SORT_ASCENDING = 0
Global Const $SORT_DESCENDING = 1
Global Const $SORT_INVERT = 2

;Window styles
Global Const $STYLE_NOSEL       = 0x1
Global Const $STYLE_NOFOCUS     = 0x2
Global Const $STYLE_HGRIDLINES  = 0x4
Global Const $STYLE_VGRIDLINES  = 0x8
Global Const $STYLE_GRIDFRAME   = 0x10
Global Const $STYLE_NOCOLSIZE   = 0x20

Global Const $ODT_GRID = 6

;~ Global Const $PB_EventType_Grid_HeaderClick        = 1           ;User clicked header
;~ Global Const $PB_EventType_Grid_ButtonClick        = 2           ;Sendt when user clicks the button in a button cell
;~ Global Const $PB_EventType_Grid_CheckClick           = 3         ;Sendt when user double clicks the checkbox in a checkbox cell
;~ Global Const $PB_EventType_Grid_ImageClick           = 4         ;Sendt when user double clicks the image in an image cell
;~ Global Const $PB_EventType_Grid_BeforeSelChange  = 5         ;Sendt when user request a selection change
;~ Global Const $PB_EventType_Grid_AfterSelChange   = 6         ;Sendt after a selection change
;~ Global Const $PB_EventType_Grid_BeforeEdit         = 7           ;Sendt before the cell edit control shows
;~ Global Const $PB_EventType_Grid_AfterEdit            = 8         ;Sendt when the cell edit control is about to close
;~ Global Const $PB_EventType_Grid_BeforeUpdate       = 9           ;Sendt before a cell updates grid data
;~ Global Const $PB_EventType_Grid_AfterUpdate        = 10      ;Sendt after grid data has been updated
;~ Global Const $PB_EventType_Grid_UserConvert        = 11      ;Sendt when user cell needs to be converted.

;funkey, Feb 8, 2012
;https://www.autoitscript.com/forum/topic/137333-ragriddll/?do=findComment&comment=961420
Global Const $__RAGRIDCONSTANT_DEFAULT_GUI_FONT = 17
Global Const $GN_HEADERCLICK = 1 ;User clicked header
Global Const $GN_BUTTONCLICK = 2 ;Sendt when user clicks the button in a button cell
Global Const $GN_CHECKCLICK = 3 ;Sendt when user double clicks the checkbox in a checkbox cell
Global Const $GN_IMAGECLICK = 4 ;Sendt when user double clicks the image in an image cell
Global Const $GN_BEFORESELCHANGE = 5 ;Sendt when user request a selection change
Global Const $GN_AFTERSELCHANGE = 6 ;Sendt after a selection change
Global Const $GN_BEFOREEDIT = 7 ;Sendt before the cell edit control shows
Global Const $GN_AFTEREDIT = 8 ;Sendt when the cell edit control is about to close
Global Const $GN_BEFOREUPDATE = 9 ;Sendt before a cell updates grid data
Global Const $GN_AFTERUPDATE = 10 ;Sendt after grid data has been updated
Global Const $GN_USERCONVERT = 11 ;Sendt when user cell needs to be converted.

Global $Form
Global $hGrid
Global $hLib
Global $hFont
Global $lf = DllStructCreate($tagLOGFONT)
Global $tagGRIDNOTIFY = $tagNMHDR & ";UINT col;UINT row;UINT hwnd;ptr lpdata;UINT fcancel"
Global Const $IDC_GRID = 101
Global $hWndSaveFocus = 0
;take a little time to fill grid on startup with a large number
Global Const $iRows = 500

Main()

Func Main()
FormLoad()
If @error = 0 Then
   ;WinFlash($Form)
   GUIRegisterMsg($WM_NCACTIVATE, "MY_WM_COMMAND")
   GUIRegisterMsg($WM_NOTIFY, "MY_WM_COMMAND")
   GUIRegisterMsg($WM_DESTROY, "MY_WM_COMMAND")

   While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
         Case $GUI_EVENT_CLOSE
            ExitLoop
         ;Case $IDC_GRID
            ;WinFlash($Form)
      EndSwitch
   WEnd
   GUIRegisterMsg($WM_NCACTIVATE, "")
   GUIRegisterMsg($WM_NOTIFY, "")
   GUIRegisterMsg($WM_DESTROY, "")
EndIf
$lf = 0
EndFunc   ;==>Main

Func FormLoad()
Local $wx = 700
Local $wh = 500
$Form = GUICreate("RAGrid Sample Program", $wx, $wh, 0, 0)
$hLib = DllOpen(@ScriptDir & "\RAGrid.dll")
If $hLib <> -1 Then
   Local $style = BitOR($WS_CHILD, $WS_VISIBLE, $STYLE_HGRIDLINES, $STYLE_VGRIDLINES, $STYLE_GRIDFRAME, $STYLE_NOSEL)
   $hGrid = _WinAPI_CreateWindowEx($WS_EX_CLIENTEDGE, "RAGrid", "", $style, 10, 10, $wx - 15, $wh - 35, $Form, $IDC_GRID)
   If $hGrid Then
      GridSetup($hGrid)
      ColorTheGrid($hGrid, $iRows)
   EndIf
Else
  MsgBox(266288, "Error", "RaGrid.dll failed to load")
  GUIDelete($Form)
  Return SetError(1, 0, 0)
EndIf
GUISetState(@SW_SHOW)
EndFunc   ;==>FormLoad

Func MY_WM_COMMAND($hWnd, $CBMSG, $wParam, $lParam)
Switch $CBMSG
   Case $WM_NCACTIVATE
      If Not $wParam Then ; Save control focus
         $hWndSaveFocus = _WinAPI_GetFocus()
      ElseIf $hWndSaveFocus Then ; Restore control focus
         _WinAPI_SetFocus($hWndSaveFocus)
         $hWndSaveFocus = 0
      EndIf
   Case $WM_NOTIFY ;  Process grid notifications
      Local $pnmh = DllStructCreate($tagGRIDNOTIFY, $lParam)
      If DllStructGetData($pnmh, "hwndFrom") = $hGrid Then
         Switch DllStructGetData($pnmh, "Code")
            Case $GN_HEADERCLICK ;    Sort the grid by column, invert sorting order
               _SendMessage($hGrid, $GM_COLUMNSORT, DllStructGetData($pnmh, "col"), $SORT_INVERT)
               ColorTheGrid($hGrid, $iRows)
               ConsoleWrite("$GN_HEADERCLICK, Col: " & DllStructGetData($pnmh, "col") & @CRLF)
            Case $GN_BEFORESELCHANGE ;User request a selection change
               _SendMessage($hGrid, $GM_GETCURSEL, 0, 0)
               ConsoleWrite("$GN_BEFORESELCHANGE Row: " & DllStructGetData($pnmh, "row") & " Col: " & DllStructGetData($pnmh, "col") & @CRLF)
            Case $GN_AFTERSELCHANGE ;after a selection change
               ConsoleWrite("$GN_AFTERSELCHANGE" & @CRLF)
            Case $GN_BEFOREEDIT ;before the cell edit control shows
               ConsoleWrite("$GN_BEFOREEDIT" & @CRLF)
            Case $GN_AFTEREDIT ;when the cell edit control is about to close
               ConsoleWrite("$GN_AFTEREDIT Data:" & DllStructGetData($pnmh, "lpdata") & @CRLF) ;not working: not returning data
            Case $GN_BEFOREUPDATE ;before a cell updates grid data
               ConsoleWrite("$GN_BEFOREUPDATE" & @CRLF)
            Case $GN_AFTERUPDATE ;after grid data has been updated
               ConsoleWrite("$GN_AFTERUPDATE" & @CRLF)
         EndSwitch
      EndIf
   Case $WM_DESTROY
      _WinAPI_DeleteObject($hFont)
EndSwitch
EndFunc   ;==>MY_WM_COMMAND

Func GridSetup($hWnd)
Local $lpzhdrtext, $lpsz, $r, $c, $z
Local $col = DllStructCreate("UINT colwt;UINT lpszhdrtext;UINT halign;UINT calign;UINT ctype;UINT ctextmax;UINT lpszformat;UINT himl;UINT hdrflag")
If @error Then
   MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " &  _WinAPI_GetLastErrorMessage())
   MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error)
EndIf

For $i = 1 To 5 ; Create and format 5 columns
   $lpzhdrtext = DllStructCreate("wchar[1]")
   ;$lpzhdrtext = DllStructCreate("char[1]")
   DllStructSetData($lpzhdrtext, 1, Chr(64 + $i))
   DllStructSetData($col, "colwt", 130)
   DllStructSetData($col, "lpszhdrtext", DllStructGetPtr($lpzhdrtext))
   DllStructSetData($col, "halign", $GA_ALIGN_CENTER)
   DllStructSetData($col, "calign", $GA_ALIGN_CENTER)
   DllStructSetData($col, "ctype", $TYPE_EDITTEXT)
   DllStructSetData($col, "ctextmax", 31)
   DllStructSetData($col, "lpszformat", 0)
   DllStructSetData($col, "himl", 0)
   DllStructSetData($col, "hdrflag", 0)
   _SendMessage($hWnd, $GM_ADDCOL, 0, DllStructGetPtr($col))
Next

DllStructSetData($lf, "Height", -12) ;  Our grid will use 10 point Arial font
If @error Then
   MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " &  _WinAPI_GetLastErrorMessage())
   MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error)
EndIf

DllStructSetData($lf, "FaceName", "SEGOE IU")
If @error Then
   MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " &  _WinAPI_GetLastErrorMessage())
   MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error)
EndIf

$hFont = _WinAPI_CreateFontIndirect($lf)
_SendMessage($hGrid, $WM_SETFONT, $hFont, 0)
If @error Then
   MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " &  _WinAPI_GetLastErrorMessage())
   MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error)
EndIf

For $i = 1 To $iRows ; Create 32,765 blank rows
   _SendMessage($hGrid, $GM_ADDROW, 0, 0)
Next

If @error Then
   MsgBox($MB_SYSTEMMODAL, "ERROR", "Error: " &  _WinAPI_GetLastErrorMessage())
   MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), Default, "Error in DllStructCreate, Code: " & @error)
EndIf

For $r = 0 To $iRows - 1; Fill our grid with some data
   For $c = 0 To 4
      $z = String(Random(0, $iRows))
      $lpsz = DllStructCreate("char[" & StringLen($z) + 1 & "]")
      DllStructSetData($lpsz, 1, $z)
      _SendMessage($hGrid, $GM_SETCELLDATA, _WinAPI_MakeLong($c, $r), DllStructGetPtr($lpsz))
   Next
Next
EndFunc   ;==>GridSetup

Func ColorTheGrid($hWnd, $Rows)
Local $grc = DllStructCreate("UINT backcolor;UINT textcolor")

DllStructSetData($grc, "backcolor", _MakeRGB(0, 240, 230))
DllStructSetData($grc, "textcolor", 0)
For $i = 0 To $Rows - 1 Step 2
   _SendMessage($hWnd, $GM_SETROWCOLOR, $i, DllStructGetPtr($grc))
Next
DllStructSetData($grc, "backcolor", _MakeRGB(255, 255, 255))
DllStructSetData($grc, "textcolor", 0)
For $i = 1 To $Rows Step 2
   _SendMessage($hWnd, $GM_SETROWCOLOR, $i, DllStructGetPtr($grc))
Next
$grc = 0
EndFunc   ;==>ColorTheGrid

Func _MakeRGB($b, $g, $r)
Local $aRGB[3]
$aRGB[0] = $r
$aRGB[1] = $g
$aRGB[2] = $b
Return _ColorSetRGB($aRGB)
EndFunc   ;==>_MakeRGB

 

Link to post
Share on other sites

Thank you @robertocm I had already worked it out and receiving messages. I was able to block specific column edit.

In your code, I think the $GN_AFTEREDIT isn't working coz lpdata is a pointer. I haven't gotten that far in my trial to

verify that, I'm still stuck trying to figure out the column format routine. The demo ASM code executes 3 headaches per minute :sweating:

I appreciate your help very much.

Edited by dmob
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By DJ143
      I have a autoit exe file which is used in upload/browse file functionality.  This has been integrated with selenium framework and I am invoking the autoit exe using Java process and runtime. 
      Now the issue is when I run the scripts and invoke the autoit exe in local it works perfectly.  But when I use selenium grid or jenkins to run the scripts in another windows server it is not working.
      Can anyone please suggest any solution for this?
    • By t0nZ
      Often I need to create a panel to monitor a lot of things (users, files, items etc) so I use this piece of code to create a dynamic grid of buttons.
      The number of buttons is variable, and it's related to the size of the gui, the size of the buttons and the distance between buttons.
      Every "button" is a set of three with a real button stacked on the top of two labels, imagine reading a .CSV file or an array or a database and displaying all the things using the labels (Text and COLOR too) and clickin' on the relative button you can call further info on the item or call a particular function.
      So you can decide the number of the buttons, the width of the buttons, and also the distance  between buttons.
      It's quick and dirty, simple  and very improvable (I know..) so fell free to play with the code.
      ;TEST ;GOL-Grill ;Grill test/template ; (c) 2019 NSC ; V.0.6 #Region ;************ Includes ************ #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <StaticConstants.au3> #include <EditConstants.au3> #include <ProgressConstants.au3> #include <_GOLLOG.au3>; NSC first UDF #EndRegion ;************ Includes ************ Dim $agButton[1] Global $ButtonU, $rProgress, $form1, $labeltot, $ntotButtonS ; the number of buttons is variable based on the guisize, the button size and button distance, three examples.... ;Global $guiwidth = 850, $guiheight = 500, $buttonW = 150, $buttonHDistance = 10, $buttonVDistance = 20 ; SMALL GUI / BIG BUTTONS <- try it ! Global $guiwidth = 1500, $guiheight = 700, $buttonW = 90 , $buttonHDistance = 29, $buttonVDistance = 3; BIG GUI / SMALL BUTTONS ;Global $guiwidth = 1200, $guiheight = 800, $buttonW = 300, $buttonHDistance = 30, $buttonVDistance = 7; last two variables are horizontal and vertical distance between buttons Global $ver = "V.0.6" Gollog(">>>>> START") Dim $aResult[11] = [10, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] ; this is an example, it can be an array, a DB, a .text file read in real time. Gui() Gollog("start analyzing...") Monitor() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE CLOSEClicked() Exit Case $ButtonU Monitor() Case Else For $i = 1 To $ntotButtonS If $nMsg = $agButton[$i] Then $Bhit = GUICtrlRead($agButton[$i]) infoB($Bhit) EndIf Next EndSwitch WEnd Func Gui() $form1 = GUICreate("Buttons on a grill " & $ver & " (c) NSC 2019", $guiwidth, $guiheight, 90, 10) $ButtonU = GUICtrlCreateButton("Update", 2, 2, 170, 50) $labeltot = GUICtrlCreateLabel("Total found", 5, 55) $Gollogedit = GUICtrlCreateEdit("", 2, $guiheight - 255, 180, 250, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_BORDER)) $rProgress = GUICtrlCreateProgress($guiwidth - 18, 5, 16, $guiheight - 7, BitOR($PBS_SMOOTH, $PBS_VERTICAL, $WS_BORDER)) GUICtrlSetColor(-1, 0x00FF00) GUICtrlSetBkColor(-1, 0x000000) GUISetState(@SW_SHOW) EndFunc ;==>Gui Func Monitor() GUIDelete($form1) Gui() $leftSTART = 186 ;left align $topSTART = 5 ;start from top $lineDOWN = 45 + $buttonVDistance ; vertical line distance 45 is buttons very near $extraHSTEP = 3 ; extra line distance $buttonSEMIH = 15 ; height of one of the 3 vertical impiled semibuttons $separatorSEMIH = 2 ;vertical distance between 3 semibuttons $separatorW = 2 ;aux horizontal distance ;---------- derived measures $rightLIMIT = $guiwidth - 123 ; right limit befor Carriage Return $leftINCREMENT = $buttonHDistance + $buttonW ; horizontal increment button after button $leftSTEP = $leftSTART ;incremental horizontal $topSTEP = $topSTART ;incremental vertical $foundB = $aResult[0] GUICtrlSetData($labeltot, "Found n°" & $foundB) $ntotButtonS = 0 $nomorebuttons = 0 For $i = 1 To $foundB Local $itemFound = $aResult[$i] ;\TA1000 Gollog($itemFound) GUICtrlCreateGroup('', $leftSTEP, $topSTEP - 3, $buttonW + 3, 50) ;______first-----------------------------_______line___________________UNO________11111_____\\\\\\\\\\------------ Local $textbutton = "button n°" & $i _ArrayAdd($agButton, GUICtrlCreateButton($textbutton, $leftSTEP + $separatorSEMIH, $topSTEP + $extraHSTEP, $buttonW, $buttonSEMIH, $BS_flat)) GUICtrlSetBkColor(-1, 0xccffcc) ;green, sort of GUICtrlSetFont(-1, 7, -1, -1, 'verdana') GUICtrlSetColor(-1, 0x000000) ;___second__________line___________________DUE ________222222-------------------------------------------------------------------- Local $textLINE2 = $itemFound GUICtrlCreateLabel($textLINE2, $leftSTEP + $separatorW, $topSTEP + $buttonSEMIH + $separatorSEMIH, $buttonW, $buttonSEMIH, BitOR($SS_CENTER, $SS_CENTERIMAGE)) GUICtrlSetBkColor(-1, 0xD2D7A8) GUICtrlSetFont(-1, 7, -1, -1, 'verdana') GUICtrlSetColor(-1, 0x000000) ; __third______line________tre___________________________________________________________333333-3333333-333333333-333333-33333-33333-3333-------------------------------- Local $textLINE3 = "line3" GUICtrlCreateLabel($textLINE3, $leftSTEP + $separatorW, $topSTEP + $buttonSEMIH + $buttonSEMIH + $separatorSEMIH, $buttonW, $buttonSEMIH, BitOR($SS_CENTER, $SS_CENTERIMAGE)) ; NSC modify GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetFont(-1, 7, -1, -1, 'verdana') GUICtrlSetColor(-1, 0x000000) $ntotButtonS += 1 GUICtrlSetData($rProgress, (100 * $ntotButtonS / $foundB)) If $leftSTEP + $buttonW < $rightLIMIT Then ; $leftSTEP += $leftINCREMENT ;53 Else $leftSTEP = $leftSTART $topSTEP += $lineDOWN If $topSTEP >= $guiheight - 50 Then $nomorebuttons = 1 Gollog("displayed " & $ntotButtonS & " buttons") Gollog("NO more buttons !") EndIf EndIf Sleep(100) ; REMOVE is only for demo Next While $nomorebuttons = 0 ; draw empty buttons (nice to do) $ntotButtonS += 1 _ArrayAdd($agButton, GUICtrlCreateButton("B-" & $ntotButtonS, $leftSTEP + $separatorSEMIH, $topSTEP + $extraHSTEP, $buttonW, $buttonSEMIH, $BS_flat)) If $leftSTEP + $buttonW < $rightLIMIT Then ; $leftSTEP += $leftINCREMENT Else $leftSTEP = $leftSTART $topSTEP += $lineDOWN If $topSTEP >= $guiheight - 50 Then $nomorebuttons = 1 Gollog("displayed " & $ntotButtonS & " buttons") Gollog("NO more buttons !") EndIf EndIf WEnd GUISetState(@SW_SHOW) EndFunc ;==>Monitor Func infoB($Bhit) ; this function act on the pressed button, it's an example so assign the task you need. gollog("infoB -> " & $Bhit) EndFunc ;==>infoB Func CLOSEClicked() MsgBox(64, "exit", "program exiting", 1) Gollog("<---STOP") Exit EndFunc ;==>CLOSEClicked You will need also the Include from this post for the LOG (Gollog) instructions, but you can also just remove the gollog and the EDIT box.
      Look at the screenshot, It's from an APP made using this code.

      21/11/2019 V.0.6
      Script lightly updated with better management of buttons size and distance.
       
    • By mike2003
      Is it possible to combine this?

      like this
      #include <GUIConstantsEx.au3> #include <ListViewConstants.au3> #include <WindowsConstants.au3> Example() Func Example() GUICreate("listview items", 220, 250, 100, 200, -1) ;~ Local $idListview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 200, 150, -1, $LVS_EX_GRIDLINES) Local $idListview = GUICtrlCreateListView("col1 |col2|col3 ", 10, 10, 200, 150, $LVS_LIST, $LVS_EX_GRIDLINES) Local $idItem1 = GUICtrlCreateListViewItem("item2|col22|col23", $idListview) Local $idItem2 = GUICtrlCreateListViewItem("item1|col12|col13", $idListview) Local $idItem3 = GUICtrlCreateListViewItem("item3|col32|col33", $idListview) GUISetState(@SW_SHOW) GUICtrlDelete($idItem1) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd EndFunc ;==>Example  
    • By Rowdy
      Hi
      Does anyone know how to retrieve the contents (row & column data) of a VB6 MSFlexGrid control using the AutoItx DLLs in a C# program?
      Thankyou
      Rowdy
    • By redrider81
      I have taken a look at GUICtrlCreateListView and the Table.UDF created by AndyBiochem (great job). I can't see any sign or mention of whether or not there is any way to build a table or grid view where the data in the boxes can be updated. I also don't see anywhere that says they are read only, so I am not sure. 
      Thanks to anyone who can confirm my assumption that it's not possible to edit any grid or table view in AutoIt.
×
×
  • Create New...