Jump to content
Sign in to follow this  
Virgilio1

RAGrid.dll

Recommended Posts

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

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

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  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...