Jump to content

Recommended Posts

Posted (edited)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

$Gui_M = GUICreate("HISTORY", 573, 438, 342, 109)
$ListView_HTR = GUICtrlCreateListView("Date|Money", 24, 8, 513, 353)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 250)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 250)
$Input_money = GUICtrlCreateInput("", 72, 392, 201, 25, $ES_NUMBER)
$Button_set = GUICtrlCreateButton("SET", 360, 384, 137, 33)
GUISetState(@SW_SHOW)
_Load_History()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button_set
            _Load_Date()
    EndSwitch
WEnd

Func _Load_Date()
    Local $Date_History = @ScriptDir & "\DateHistorySell.ini"
    Local $currentamount = IniRead($Date_History, "History", @MDAY&@MON&@YEAR, "")
    If GUICtrlRead($Input_money) <> "" Then
        IniWrite($Date_History, "History", @MDAY&@MON&@YEAR, GUICtrlRead($Input_money) + $currentamount)
        _Load_History()
    EndIf
EndFunc

Func _Load_History()
    _GUICtrlListView_DeleteAllItems($ListView_HTR)
    Local $Date_History = @ScriptDir & "\DateHistorySell.ini"
    $var = IniReadSection($Date_History, "History")
    If @error Then Return
    For $i = 1 To $var[0][0]
        GUICtrlCreateListViewItem($var[$i][0] & "|" & $var[$i][1], $ListView_HTR)
    Next
EndFunc

 

Edited by Zedna
Posted (edited)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

$Gui_M = GUICreate("HISTORY", 573, 438, 342, 109)
$ListView_HTR = GUICtrlCreateListView("Date|Money", 24, 8, 230, 353)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
Local $Listview_HW = GUICtrlGetHandle($ListView_HTR)
$Input_money = GUICtrlCreateInput("", 72, 392, 201, 25, $ES_NUMBER)
$Button_set = GUICtrlCreateButton("SET", 300, 384, 100, 33)
$Button_del = GUICtrlCreateButton("Delete", 420, 384, 100, 33)
$Edit_HTR = GUICtrlCreateEdit("", 280, 8, 290, 353)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
;~  AdlibRegister('_ReduceMemory', 60000)
_Load_History()

;~ Global $aValues[1][2]
;~ $aValues[0][0] = 0

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button_set
            _Load_Date()
        Case $Button_del
            _Delete_Date_HTR()
    EndSwitch
WEnd

Func _Load_Date()
    $day = @MDAY & '.' & @MON & '.' & @YEAR
    Local $Date_History = @ScriptDir & "\DateHistorySell.ini"
    Local $Date_HistoryTXT = @ScriptDir & "\DateHistorySell_"&$day&".txt"
    Local $currentamount = IniRead($Date_History, "History", $day, "")
    $input_amount = GUICtrlRead($Input_money)
    If $input_amount <> "" Then
        GUICtrlSetData($Input_money, "")
        IniWrite($Date_History, "History", $day, $input_amount + $currentamount)
        FileWriteLine($Date_HistoryTXT, $input_amount + $currentamount)
        _Load_History()
    EndIf
EndFunc   ;==>_Load_Date

Func _Load_History()
    _GUICtrlListView_DeleteAllItems($ListView_HTR)
    Local $Date_History = @ScriptDir & "\DateHistorySell.ini"
    $var = IniReadSection($Date_History, "History")
    If @error Then Return
    For $i = 1 To $var[0][0]
        GUICtrlCreateListViewItem($var[$i][0] & "|" & $var[$i][1], $ListView_HTR)
    Next
EndFunc   ;==>_Load_History

Func _Delete_Date_HTR()
;~  Local $x
;~  For $x = $aValues[0][0] To 0 Step -1
;~      If _GUICtrlListView_GetItemSelected($ListView_HTR, $x) Then
;~          _ArrayDelete($aValues, $x + 1)
;~          $aValues[0][0] = $aValues[0][0] - 1
;~          _GUICtrlListView_DeleteItem($ListView_HTR, $x)
;~      EndIf
;~  Next
EndFunc   ;==>_Delete_Date_HTR

Func WM_NOTIFY($hWnd, $nMsg, $wParam, $lParam)
    Local $stNmhdr = DllStructCreate("dword;int;int", $lParam), $hWndFrom = DllStructGetData($stNmhdr, 1)
    Local $nNotifyCode = DllStructGetData($stNmhdr, 3)
    Local $hWndListView = $Listview_HW
    Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    Local $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_DBLCLK
                    $item = _GUICtrlListView_GetNextItem($ListView_HTR) ; current selected
                    $day = _GUICtrlListView_GetItemText($ListView_HTR,$item,0) ; first column (zero based index)
                    _ShowHistory($day)
            EndSwitch

    EndSwitch
EndFunc   ;==>WM_NOTIFY

Func _ShowHistory($day)
    Local $Date_HistoryTXT = @ScriptDir & "\DateHistorySell_"&$day&".txt"
    $History_read = FileRead($Date_HistoryTXT)
    GUICtrlSetData($Edit_HTR, $History_read)
EndFunc   ;==>_ShowHistory

 

Edited by Zedna
Posted
Func _Delete_Date_HTR()
    $item = _GUICtrlListView_GetNextItem($ListView_HTR) ; current selected
    If $item = -1 Then Return
    $day = _GUICtrlListView_GetItemText($ListView_HTR,$item,0) ; first column (zero based index)
    If $day == '' Then Return

    Local $Date_History = @ScriptDir & "\DateHistorySell.ini"
    IniDelete($Date_History, "History", $day)
    Local $Date_HistoryTXT = @ScriptDir & "\DateHistorySell_"&$day&".txt"
    FileDelete($Date_HistoryTXT)
    _Load_History()
EndFunc   ;==>_Delete_Date_HTR

 

Posted (edited)

Here is improved version with confirmation dialog before deleting and _GUICtrlListView_DeleteItem() instead of _Load_History() :

Func _Delete_Date_HTR()
    $item = _GUICtrlListView_GetNextItem($ListView_HTR) ; current selected
    If $item = -1 Then Return
    $day = _GUICtrlListView_GetItemText($ListView_HTR,$item,0) ; first column (zero based index)
    If $day == '' Then Return

    $ans = MsgBox(3+32+256,"Confirm",'Are you sure to delete "' & $day & '"?')
    If $ans <> 6 Then Return

    Local $Date_History = @ScriptDir & "\DateHistorySell.ini"
    IniDelete($Date_History, "History", $day)
    Local $Date_HistoryTXT = @ScriptDir & "\DateHistorySell_"&$day&".txt"
    FileDelete($Date_HistoryTXT)
    _GUICtrlListView_DeleteItem($ListView_HTR, $item)
EndFunc   ;==>_Delete_Date_HTR

 

Edited by Zedna
Posted

Here is polished/optimized whole script

less code, reusing code, ...

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>

Global $ini = @ScriptDir & "\DateHistorySell.ini"

$Gui_M = GUICreate("HISTORY", 573, 438, 342, 109)
$ListView_HTR = GUICtrlCreateListView("Date|Money", 24, 8, 230, 353)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 100)
$Listview_HW = GUICtrlGetHandle($ListView_HTR)
$Input_money = GUICtrlCreateInput("", 72, 392, 201, 25, $ES_NUMBER)
$Button_set = GUICtrlCreateButton("SET", 300, 384, 100, 33)
$Button_del = GUICtrlCreateButton("Delete", 420, 384, 100, 33)
$Edit_HTR = GUICtrlCreateEdit("", 280, 8, 290, 353)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_Load_History()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button_set
            _Load_Date()
        Case $Button_del
            _Delete_Date_HTR()
    EndSwitch
WEnd

Func _Load_Date()
    $input_amount = GUICtrlRead($Input_money)
    If $input_amount == "" Then Return

    $day = @MDAY & '.' & @MON & '.' & @YEAR
    $currentamount = IniRead($ini, "History", $day, "")
    $currentamount += $input_amount
    GUICtrlSetData($Input_money, "")
    IniWrite($ini, "History", $day, $currentamount)
    FileWriteLine(_GetTxtName($day), $currentamount)
    _Load_History()
EndFunc   ;==>_Load_Date

Func _Load_History()
    _GUICtrlListView_DeleteAllItems($ListView_HTR)
    $var = IniReadSection($ini, "History")
    If @error Then Return
    For $i = 1 To $var[0][0]
        GUICtrlCreateListViewItem($var[$i][0] & "|" & $var[$i][1], $ListView_HTR)
    Next
EndFunc   ;==>_Load_History

Func _Delete_Date_HTR()
    $item = _GUICtrlListView_GetNextItem($ListView_HTR) ; current selected
    If $item = -1 Then Return
    $day = _GUICtrlListView_GetItemText($ListView_HTR,$item,0) ; first column (zero based index)
    If $day == '' Then Return

    $ans = MsgBox(3+32+256,"Confirm",'Are you sure to delete "' & $day & '"?')
    If $ans <> 6 Then Return

    IniDelete($ini, "History", $day)
    FileDelete(_GetTxtName($day))
    _GUICtrlListView_DeleteItem($ListView_HTR, $item)
EndFunc   ;==>_Delete_Date_HTR

Func WM_NOTIFY($hWnd, $nMsg, $wParam, $lParam)
    Local $stNmhdr = DllStructCreate("dword;int;int", $lParam), $hWndFrom = DllStructGetData($stNmhdr, 1)
    Local $nNotifyCode = DllStructGetData($stNmhdr, 3)
    Local $hWndListView = $Listview_HW
    Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    Local $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hWndListView
            Switch $iCode
                Case $NM_DBLCLK
                    $item = _GUICtrlListView_GetNextItem($ListView_HTR) ; current selected
                    $day = _GUICtrlListView_GetItemText($ListView_HTR,$item,0) ; first column (zero based index)
                    _ShowHistory($day)
            EndSwitch

    EndSwitch
EndFunc   ;==>WM_NOTIFY

Func _ShowHistory($day)
    $History_read = FileRead(_GetTxtName($day))
    GUICtrlSetData($Edit_HTR, $History_read)
EndFunc   ;==>_ShowHistory

Func _GetTxtName($day)
    Return @ScriptDir & "\DateHistorySell_"&$day&".txt"
EndFunc   ;==>_GetTxtName

 

  • 3 weeks later...
Posted

is he allow to do this? removed the original title, questions and other comments he made? thought im supposed to learn something between the interactions

  • Moderators
Posted

@Loc Please don't delete your posts in the future. First, it serves no purpose and is a silly thing to do. More importantly, it leaves a thread with great big gaps in it like this one, and doesn't help anyone in the future that might have a similar question. In the future, just edit your first post and add (Solved) to the title.

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

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...