Sign in to follow this  
Followers 0
Virgilio1

RAGrid.dll

3 posts in this topic

Hi Friends

in a gui using the ddl RAGrid.

I can't intercept the click on the cell, can you help me?

the code that I use at the moment is this:

omiss.....
Global $Appuntamenti = GUICreate("Appuntamenti", 435, 380, -1, -1, -1, -1, $Form1)
Global $chiudiappuntamenti = GUICtrlCreateButton("Chiudi", 200, 335, 100, 41, $BS_NOTIFY)
$hLib = DllOpen(@ScriptDir & "\RAGrid.dll")
If $hLib <> -1 Then
  Global $TabellaAppuntamenti = _GUICtrlRAGrid_Create($Appuntamenti, "", 10, 10, 410, 300)
  GridSetup($Appuntamenti)
Else
  MsgBox(0, "Errore", "Non Carico la DLL")
EndIf


GUISetState(@SW_SHOW, $Form1)
Load()
While 1
  $nMsg = GUIGetMsg(1)
  Switch $nMsg[0]
   Case $GUI_EVENT_CLOSE
    If $nMsg[1] = $Form1 Then
     Exit
    ElseIf $nMsg[1] = $impostazioni Then
     GUISetState(@SW_HIDE, $impostazioni)
     GUISetState(@SW_SHOW, $Form1)
    ElseIf $nMsg[1] = $Archivio Then
     GUISetState(@SW_HIDE, $Archivio)
     GUISetState(@SW_SHOW, $Form1)
    ElseIf $nMsg[1] = $Appuntamenti Then
     GUISetState(@SW_HIDE, $Appuntamenti)
     GUISetState(@SW_SHOW, $Form1)
    EndIf
   Case $ButtonInvito
    If GUICtrlRead($elencoRevisioni) Then
     $file = @ScriptDir & "\ispezioni\Revisione-" & GUICtrlRead($elencoRevisioni) & ".xml"
     $datiIncarico = LoadDati($file)
     CreaInvito($datiIncarico)
    Else
     MsgBox(64, "Avviso", "Devi Prima Selezionare un Incarico")
    EndIf
   Case $ButtonChiudi
    Exit
   Case $ButtonRinomina
    Rinomina()
    Load()
   Case $ButtonImpostazioni
    GUISetState(@SW_HIDE, $Form1)
    GUICtrlSetData($Revisore, $AImpostazioni[$CRevisore])
    GUICtrlSetData($Cellulare, $AImpostazioni[$CCellulare])
    GUICtrlSetData($Ufficio, $AImpostazioni[$CUfficio])
    GUICtrlSetData($Email, $AImpostazioni[$CEmail])
    GUICtrlSetState($Logo, $AImpostazioni[$CLogo])
    GUISetState(@SW_SHOW, $impostazioni)
   Case $Salva
    SalvaImpostazioni()
    GUISetState(@SW_HIDE, $impostazioni)
    GUISetState(@SW_SHOW, $Form1)
   Case $ButtonArchivia
    ArchiviaRevisione()
   Case $ButtonArchiviaAccertamento
    ArchiviaAccertamenti()
   Case $ButtonApriArchivio
    GUISetState(@SW_HIDE, $Form1)
    LoadArchivio()
    GUISetState(@SW_SHOW, $Archivio)
   Case $chiudiarchivio
    GUISetState(@SW_HIDE, $Archivio)
    GUISetState(@SW_SHOW, $Form1)
   Case $ripristina
    RipristinaRevisione()
   Case $ripristinaAccertamento
    RipristinaAccertamento()
   Case $ButtonFolium
    If GUICtrlRead($elencoRevisioniConcluse) Then
     CaricaVerbale(@ScriptDir & "\ispezioni\" & "Revisione-" & GUICtrlRead($elencoRevisioniConcluse) & ".xml")
    Else
     MsgBox(0, "Avviso", "Devi Selezionare una Revisione")
    EndIf
   Case $ButtonFolium1
    If GUICtrlRead($elencoAccertamentiConclusi) Then
     CaricaVerbale(@ScriptDir & "\ispezioni\" & "Accertamento-" & GUICtrlRead($elencoAccertamentiConclusi) & ".xml")
    Else
     MsgBox(0, "Avviso", "Devi Selezionare un Accertamento")
    EndIf
   Case $ButtonFolium2
    ElencoFolium("4")
   Case $ButtonFolium21
    ElencoFolium("7")
   Case $ButtonApripdf
    VerificaPdf("Rev", $elencoRevisioni, "A")
   Case $ButtonApripdfDefinito
    VerificaPdf("Rev", $elencoRevisioniConcluse, "A")
   Case $ButtonStampapdfDefinito
    VerificaPdf("Rev", $elencoRevisioniConcluse, "P")
   Case $ButtonApripdfAccertamento
    VerificaPdf("Acc", $elencoAccertamentiConclusi, "A")
   Case $ButtonStampapdfAccertamento
    VerificaPdf("Acc", $elencoAccertamentiConclusi, "P")
   Case $ButtonAppuntamenti
    LoadAppuntamenti()
    GUISetState(@SW_HIDE, $Form1)
    GUISetState(@SW_SHOW, $Appuntamenti)
   Case $chiudiappuntamenti
    GUISetState(@SW_HIDE, $Appuntamenti)
    GUISetState(@SW_SHOW, $Form1)
  EndSwitch
WEnd
GUIDelete($Form1)
GUIDelete($impostazioni)
EndFunc   ;==>__Main
omiss....

Func GridSetup($hwnd)
Local $lpzhdrtext, $lpsz, $r, $c, $z
Local $col = DllStructCreate($tagRAGRIDCOLUMN)
; Colonna Data
$lpzhdrtext = DllStructCreate("char[4]")
DllStructSetData($lpzhdrtext, 1, "Data")
DllStructSetData($col, "colwt", 100)
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)
_GUICTRLRaGrid_ADDCOL($TabellaAppuntamenti, $col)
; Colonna Cooperativa
$lpzhdrtext = DllStructCreate("char[11]")
DllStructSetData($lpzhdrtext, 1, "Cooperativa")
DllStructSetData($col, "colwt", 430)
DllStructSetData($col, "lpszhdrtext", DllStructGetPtr($lpzhdrtext))
DllStructSetData($col, "halign", $GA_ALIGN_LEFT)
DllStructSetData($col, "calign", $GA_ALIGN_LEFT)
DllStructSetData($col, "ctype", $TYPE_EDITTEXT)
DllStructSetData($col, "ctextmax", 100)
DllStructSetData($col, "lpszformat", 0)
DllStructSetData($col, "himl", 0)
DllStructSetData($col, "hdrflag", 0)
_GUICTRLRaGrid_ADDCOL($TabellaAppuntamenti, $col)
DllStructSetData($lf, "Height", -12)
;  Our grid will use 10 point Arial font
DllStructSetData($lf, "FaceName", "Arial")
$hFont = _WinAPI_CreateFontIndirect($lf)
_SendMessage($TabellaAppuntamenti, $WM_SETFONT, $hFont, 0)
EndFunc   ;==>GridSetup

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Look at the demo script. WM_COMMAND is used for interaction with the control.

;Adapted from BCX Demo by Kevin Diggins
;http://www.allbasic.info/forum/index.php?topic=448.0
#include[/url] <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Color.au3>
#include "RAGrid_UDF.au3"
Global $Form
Global $hGrid
Global $hLib
Global $hFont
Global $lf = DllStructCreate($tagLOGFONT)
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 & "libragrid.dll")
If $hLib <> -1 Then
  Local $style = BitOR($WS_CHILD, $WS_VISIBLE, $STYLE_HGRIDLINES, $STYLE_VGRIDLINES, $STYLE_GRIDFRAME, $STYLE_NOSEL)
  $hGrid = _WinAPI_CreateWindowEx(0, "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($tagRAGRIDGRIDNOTIFY, $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)
    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($tagRAGRIDCOLUMN)
For $i = 1 To 5 ; Create and format 5 columns
  $lpzhdrtext = DllStructCreate("wchar")
  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
DllStructSetData($lf, "FaceName", "Arial")
$hFont = _WinAPI_CreateFontIndirect($lf)
_SendMessage($hGrid, $WM_SETFONT, $hFont, 0)
For $i = 1 To $iRows ; Create 32,765 blank rows
  _SendMessage($hGrid, $GM_ADDROW, 0, 0)
Next

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($tagRAGRIDROWCOLOR);
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)
Dim $aRGB[3]
$aRGB[0] = $r
$aRGB[1] = $g
$aRGB[2] = $b
Return _ColorSetRGB($aRGB)
EndFunc   ;==>_MakeRGB

This are the notifications:

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.
Edited by funkey

Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs, and the Universe
trying to produce bigger and better idiots.
So far, the Universe is winning.

Share this post


Link to post
Share on other sites

Hello.

I am interesting for the RaGrid.dll

Where can i find the "RAGrid_UDF.au3" file?

Best regards.

Thanos

Share this post


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
Sign in to follow this  
Followers 0