Jump to content

Recommended Posts

Posted

Here is my script : :)

This program need to manage sportsbook.

And I wanted to ask if I can upgrade this code ?

And there are some errors :

- I don't know why the option $LVS_EX_GRIDLINES don't work correctly,

- I don't know why when we click on the button "Ajouter un pari", the .png picture is reloaded each click on this button,

- sort the two listviews with the first column of each listview (which is hide), from largest to smallest

#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <ListviewConstants.au3>
#include <GuiListView.au3>
#include <ButtonConstants.au3>
#include <UpdownConstants.au3>
#include <EditConstants.au3>
#include <GuiEdit.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GDIPlus.au3>
#Include <GuiImageList.au3>

Dim $Somme_Actuelle, $MAJ_SommeActuelle, $OuvertureFichier = 1

Global $hEdit, $hDC, $hBrush, $Item = -1, $SubItem = 0, $LVHit = 0, $OLR

If ProcessExists("Paris sportifs.exe") Then
    Exit
EndIf

$Fenetre = GUICreate("Paris sportifs", 748, 570)
$FichierIcone = @DesktopDir & "\IconsLandVistaSportIconsDemo\PNG\128x128\Trophy_Gold.png"
GUISetIcon($FichierIcone)
WinSetTrans("Paris sportifs", "", 230)

_GDIPlus_StartUp()
$hImage   = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\TousIconesSports_2.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($Fenetre)

; #######################################################
; ################ GROUPE PARIS EN COURS ################
; #######################################################

GUICtrlCreateGroup(" Paris en cours ", 20, 130, 294, 280)
$Colonnes_Paris_Actuels = _GUICtrlListView_Create($Fenetre, "", 30, 150, 274, 250, BitOR($LVS_EDITLABELS, $LVS_REPORT, $LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))

; Ajout des colonnes :
_GUICtrlListView_InsertColumn($Colonnes_Paris_Actuels, 0, "NumeroLigne")
_GUICtrlListView_InsertColumn($Colonnes_Paris_Actuels, 1, "Mises", 60, 2)
_GUICtrlListView_InsertColumn($Colonnes_Paris_Actuels, 2, "Cotes", 60, 2)
_GUICtrlListView_InsertColumn($Colonnes_Paris_Actuels, 3, "Gain possible", 90, 2)
_GUICtrlListView_InsertColumn($Colonnes_Paris_Actuels, 4, "G", 30, 2)
_GUICtrlListView_InsertColumn($Colonnes_Paris_Actuels, 5, "P", 30, 2)

_GUICtrlListView_HideColumn($Colonnes_Paris_Actuels, 0)

$Ajout_aux_Paris_Termines = GUICtrlCreateButton("Ajouter aux paris terminés", 82, 430, 170)

; #######################################################
; ################ GROUPE PARIS TERMINES ################
; #######################################################

GUICtrlCreateGroup(" Paris terminés ", 334, 130, 294, 280)
$Colonnes_Paris_Termines = _GUICtrlListView_Create($Fenetre, "", 344, 150, 274, 250, BitOR($LVS_REPORT, $LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))

; Ajout des colonnes :
_GUICtrlListView_InsertColumn($Colonnes_Paris_Termines, 0, "Numero Ligne")
_GUICtrlListView_InsertColumn($Colonnes_Paris_Termines, 1, "Mises", 90, 2)
_GUICtrlListView_InsertColumn($Colonnes_Paris_Termines, 2, "Cotes", 90, 2)
_GUICtrlListView_InsertColumn($Colonnes_Paris_Termines, 3, "Gains", 90, 2)

_GUICtrlListView_HideColumn($Colonnes_Paris_Termines, 0)

; #################################################################
; ######################## GROUPE SOMMES ##########################
; #################################################################

$GroupeSommes = GUICtrlCreateGroup(" Sommes", 20, 10, 224, 100)
$SommeDeDepart = GUICtrlCreateCheckbox("Somme de départ :", 30, 30)
$SommeDepart = GUICtrlCreateInput("", 140, 31, 50)

$Label_Somme_Actuelle = GUICtrlCreateLabel("Somme actuelle : ", 45, 78, 100, 12)
$Label_Somme_Actuelle_2 = GUICtrlCreateLabel("", 130, 78, 40, 12)
$Ajouter_Somme = GUICtrlCreateButton("Ajouter", 172, 68, 60, 30)

; #################################################################
; ######################### GROUPE MISES ##########################
; #################################################################

GUICtrlCreateGroup(" Mises ", 264, 10, 364, 100)
GUICtrlCreateLabel("Cote : ", 274, 34)
$Cote = GUICtrlCreateInput("", 307, 31, 50)

$Bouton_Calcul_Mise = GUICtrlCreateButton("Calcul de la mise maximale", 274, 68, 162, 30, $BS_MULTILINE)
$Bouton_Ajout_Pari = GUICtrlCreateButton("Ajouter le pari", 456, 68, 162, 30, $BS_MULTILINE)

; Calcul de la somme maximale sur chaque pari : Solde courant X 4 / 100 (Ne pas dépasser 4% de votre capital sur un pari.)
GUICtrlCreateLabel("Mise maximale : ", 459, 34)
$Pourcentage = 4
$Mise_Maximale = Round($Somme_Actuelle * $Pourcentage / 100, 1)
$Zone_Somme_Maximale = GUICtrlCreateInput("", 539, 31, 60, -1)

; #################################################################
; ################# GCREATION DES MENUS ###########################
; #################################################################

$Menu_Fichier = GUICtrlCreateMenu("&Fichier")
$Menu_Fichier_Nouveau = GUICtrlCreateMenuItem("&Nouveau", $Menu_Fichier)
$Menu_Fichier_Ouvrir = GUICtrlCreateMenuItem("&Ouvrir", $Menu_Fichier)
$Menu_Fichier_Separateur_1 = GUICtrlCreateMenuItem("", $Menu_Fichier)
$Menu_Fichier_Quitter = GUICtrlCreateMenuItem("&Fermer", $Menu_Fichier)

SommeDepart()

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")

_GUICtrlListView_RegisterSortCallBack($Colonnes_Paris_Actuels)

GUISetState()

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE Or $msg = $Menu_Fichier_Quitter
            If GUICtrlRead($Label_Somme_Actuelle_2) <> "" And GUICtrlRead($Label_Somme_Actuelle_2) <> "0" Then
                RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle", "REG_SZ", GUICtrlRead($Label_Somme_Actuelle_2))
            EndIf
            MajParis_INI()
            ExitLoop
        Case $msg = $Ajouter_Somme
            If GUICtrlRead($SommeDepart) <> "" And GUICtrlRead($SommeDepart) <> "0" Then
                If $OuvertureFichier = 1 Then
                    IniWriteSection(@ProgramFilesDir & "\Paris sportifs\Paris.ini", GUICtrlRead($SommeDepart) & "-" & Random(1, 3000, 1), "")
                Else
                    IniWriteSection($OuvertureFichier, GUICtrlRead($SommeDepart) & "-" & Random(1, 3000, 1), "")
                EndIf
                RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme de base", "REG_SZ", GUICtrlRead($SommeDepart))
                RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle", "REG_SZ", GUICtrlRead($SommeDepart))
                GUICtrlSetState($SommeDeDepart, $GUI_CHECKED)
                GUICtrlSetState($SommeDepart, $GUI_DISABLE)
                GUICtrlSetState($Ajouter_Somme, $GUI_DISABLE)
                GUICtrlSetData($Label_Somme_Actuelle_2, GUICtrlRead($SommeDepart))
                GUICtrlSetFont($Label_Somme_Actuelle_2, 8.5, 600)
                If $SommeDepart > 0 Then
                    GUICtrlSetColor($Label_Somme_Actuelle_2, 0x007F0E)
                ElseIf $SommeDepart = 0 Then
                    GUICtrlSetColor($Label_Somme_Actuelle_2, 0x000000)
                Else
                    GUICtrlSetColor($Label_Somme_Actuelle_2, 0xFF0000)
                EndIf
            EndIf
        Case $msg = $Menu_Fichier_Ouvrir
            $OuvertureFichier = FileOpenDialog("Ouvrir", @ProgramFilesDir & "\Paris sportifs\", "ini (*.ini)", 3)
            If @error Then
                MsgBox(48,"","Vous n'avez sélectionné aucun fichier.")
            Else
                $OuvertureFichier = StringReplace($OuvertureFichier, "|", @CRLF)
                SommeDepart()
            EndIf
        Case $msg = $Menu_Fichier_Nouveau
            RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme de base", "REG_SZ", "")
            RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle", "REG_SZ", "")
            GUICtrlSetData($SommeDepart, "")
            GUICtrlSetData($Label_Somme_Actuelle_2, "0")
            GUICtrlSetData($Cote, "")
            GUICtrlSetData($Mise_Maximale, "")
            GUICtrlSetState($SommeDeDepart, $GUI_UNCHECKED)
            GUICtrlSetState($SommeDepart, $GUI_ENABLE)
            GUICtrlSetState($Ajouter_Somme, $GUI_ENABLE)
            _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Colonnes_Paris_Actuels))
        Case $msg = $Bouton_Calcul_Mise
            $Mise_Maximale = Round(GUICtrlRead($Label_Somme_Actuelle_2) * 4 / 100, 1)
            GUICtrlSetData($Zone_Somme_Maximale, $Mise_Maximale)
        Case $msg = $Bouton_Ajout_Pari
            AjoutPari()
        Case $msg = $Ajout_aux_Paris_Termines
            $Nombre_Lignes = _GUICtrlListView_GetItemCount($Colonnes_Paris_Actuels)
            For $i = 0 To $Nombre_Lignes -1
                $Nombre_Lignes_ParisTermines = _GUICtrlListView_GetItemCount($Colonnes_Paris_Termines)
                $NumeroLigne = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 1)
                $Mises = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 2)
                $Cotes = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 3)
                $ParisGagnes = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 5)
                $ParisPerdus = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 6)
                $OLR = $i
                If $ParisGagnes[3] = "G" Or $ParisGagnes[3] = "g" Then
                    _GUICtrlListView_AddItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines -1, $Nombre_Lignes_ParisTermines)
                    _GUICtrlListView_AddSubItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines, $Mises[3], 1)
                    _GUICtrlListView_AddSubItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines, $Cotes[3], 2)
                    _GUICtrlListView_AddSubItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines, Round($Mises[3] * $Cotes[3], 2), 3)
                    _GUICtrlListView_DeleteItem($Colonnes_Paris_Actuels, $OLR)
                ElseIf $ParisPerdus[3] = "P" Or $ParisPerdus[3] = "p" Then
                    _GUICtrlListView_AddItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines -1, $Nombre_Lignes_ParisTermines)
                    _GUICtrlListView_AddSubItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines, $Mises[3], 1)
                    _GUICtrlListView_AddSubItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines, $Cotes[3], 2)
                    _GUICtrlListView_AddSubItem($Colonnes_Paris_Termines, $Nombre_Lignes_ParisTermines, "-", 3)
                    _GUICtrlListView_DeleteItem($Colonnes_Paris_Actuels, $OLR)
                EndIf
                _GUICtrlListView_SetItem($Colonnes_Paris_Actuels, "", $i, 4)
                _GUICtrlListView_SetItem($Colonnes_Paris_Actuels, "", $i, 5)
            Next
;~          _GUICtrlListView_SortItems($Colonnes_Paris_Termines, 0)
    EndSelect
WEnd

; Clean up resources
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()

_GUICtrlListView_UnRegisterSortCallBack($Colonnes_Paris_Actuels)
GUIDelete()

Func SommeDepart()
    If $OuvertureFichier = 1 Then
        $Lecture_Somme = RegRead("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle")
        ; Si la clé de registre n'existe pas, OU que la clé de registre indique une somme de 0€ OU que les tableaux de paris (actuels et terminés) sont vides
        If $Lecture_Somme = "" Or $Lecture_Somme = "0" And _GUICtrlListView_GetItemCount($Colonnes_Paris_Actuels) = 0 Then
            GUICtrlSetState($SommeDeDepart, $GUI_UNCHECKED)
            GUICtrlSetState($SommeDepart, $GUI_ENABLE)
            GUICtrlSetState($Ajouter_Somme, $GUI_ENABLE)
            GUICtrlSetData($Label_Somme_Actuelle_2, "0")
        Else
            GUICtrlSetState($SommeDeDepart, $GUI_CHECKED)
            GUICtrlSetState($SommeDepart, $GUI_DISABLE)
            GUICtrlSetState($Ajouter_Somme, $GUI_DISABLE)
            GUICtrlSetData($SommeDepart, RegRead("HKLM\SOFTWARE\Paris sportifs", "Somme de base"))
            GUICtrlSetData($Label_Somme_Actuelle_2, $Lecture_Somme)

            ; Mise à jour de l'historique des paris (actuels et terminés) à partir du fichier .ini
            MajParis()
        EndIf
        GUICtrlSetFont($Label_Somme_Actuelle_2, 8.5, 600)
        If $Lecture_Somme > 0 Then
            GUICtrlSetColor($Label_Somme_Actuelle_2, 0x007F0E)
        ElseIf $Lecture_Somme = 0 Then
            GUICtrlSetColor($Label_Somme_Actuelle_2, 0x000000)
        Else
            GUICtrlSetColor($Label_Somme_Actuelle_2, 0xFF0000)
        EndIf
    Else
        $Derniere_Section = IniReadSectionNames($OuvertureFichier)
        ; Mise à jour de la somme actuelle
        $LectureClesIni = IniReadSection($OuvertureFichier, $Derniere_Section[$Derniere_Section[0]])
        If Not @error Then
            For $i = 1 To $LectureClesIni[0][0]
                $MAJ_SommeActuelle += $LectureClesIni[$i][0]
            Next
        EndIf
        $PositionTiret = StringInStr($Derniere_Section[$Derniere_Section[0]], "-")
        $Lecture_Somme_Base = StringLeft($Derniere_Section[$Derniere_Section[0]], $PositionTiret -1)
        GUICtrlSetData($SommeDepart, $Lecture_Somme_Base)
        GUICtrlSetData($Label_Somme_Actuelle_2, $Lecture_Somme_Base - $MAJ_SommeActuelle)
        RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme de base", "REG_SZ", $Lecture_Somme_Base)
        RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle", "REG_SZ", $Lecture_Somme_Base - $MAJ_SommeActuelle)
        MajParis()

        $Lecture_Somme = GUICtrlRead($Label_Somme_Actuelle_2)
        GUICtrlSetFont($Label_Somme_Actuelle_2, 8.5, 600)
        If $Lecture_Somme > 0 Then
            GUICtrlSetColor($Label_Somme_Actuelle_2, 0x007F0E)
        ElseIf $Lecture_Somme = 0 Then
            GUICtrlSetColor($Label_Somme_Actuelle_2, 0x000000)
        Else
            GUICtrlSetColor($Label_Somme_Actuelle_2, 0xFF0000)
        EndIf
    EndIf
EndFunc   ;==>SommeDepart

; ####################################################################################################

Func MajParis()
    ; #################################################################
    ; ############# MISE A JOUR DE L'HISTORIQUE DES PARIS #############
    ; #################################################################

    ; Mise à jour de l'historique des paris (actuels et terminés) à partir du fichier .ini
    If FileExists(@ProgramFilesDir & "\Paris sportifs\Paris.ini") And $OuvertureFichier = 1 Then
        $Derniere_Section = IniReadSectionNames(@ProgramFilesDir & "\Paris sportifs\Paris.ini")
        $Lecture_Mises_Cotes = IniReadSection(@ProgramFilesDir & "\Paris sportifs\Paris.ini", $Derniere_Section[$Derniere_Section[0]])
        If Not @error Then
            For $i = 1 To $Lecture_Mises_Cotes[0][0]
                $Nombre_Lignes = _GUICtrlListView_GetItemCount($Colonnes_Paris_Actuels)
                $Ligne_Paris = _GUICtrlListView_AddItem($Colonnes_Paris_Actuels, $Nombre_Lignes -1, $Nombre_Lignes)
                $Ligne_Paris1 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, $Lecture_Mises_Cotes[$i][0], 1);, 2)
                $Ligne_Paris2 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, $Lecture_Mises_Cotes[$i][1], 2);, 2)
                $Ligne_Paris3 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, Round($Lecture_Mises_Cotes[$i][0] * $Lecture_Mises_Cotes[$i][1], 2), 3);, 2)
            Next
;~          _GUICtrlListView_SortItems($Colonnes_Paris_Actuels, 0)
        EndIf
    ElseIf Not $OuvertureFichier = 1 Then
        _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Colonnes_Paris_Actuels))
        $Derniere_Section = IniReadSectionNames($OuvertureFichier)
        $Lecture_Mises_Cotes = IniReadSection($OuvertureFichier, $Derniere_Section[$Derniere_Section[0]])
        If Not @error Then
            For $i = 1 To $Lecture_Mises_Cotes[0][0]
                $Nombre_Lignes = _GUICtrlListView_GetItemCount($Colonnes_Paris_Actuels)
                $Ligne_Paris = _GUICtrlListView_AddItem($Colonnes_Paris_Actuels, $Nombre_Lignes -1, $Nombre_Lignes)
                $Ligne_Paris1 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, $Lecture_Mises_Cotes[$i][0], 1);, 2)
                $Ligne_Paris2 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, $Lecture_Mises_Cotes[$i][1], 2);, 2)
                $Ligne_Paris3 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, Round($Lecture_Mises_Cotes[$i][0] * $Lecture_Mises_Cotes[$i][1], 2), 3);, 2)
            Next
            _GUICtrlListView_SortItems($Colonnes_Paris_Actuels, 0)
        EndIf
    Else
        GUICtrlSetState($SommeDeDepart, $GUI_UNCHECKED)
        GUICtrlSetData($SommeDepart, "")
    EndIf
EndFunc   ;==>MajParis

; ####################################################################################################

Func MajParis_INI()
    ; Lecture du tableau
    $Nombre_Lignes = _GUICtrlListView_GetItemCount($Colonnes_Paris_Actuels)
    If $OuvertureFichier = 1 Then
        If FileExists(@ProgramFilesDir & "\Paris sportifs\Paris.ini") Then
            $Derniere_Section = IniReadSectionNames(@ProgramFilesDir & "\Paris sportifs\Paris.ini")
        Else
            ; Si le fichier d'origine "Paris.ini" ET aucun autre fichier de paris n'a été ouvert dans le logiciel (soit aucun fichier),
            ; on peut alors quitter la fonction.
            Return
        EndIf
    Else
        $Derniere_Section = IniReadSectionNames($OuvertureFichier)
    EndIf
    IniDelete(@ProgramFilesDir & "\Paris sportifs\Paris.ini", $Derniere_Section[$Derniere_Section[0]])
    IniWriteSection(@ProgramFilesDir & "\Paris sportifs\Paris.ini", $Derniere_Section[$Derniere_Section[0]], "")
    For $i = 0 To $Nombre_Lignes -1
        $Cle_Mise = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 1)
        $Valeur_Cote = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 2)
        ; Modification du fichier "Paris.ini"
        IniWrite(@ProgramFilesDir & "\Paris sportifs\Paris.ini", $Derniere_Section[$Derniere_Section[0]], $Cle_Mise[3], $Valeur_Cote[3])
    Next
    ; Mise à jour de la somme actuelle
    $LectureClesIni = IniReadSection(@ProgramFilesDir & "\Paris sportifs\Paris.ini", $Derniere_Section[$Derniere_Section[0]])
    If Not @error Then
        For $i = 1 To $LectureClesIni[0][0]
            $MAJ_SommeActuelle += $LectureClesIni[$i][0]
        Next
    EndIf
    $Lecture_Somme_Base = RegRead("HKLM\SOFTWARE\Paris sportifs", "Somme de base")
    GUICtrlSetData($Label_Somme_Actuelle_2, $Lecture_Somme_Base - $MAJ_SommeActuelle)
    RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle", "REG_SZ", $Lecture_Somme_Base - $MAJ_SommeActuelle)
EndFunc   ;==>MajParis_INI

; ####################################################################################################

Func AjoutPari()
    $Lecture_Somme = RegRead("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle")
    If GUICtrlRead($Cote) <> "" And GUICtrlRead($Cote) <> "0" And GUICtrlRead($Zone_Somme_Maximale) <> "" And GUICtrlRead($Zone_Somme_Maximale) <> "0" And GUICtrlRead($Zone_Somme_Maximale) <= $Lecture_Somme Then
        If StringInStr(GUICtrlRead($Zone_Somme_Maximale), ",") Then
            $CorrectionVirgule = StringReplace(GUICtrlRead($Zone_Somme_Maximale), ",", ".")
        EndIf
        $Nombre_Lignes = _GUICtrlListView_GetItemCount($Colonnes_Paris_Actuels)
        ConsoleWrite( " gjhfkdl    " & $Nombre_Lignes & @CRLF)
        $Ligne_Paris = _GUICtrlListView_AddItem($Colonnes_Paris_Actuels, "10", $Nombre_Lignes)
        $Ligne_Paris1 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, GUICtrlRead($Zone_Somme_Maximale), 1, 1)
        $Ligne_Paris2 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, GUICtrlRead($Cote), 2, 1)
        $Ligne_Paris3 = _GUICtrlListView_AddSubItem($Colonnes_Paris_Actuels, $Nombre_Lignes, Round(GUICtrlRead($Zone_Somme_Maximale) * GUICtrlRead($Cote), 2), 3, 2)

        ; Trie des lignes
        _GUICtrlListView_SortItems($Colonnes_Paris_Actuels, 0)

        $Derniere_Section = IniReadSectionNames(@ProgramFilesDir & "\Paris sportifs\Paris.ini")
        IniWrite(@ProgramFilesDir & "\Paris sportifs\Paris.ini", $Derniere_Section[$Derniere_Section[0]], GUICtrlRead($Zone_Somme_Maximale), GUICtrlRead($Cote))
        $Nouvelle_Somme_Actuelle = $Lecture_Somme - GUICtrlRead($Zone_Somme_Maximale)
        GUICtrlSetData($Label_Somme_Actuelle_2, $Nouvelle_Somme_Actuelle)
        GUICtrlSetBkColor($Cote, 0xFFFFFF)
        GUICtrlSetBkColor($Zone_Somme_Maximale, 0xFFFFFF)
        RegWrite("HKLM\SOFTWARE\Paris sportifs", "Somme actuelle", "REG_SZ", $Nouvelle_Somme_Actuelle)
    Else
        If GUICtrlRead($Cote) = "" And GUICtrlRead($Cote) = 0 Then
            GUICtrlSetBkColor($Cote, 0xFF7F7F)
            GUICtrlSetCursor($Cote, -1)
        Else
            GUICtrlSetBkColor($Cote, 0xFFFFFF)
        EndIf
        If GUICtrlRead($Zone_Somme_Maximale) = "" And GUICtrlRead($Zone_Somme_Maximale) < 0.5 Then
            GUICtrlSetBkColor($Zone_Somme_Maximale, 0xFF7F7F)
        Else
            GUICtrlSetBkColor($Zone_Somme_Maximale, 0xFFFFFF)
        EndIf
    EndIf
EndFunc   ;==>AjoutPari

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iCode, $tNMHDR, $hWndListView, $tInfo, $iIDFrom
    Local $LectureClesIni
    $hWndListView = $Colonnes_Paris_Actuels
    If Not IsHWnd($Colonnes_Paris_Actuels) Then $hWndListView = GUICtrlGetHandle($Colonnes_Paris_Actuels)

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")

    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $LVN_BEGINLABELEDIT, $LVN_BEGINLABELEDITW ; Start of label editing for an item
                    $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
                    Return False ; Allow the user to edit the label
                    ;Return True  ; Prevent the user from editing the label
                Case $NM_CLICK
                    $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
                    $Nombre_Lignes = _GUICtrlListView_GetItemCount($Colonnes_Paris_Actuels)
                    For $i = 0 To $Nombre_Lignes -1
                        $Cle_Mise = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 1)
                        $Valeur_Cote = _GUICtrlListView_GetItem($Colonnes_Paris_Actuels, $i, 2)
                        _GUICtrlListView_SetItem($Colonnes_Paris_Actuels, Round($Cle_Mise[3] * $Valeur_Cote[3], 2), $i, 3) ; Gain possible
                    Next
                Case $NM_DBLCLK
                    $tInfo = DllStructCreate($tagNMLVDISPINFO, $ilParam)
                    $Burner_LI = DllStructGetData($tInfo, "Item")
                    $Burner_LSI = DllStructGetData($tInfo, "SubItem")
                    $Burner_LIX = DllStructGetData($tInfo, "Index")
                    Local $aHit = _GUICtrlListView_SubItemHitTest($hWndFrom)
                    If ($aHit[0] <> -1) And ($aHit[1] >= 0) And DllStructGetData($tInfo, "Item") <> 3 Then
                        $LVHit = $hWndFrom
                        $Item = $aHit[0]
                        $SubItem = $aHit[1]
                        Local $CGP = ControlGetPos($Fenetre, "", $hWndFrom)
                        Local $iSubItemText = _GUICtrlListView_GetItemText($hWndFrom, $Item, $SubItem)
                        Local $iLen = _GUICtrlListView_GetStringWidth($hWndFrom, $iSubItemText)
                        Local $aRect = _GUICtrlListView_GetSubItemRect($hWndFrom, $Item, $SubItem)
                        If $aRect[0] = 0 Then
                            $Longueur = _GUICtrlListView_GetColumnWidth($hWndFrom,1)/2
                        ElseIf $aRect[0] = 60 Then
                            $Longueur = _GUICtrlListView_GetColumnWidth($hWndFrom,2)/2
                        ElseIf $aRect[0] = 210 Then
                            $Longueur = _GUICtrlListView_GetColumnWidth($hWndFrom,4)/2
                        ElseIf $aRect[0] = 240 Then
                            $Longueur = _GUICtrlListView_GetColumnWidth($hWndFrom,5)/2
                        EndIf
                        $hEdit = _GUICtrlEdit_Create($Fenetre, $iSubItemText, $CGP[0] + $aRect[0] + $Longueur - (($iLen + 10) /2) +3, ($CGP[1] + $aRect[1]) - 1, $iLen + 10, 16, BitOR($WS_CHILD, $WS_VISIBLE, $ES_AUTOHSCROLL, $ES_LEFT))
                        _GUICtrlEdit_SetSel ($hEdit, 0, -1)
                        _WinAPI_SetFocus ($hEdit)
                        $hDC = _WinAPI_GetWindowDC ($hEdit)
                        $hBrush = _WinAPI_CreateSolidBrush (0)
                        FrameRect($hDC, 0, 0, $iLen + 10, 16, $hBrush)
                        _WinAPI_DeleteObject ($hBrush)
                        _WinAPI_ReleaseDC ($hEdit, $hDC)
                    EndIf
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func FrameRect($hDC, $nLeft, $nTop, $nRight, $nBottom, $hBrush)
    Local $stRect = DllStructCreate("int;int;int;int")

    DllStructSetData($stRect, 1, $nLeft)
    DllStructSetData($stRect, 2, $nTop)
    DllStructSetData($stRect, 3, $nRight)
    DllStructSetData($stRect, 4, $nBottom)

    DllCall("user32.dll", "int", "FrameRect", "hwnd", $hDC, "ptr", DllStructGetPtr($stRect), "hwnd", $hBrush)
EndFunc  ;==>FrameRect

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $iCode = BitShift($wParam, 16)
    Switch $lParam
        Case $hEdit
            Switch $iCode
                Case $EN_KILLFOCUS
                    Local $iText = _GUICtrlEdit_GetText ($hEdit)
                    _GUICtrlListView_SetItemText ($LVHit, $Item, $iText, $SubItem)
                    _WinAPI_DestroyWindow ($hEdit)

                    $Item = -1
                    $SubItem = 0
                    $LVHit = 0
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc  ;==>WM_COMMAND

; Dessine l'image PNG
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($Fenetre, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 278, 108)
    _WinAPI_RedrawWindow($Fenetre, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
EndFunc

tell me what you think, and if you have any questions, ask me :)

Thank you in advance

Qui ose gagneWho Dares Win[left]CyberExploit[/left]

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