Jump to content

Recommended Posts

Posted

Hi , is possible to increase a font in listview ? this is my code 

; ----------------------------------------------------------------------------

; AutoIt Version: 3.3.18.0
; Author:         

; Script Function:
;   GUI with Tabs to manage SQLite tables:
;     - Tipo_Lavorazioni (Work Types)
;     - Calcolatore_Prezzi (Price Calculator)

; Database: Lepelli.db (in the same folder as the script)

; ----------------------------------------------------------------------------

#AutoIt3Wrapper_icon=Leather.ico
#AutoIt3Wrapper_UseUpx=n

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <TabConstants.au3>
#include <WinAPIEx.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <GuiListView.au3>
#include <GuiComboBox.au3>
#include <GuiImageList.au3>
#Include <GuiTab.au3>

Opt("GUIOnEventMode", 1)


; --- Global Variables -----
Global $hMainGUI, $hTab, $hTab1, $hLV1, $hInpTipoLav, $hInpFornitore, $hInpCosto
Global $hBtnAggiungi1, $hBtnAggiorna1, $hBtnElimina1, $hTab2, $hLV2, $hCmbTipoLav2, $hInpCostoLav, $hInpRicarico
Global $hInpTotale, $hInpPercRicarico, $hBtnAggiungi2, $hBtnAggiorna2, $hBtnElimina2, $hBtnCalcolaTotale, $hInpTotaleGenerale, $hDB
Global $hLabelCostoLav, $hLabelRicarico, $hLabelTotale, $hLabelPerc
Global $hImageList, $iCheckboxIndex, $iUnCheckboxIndex

; --- Colors for alternating rows ---
Global $iColorBianco = 0xFFFFFF ; White
Global $iColorGrigio = 0xF0F0F0 ; Light Gray

; --- Array to store work types and costs ---
Global $aTipoLavorazioni[1][2] ; [0][0] = count, [n][0] = Type, [n][1] = Cost

; --- Array to store checkbox states ---
Global $aCheckboxState[1] = [0] ; [0] = count, [n] = checkbox state (0=unchecked, 1=checked)


; --- Start SQLite ---
Local $iSQL = _SQLite_Startup(@ScriptDir & "\sqlite3_x64.dll", False, 1)
If $iSQL <> $SQLITE_OK Then
    MsgBox(16, "Error", "Unable to start SQLite:" & _SQLite_ErrMsg())
EndIf
$hDB = _SQLite_Open(@ScriptDir & "\Lepelli.db")
If @error Then
    MsgBox($MB_ICONERROR, "Error", "Unable to open database Lepelli.db")
    Exit
EndIf

Func _main()
    ; --- Load work types for the ComboBox ---
    _CaricaLavorazioniPerComboBox()

    ; --- Create ImageList for checkboxes ---
    _CreaImageListCheckbox()

    ; --- Main GUI ---
    $hMainGUI = GUICreate("LePelle - By Flaminio - Work Types Management", 900, 650) ; Increased height
    GUISetOnEvent($GUI_EVENT_CLOSE, "_close")

    ; --- Tab ---
    $hTab = GUICtrlCreateTab(10, 10, 880, 590, $TCS_MULTILINE)

    ; -- Tab 1: Work Types --
    $hTab1 = GUICtrlCreateTabItem("Work Types")
    ; MODIFY HERE: removed "ID|" from headers
    $hLV1 = GUICtrlCreateListView("Work Type|Supplier|Cost", 20, 50, 860, 250)
    _GUICtrlListView_SetColumnWidth($hLV1, 0, 350) ; Increased width of the first column
    _GUICtrlListView_SetColumnWidth($hLV1, 1, 250)
    _GUICtrlListView_SetColumnWidth($hLV1, 2, 150)

    ; Set style to allow row coloring
    _GUICtrlListView_SetExtendedListViewStyle($hLV1, $LVS_EX_FULLROWSELECT)

    ; Input boxes for Work Types
    GUICtrlCreateLabel("Work Type:", 20, 320)
    $hInpTipoLav = GUICtrlCreateInput("", 150, 315, 300, 25)

    GUICtrlCreateLabel("Supplier:", 20, 360)
    $hInpFornitore = GUICtrlCreateInput("", 150, 355, 300, 25)

    GUICtrlCreateLabel("Cost:", 20, 400)
    $hInpCosto = GUICtrlCreateInput("", 150, 395, 150, 25)

    $hBtnAggiungi1 = GUICtrlCreateButton("Add Work Type", 20, 440, 180, 30)
    GUICtrlSetOnEvent($hBtnAggiungi1, "_AggiungiTipoLavorazione")

    $hBtnAggiorna1 = GUICtrlCreateButton("Refresh List", 220, 440, 180, 30)
    GUICtrlSetOnEvent($hBtnAggiorna1, "_CaricaTipoLavorazioni")

    $hBtnElimina1 = GUICtrlCreateButton("Delete Selected", 420, 440, 180, 30)
    GUICtrlSetOnEvent($hBtnElimina1, "_EliminaTipoLavorazione")

    ; -- Tab 2: Price Calculator --
    $hTab2 = GUICtrlCreateTabItem("Price Calculator")

    ; MODIFY HERE: Added "Sel." as first column for checkboxes
    $hLV2 = GUICtrlCreateListView("Sel.|Work Type|Work Cost|Markup|Total + Markup|% Markup", 20, 50, 860, 250)
    _GUICtrlListView_SetColumnWidth($hLV2, 0, 40) ; Checkbox column
    _GUICtrlListView_SetColumnWidth($hLV2, 1, 180)
    _GUICtrlListView_SetColumnWidth($hLV2, 2, 120)
    _GUICtrlListView_SetColumnWidth($hLV2, 3, 100)
    _GUICtrlListView_SetColumnWidth($hLV2, 4, 130)
    _GUICtrlListView_SetColumnWidth($hLV2, 5, 100)

    ; Set style to allow row coloring and checkboxes
    _GUICtrlListView_SetExtendedListViewStyle($hLV2, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_SUBITEMIMAGES))

    ; Assign the ImageList to the ListView
    _GUICtrlListView_SetImageList($hLV2, $hImageList, 1)

    ; Set event for checkbox clicks
    GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

    ; Input boxes for Calculator
    GUICtrlCreateLabel("Work Type:", 20, 320)
    ; MODIFY HERE: replaced Input with ComboBox
    $hCmbTipoLav2 = GUICtrlCreateCombo("", 180, 315, 280, 25, $CBS_DROPDOWNLIST)

    ; Populate the ComboBox with work types
    _PopolaComboBoxLavorazioni()

    ; Set event when ComboBox selection changes
    GUICtrlSetOnEvent($hCmbTipoLav2, "_OnSelezioneLavorazioneCambiata")

    GUICtrlCreateLabel("Work Cost:", 20, 360)
    $hInpCostoLav = GUICtrlCreateInput("", 180, 355, 150, 25)
    GUICtrlSetState($hInpCostoLav, $GUI_DISABLE) ; Disabled because it auto-fills

    GUICtrlCreateLabel("Markup (€):", 20, 400)
    $hInpRicarico = GUICtrlCreateInput("", 180, 395, 150, 25)
    GUICtrlSetOnEvent($hInpRicarico, "_CalcolaTotale")
    GUICtrlSetOnEvent($hInpPercRicarico, "_CalcolaRicaricoDaPercentuale")

    GUICtrlCreateLabel("Total + Markup:", 350, 360)
    $hInpTotale = GUICtrlCreateInput("", 480, 355, 150, 25)

    GUICtrlCreateLabel("% Markup:", 350, 400)
    $hInpPercRicarico = GUICtrlCreateInput("", 480, 395, 150, 25)
    GUICtrlSetOnEvent($hInpPercRicarico, "_CalcolaRicaricoDaPercentuale")
    GUICtrlSetOnEvent($hInpRicarico, "_CalcolaPercentualeDaRicarico")

    $hBtnAggiungi2 = GUICtrlCreateButton("Add", 20, 440, 150, 30)
    GUICtrlSetOnEvent($hBtnAggiungi2, "_AggiungiCalcolatore")

    $hBtnAggiorna2 = GUICtrlCreateButton("Refresh List", 190, 440, 150, 30)
    GUICtrlSetOnEvent($hBtnAggiorna2, "_CaricaCalcolatore")

    $hBtnElimina2 = GUICtrlCreateButton("Delete Selected", 360, 440, 150, 30)
    GUICtrlSetOnEvent($hBtnElimina2, "_EliminaCalcolatore")

    ; --- NEW: Button to calculate total of selected work types ---
    $hBtnCalcolaTotale = GUICtrlCreateButton("Calculate Selected Total", 20, 480, 180, 30)
    GUICtrlSetOnEvent($hBtnCalcolaTotale, "_CalcolaTotaleSelezionati")

    ; --- NEW: Input for general total (read-only) ---
    GUICtrlCreateLabel("Total Selected Work Types:", 220, 485)
    $hInpTotaleGenerale = GUICtrlCreateInput("0.00 €", 400, 480, 150, 30)
    GUICtrlSetState($hInpTotaleGenerale, $GUI_DISABLE)
    GUICtrlSetFont($hInpTotaleGenerale, 10, 800) ; Larger and bold font
    GUICtrlSetColor($hInpTotaleGenerale, 0x0000FF) ; Blue color
    GUICtrlSetBkColor($hInpTotaleGenerale, 0xF0F0F0) ; Light gray background

    GUICtrlCreateTabItem("") ; Close tabs

    ; --- Show GUI ---
    GUISetState(@SW_SHOW, $hMainGUI)

EndFunc   ;==>_main

Func _CreaImageListCheckbox()
    ; Create an ImageList for checkboxes
    $hImageList = _GUIImageList_Create(16, 16, 5, 3)

    ; Add images for unchecked and checked checkboxes
    $iUnCheckboxIndex = _GUIImageList_AddIcon($hImageList, "shell32.dll", 131) ; Empty checkbox icon
    $iCheckboxIndex = _GUIImageList_AddIcon($hImageList, "shell32.dll", 132) ; Checked checkbox icon
EndFunc   ;==>_CreaImageListCheckbox

Func _CaricaLavorazioniPerComboBox()
    ; Load all work types from the Tipo_Lavorazioni table
    Local $aRows, $iRows, $iCols
    _SQLite_GetTable2D($hDB, "SELECT TipoLavorazione, Costo FROM Tipo_Lavorazioni ORDER BY TipoLavorazione;", $aRows, $iRows, $iCols)
    If @error Then Return

    ; Resize the global array
    ReDim $aTipoLavorazioni[$iRows + 1][2]
    $aTipoLavorazioni[0][0] = $iRows

    ; Populate the global array with data
    For $i = 1 To $iRows
        $aTipoLavorazioni[$i][0] = $aRows[$i][0] ; Work Type
        $aTipoLavorazioni[$i][1] = $aRows[$i][1] ; Cost
    Next
EndFunc   ;==>_CaricaLavorazioniPerComboBox

Func _PopolaComboBoxLavorazioni()
    ; Clear the ComboBox
    _GUICtrlComboBox_ResetContent($hCmbTipoLav2)

    ; Add an empty option as first element
    _GUICtrlComboBox_AddString($hCmbTipoLav2, "")

    ; Populate the ComboBox with work types
    For $i = 1 To $aTipoLavorazioni[0][0]
        _GUICtrlComboBox_AddString($hCmbTipoLav2, $aTipoLavorazioni[$i][0])
    Next

    ; Select the first element (empty)
    _GUICtrlComboBox_SetCurSel($hCmbTipoLav2, 0)
EndFunc   ;==>_PopolaComboBoxLavorazioni

Func _OnSelezioneLavorazioneCambiata()
    ; Get the selected work type
    Local $sTipoSelezionato = GUICtrlRead($hCmbTipoLav2)

    If $sTipoSelezionato = "" Then
        ; If empty element is selected, clear the cost field
        GUICtrlSetData($hInpCostoLav, "")
        Return
    EndIf

    ; Search for the cost corresponding to the selected work type
    For $i = 1 To $aTipoLavorazioni[0][0]
        If $aTipoLavorazioni[$i][0] = $sTipoSelezionato Then
            ; Found! Set the cost in the corresponding field
            GUICtrlSetData($hInpCostoLav, $aTipoLavorazioni[$i][1])

            ; If there's already a markup, automatically calculate the total
            Local $sRicarico = GUICtrlRead($hInpRicarico)
            If $sRicarico <> "" Then
                _CalcolaTotale()
            EndIf

            Return
        EndIf
    Next

    ; If not found, clear the cost field
    GUICtrlSetData($hInpCostoLav, "")
EndFunc   ;==>_OnSelezioneLavorazioneCambiata

Func _CalcolaTotale()
    ; Calculate total when markup is entered
    Local $sCosto = GUICtrlRead($hInpCostoLav)
    Local $sRicarico = GUICtrlRead($hInpRicarico)

    If $sCosto = "" Or $sRicarico = "" Then
        GUICtrlSetData($hInpTotale, "")
        GUICtrlSetData($hInpPercRicarico, "")
        Return
    EndIf

    ; Calculate total
    Local $fTotale = Number($sCosto) + Number($sRicarico)
    GUICtrlSetData($hInpTotale, StringFormat("%.2f", $fTotale))

    ; Calculate markup percentage
    If Number($sCosto) > 0 Then
        Local $fPercentuale = (Number($sRicarico) / Number($sCosto)) * 100
        GUICtrlSetData($hInpPercRicarico, StringFormat("%.2f", $fPercentuale))
    Else
        GUICtrlSetData($hInpPercRicarico, "")
    EndIf
EndFunc   ;==>_CalcolaTotale

Func _CalcolaRicaricoDaPercentuale()
    ; Calculate markup when percentage is entered
    Local $sCosto = GUICtrlRead($hInpCostoLav)
    Local $sPercentuale = GUICtrlRead($hInpPercRicarico)

    If $sCosto = "" Or $sPercentuale = "" Then
        Return
    EndIf

    ; Calculate markup from percentage
    Local $fRicarico = Number($sCosto) * (Number($sPercentuale) / 100)
    GUICtrlSetData($hInpRicarico, StringFormat("%.2f", $fRicarico))

    ; Recalculate total
    _CalcolaTotale()
EndFunc   ;==>_CalcolaRicaricoDaPercentuale

Func _CalcolaPercentualeDaRicarico()
    ; Calculate percentage when markup is entered
    Local $sCosto = GUICtrlRead($hInpCostoLav)
    Local $sRicarico = GUICtrlRead($hInpRicarico)

    If $sCosto = "" Or $sRicarico = "" Or Number($sCosto) = 0 Then
        Return
    EndIf

    ; Calculate markup percentage
    Local $fPercentuale = (Number($sRicarico) / Number($sCosto)) * 100
    GUICtrlSetData($hInpPercRicarico, StringFormat("%.2f", $fPercentuale))
EndFunc   ;==>_CalcolaPercentualeDaRicarico

Func _CalcolaTotaleSelezionati()
    ; Calculate total of selected work types
    Local $fTotaleGenerale = 0
    Local $iItemCount = _GUICtrlListView_GetItemCount($hLV2)

    For $i = 0 To $iItemCount - 1
        ; Check if checkbox is selected
        If _GUICtrlListView_GetItemChecked($hLV2, $i) Then
            ; Get text from "Total + Markup" column (index 4)
            Local $sTotaleItem = _GUICtrlListView_GetItemText($hLV2, $i, 4)
            If $sTotaleItem <> "" Then
                $fTotaleGenerale += Number($sTotaleItem)
            EndIf
        EndIf
    Next

    ; Update the general total field
    GUICtrlSetData($hInpTotaleGenerale, StringFormat("%.2f €", $fTotaleGenerale))

    ; Also show a message with the count
    Local $iSelezionati = 0
    For $i = 0 To $iItemCount - 1
        If _GUICtrlListView_GetItemChecked($hLV2, $i) Then
            $iSelezionati += 1
        EndIf
    Next

    If $iSelezionati > 0 Then
        MsgBox($MB_ICONINFORMATION, "Total Calculated", _
            "Total of " & $iSelezionati & " selected work type(s):" & @CRLF & _
            StringFormat("%.2f €", $fTotaleGenerale))
    Else
        MsgBox($MB_ICONWARNING, "Attention", "No work types selected!")
    EndIf
EndFunc   ;==>_CalcolaTotaleSelezionati

Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    ; Handle ListView events (checkbox clicks)
    Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    Local $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    Local $iCode = DllStructGetData($tNMHDR, "Code")

    If $hWndFrom = GUICtrlGetHandle($hLV2) Then
        Switch $iCode
            Case $LVN_ITEMCHANGED ; Item changed (including checkbox click)
                Local $tNMLISTVIEW = DllStructCreate($tagNMLISTVIEW, $lParam)
                Local $iItem = DllStructGetData($tNMLISTVIEW, "Item")
                Local $iSubItem = DllStructGetData($tNMLISTVIEW, "SubItem")
                Local $uNewState = DllStructGetData($tNMLISTVIEW, "uNewState")

                ; If checkbox state changed
                If BitAND($uNewState, 0x3000) Then
                    ; Automatically calculate total when checkbox is selected/deselected
                    _CalcolaTotaleSelezionatiAutomatico()
                EndIf
        EndSwitch
    EndIf

    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY

Func _CalcolaTotaleSelezionatiAutomatico()
    ; Automatically calculate total without showing messages
    Local $fTotaleGenerale = 0
    Local $iItemCount = _GUICtrlListView_GetItemCount($hLV2)

    For $i = 0 To $iItemCount - 1
        If _GUICtrlListView_GetItemChecked($hLV2, $i) Then
            Local $sTotaleItem = _GUICtrlListView_GetItemText($hLV2, $i, 4)
            If $sTotaleItem <> "" Then
                $fTotaleGenerale += Number($sTotaleItem)
            EndIf
        EndIf
    Next

    ; Update the general total field
    GUICtrlSetData($hInpTotaleGenerale, StringFormat("%.2f €", $fTotaleGenerale))
EndFunc   ;==>_CalcolaTotaleSelezionatiAutomatico

_main()
; --- Load initial data ---
_CaricaTipoLavorazioni()
_CaricaCalcolatore()

; --- Main loop ---
While 1
    Sleep(100)
WEnd

; =================== FUNCTIONS ===================

Func _CaricaTipoLavorazioni()
    _GUICtrlListView_DeleteAllItems($hLV1)
    Local $aRows, $iRows, $iCols
    _SQLite_GetTable2D($hDB, "SELECT TipoLavorazione, Fornitore, Costo FROM Tipo_Lavorazioni;", $aRows, $iRows, $iCols)
    If @error Then Return

    Local $iItemIndex
    For $i = 1 To $iRows
        $iItemIndex = GUICtrlCreateListViewItem($aRows[$i][0] & "|" & $aRows[$i][1] & "|" & $aRows[$i][2], $hLV1)

        If Mod($i, 2) = 0 Then
            GUICtrlSetBkColor($iItemIndex, $iColorGrigio)
        Else
            GUICtrlSetBkColor($iItemIndex, $iColorBianco)
        EndIf
    Next

    _CaricaLavorazioniPerComboBox()
    _PopolaComboBoxLavorazioni()
EndFunc   ;==>_CaricaTipoLavorazioni

Func _AggiungiTipoLavorazione()
    Local $sTipo = GUICtrlRead($hInpTipoLav)
    Local $sFornitore = GUICtrlRead($hInpFornitore)
    Local $sCosto = GUICtrlRead($hInpCosto)

    If $sTipo = "" Or $sCosto = "" Then
        MsgBox($MB_ICONWARNING, "Attention", "Work Type and Cost are required.")
        Return
    EndIf

    Local $sQuery = StringFormat("INSERT INTO Tipo_Lavorazioni (TipoLavorazione, Fornitore, Costo) VALUES (%s, %s, %s);", _
            _SQLite_FastEscape($sTipo), _
            _SQLite_FastEscape($sFornitore), _
            _SQLite_FastEscape($sCosto))

    _SQLite_Exec($hDB, $sQuery)
    If @error Then
        MsgBox($MB_ICONERROR, "Error", "Unable to insert record.")
        Return
    EndIf

    GUICtrlSetData($hInpTipoLav, "")
    GUICtrlSetData($hInpFornitore, "")
    GUICtrlSetData($hInpCosto, "")
    _CaricaTipoLavorazioni()
EndFunc   ;==>_AggiungiTipoLavorazione

Func _EliminaTipoLavorazione()
    Local $iSelected = _GUICtrlListView_GetSelectedIndices($hLV1, True)

    If $iSelected[0] = 0 Then
        MsgBox($MB_ICONWARNING, "Attention", "Please select a record to delete first.")
        Return
    EndIf

    Local $aItemInfo = _GUICtrlListView_GetItemTextArray($hLV1, $iSelected[1])

    If UBound($aItemInfo) < 4 Then Return

    Local $sTipo = $aItemInfo[1]
    Local $sFornitore = $aItemInfo[2]
    Local $sCosto = $aItemInfo[3]

    Local $iConfirm = MsgBox($MB_YESNO + $MB_ICONQUESTION, "Confirm Deletion", _
        "Are you sure you want to delete this record?" & @CRLF & @CRLF & _
        "Type: " & $sTipo & @CRLF & _
        "Supplier: " & $sFornitore & @CRLF & _
        "Cost: " & $sCosto)

    If $iConfirm = $IDYES Then
        Local $sQuery = StringFormat("DELETE FROM Tipo_Lavorazioni WHERE TipoLavorazione = %s AND Fornitore = %s AND Costo = %s;", _
                _SQLite_FastEscape($sTipo), _
                _SQLite_FastEscape($sFornitore), _
                _SQLite_FastEscape($sCosto))

        _SQLite_Exec($hDB, $sQuery)
        If @error Then
            MsgBox($MB_ICONERROR, "Error", "Unable to delete record.")
            Return
        EndIf

        MsgBox($MB_ICONINFORMATION, "Success", "Record deleted successfully.")
        _CaricaTipoLavorazioni()
    EndIf
EndFunc   ;==>_EliminaTipoLavorazione

Func _CaricaCalcolatore()
    _GUICtrlListView_DeleteAllItems($hLV2)
    Local $aRows, $iRows, $iCols
    _SQLite_GetTable2D($hDB, "SELECT TipoLavorazione, CostoLavorazione, Ricarico, TotaLeEricarico, Ricarico_Percent FROM Calcolatore_Prezzi;", $aRows, $iRows, $iCols)
    If @error Then Return

    ; Resize the checkbox array
    ReDim $aCheckboxState[$iRows + 1]
    $aCheckboxState[0] = $iRows

    Local $iItemIndex
    For $i = 1 To $iRows
        ; Use GUICtrlCreateListViewItem instead of _GUICtrlListView_AddItem to maintain coloring
        Local $sItemText = "|" & $aRows[$i][0] & "|" & $aRows[$i][1] & "|" & $aRows[$i][2] & "|" & $aRows[$i][3] & "|" & $aRows[$i][4]
        $iItemIndex = GUICtrlCreateListViewItem($sItemText, $hLV2)

        ; Use _GUICtrlListView_SetItemChecked for checkboxes
        _GUICtrlListView_SetItemChecked($hLV2, $i-1, False) ; Initially unchecked

        ; Alternate row colors
        If Mod($i, 2) = 0 Then
            GUICtrlSetBkColor($iItemIndex, $iColorGrigio)
        Else
            GUICtrlSetBkColor($iItemIndex, $iColorBianco)
        EndIf

        ; Initialize checkbox state
        $aCheckboxState[$i] = 0
    Next

    ; Reset general total
    GUICtrlSetData($hInpTotaleGenerale, "0.00 €")
EndFunc   ;==>_CaricaCalcolatore

Func _AggiungiCalcolatore()
    Local $sTipo = GUICtrlRead($hCmbTipoLav2)
    Local $sCosto = GUICtrlRead($hInpCostoLav)
    Local $sRicarico = GUICtrlRead($hInpRicarico)
    Local $sTotale = GUICtrlRead($hInpTotale)
    Local $sPerc = GUICtrlRead($hInpPercRicarico)

    If $sTipo = "" Or $sCosto = "" Then
        MsgBox($MB_ICONWARNING, "Attention", "Work Type and Work Cost are required.")
        Return
    EndIf

    Local $sQuery = StringFormat("INSERT INTO Calcolatore_Prezzi (TipoLavorazione, CostoLavorazione, Ricarico, TotaLeEricarico, Ricarico_Percent) VALUES (%s, %s, %s, %s, %s);", _
            _SQLite_FastEscape($sTipo), _
            _SQLite_FastEscape($sCosto), _
            _SQLite_FastEscape($sRicarico), _
            _SQLite_FastEscape($sTotale), _
            _SQLite_FastEscape($sPerc))

    _SQLite_Exec($hDB, $sQuery)
    If @error Then
        MsgBox($MB_ICONERROR, "Error", "Unable to insert record.")
        Return
    EndIf

    _GUICtrlComboBox_SetCurSel($hCmbTipoLav2, 0)
    GUICtrlSetData($hInpCostoLav, "")
    GUICtrlSetData($hInpRicarico, "")
    GUICtrlSetData($hInpTotale, "")
    GUICtrlSetData($hInpPercRicarico, "")
    _CaricaCalcolatore()
EndFunc   ;==>_AggiungiCalcolatore

Func _EliminaCalcolatore()
    Local $iSelected = _GUICtrlListView_GetSelectedIndices($hLV2, True)

    If $iSelected[0] = 0 Then
        MsgBox($MB_ICONWARNING, "Attention", "Please select a record to delete first.")
        Return
    EndIf

    Local $aItemInfo = _GUICtrlListView_GetItemTextArray($hLV2, $iSelected[1])

    If UBound($aItemInfo) < 7 Then Return

    Local $sTipo = $aItemInfo[2] ; Note: now index is 2 because we added the checkbox column
    Local $sCosto = $aItemInfo[3]
    Local $sRicarico = $aItemInfo[4]
    Local $sTotale = $aItemInfo[5]
    Local $sPerc = $aItemInfo[6]

    Local $iConfirm = MsgBox($MB_YESNO + $MB_ICONQUESTION, "Confirm Deletion", _
        "Are you sure you want to delete this record?" & @CRLF & @CRLF & _
        "Type: " & $sTipo & @CRLF & _
        "Cost: " & $sCosto & @CRLF & _
        "Markup: " & $sRicarico)

    If $iConfirm = $IDYES Then
        Local $sQuery = StringFormat("DELETE FROM Calcolatore_Prezzi WHERE TipoLavorazione = %s AND CostoLavorazione = %s AND Ricarico = %s AND TotaLeEricarico = %s AND Ricarico_Percent = %s;", _
                _SQLite_FastEscape($sTipo), _
                _SQLite_FastEscape($sCosto), _
                _SQLite_FastEscape($sRicarico), _
                _SQLite_FastEscape($sTotale), _
                _SQLite_FastEscape($sPerc))

        _SQLite_Exec($hDB, $sQuery)
        If @error Then
            MsgBox($MB_ICONERROR, "Error", "Unable to delete record.")
            Return
        EndIf

        MsgBox($MB_ICONINFORMATION, "Success", "Record deleted successfully.")
        _CaricaCalcolatore()
    EndIf
EndFunc   ;==>_EliminaCalcolatore

Func _close()
    _SQLite_Close($hDB)
    _SQLite_Shutdown()
    GUIDelete($hMainGUI)
    Exit
EndFunc   ;==>_close

 

Posted
4 hours ago, argumentum said:

Your code should be a sample of the problem, not the whole script.

aaaaaaaaaaa   sorry i understund  now  i must use always  a  short code  sorry , I thought you could put the entire script, sorry... next time  i post only a short code code  promised ,be patient this time 🫣

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
×
×
  • Create New...