ZwinnyRolnik Posted November 17, 2010 Posted November 17, 2010 I know i can use $LVN_BEGINSCROLL and $LVN_ENDSCROLL but i need delete WM_Notify so Can i use $WM_VSCROLL or $WM_HSCROLL on listview scrollbars? Thx for any answers
PsaltyDS Posted November 17, 2010 Posted November 17, 2010 I know i can use $LVN_BEGINSCROLL and $LVN_ENDSCROLL but i need delete WM_NotifyWhat does "...but i need delete WM_NOTIFY" mean? Why can't you use the API provided (LVN_BEGINSCROLL and LVN_ENDSCROLL)? Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
ZwinnyRolnik Posted November 18, 2010 Author Posted November 18, 2010 cuz i need delete it when i am scrolling... scrolling in my listviews is rly slow and only when i block wm_notify then it's work fine sorry for bad english =] and thx for reply
Tvern Posted November 18, 2010 Posted November 18, 2010 I suspect you just have to change your messageloop, or OnEvent function to return very fast when scrolling. It would help if we had some code to work on.
ZwinnyRolnik Posted November 18, 2010 Author Posted November 18, 2010 Done while 1 if $drag = false then xxx xxx xxx ... ... endif wend now it's better but still laggy if i have 50 items and 45 subitems
PsaltyDS Posted November 18, 2010 Posted November 18, 2010 This getting to be one of those calls to the Psychic Hotline topics... No runnable demo script to show your issue = no help. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Tvern Posted November 18, 2010 Posted November 18, 2010 Ooh I like those! Unfortunately I can only do a remote debug if I take of my tinfoil hat, which would just be reckless.
ZwinnyRolnik Posted November 22, 2010 Author Posted November 22, 2010 (edited) Ok, I am sorry. So it's my script and include where is WM_NOTIFY and load file Part of my script: expandcollapse popupOpt("GUICloseOnESC", 0) ; bez esc Opt("mustdeclarevars", 1) Global $hListView Global $wszystkostop = False Global $ListView Global $avgcol Global $juju = False ; inne includy zmienne Global $Column_attribute, $Mypos, $strin, $str, $iLAST_PRIMARYDoWN_CTRLID, $hwd, $width, $height, $hGraphic, $hBitmap1, $fontcol, $hImage1, $hBMP1, $textleft, $fcol, $hBrushed, $hFormat, $tLayout, $aInfo, $lpos, $hbmp Global $hFamily, $hIcon, $hDC, $hBackDC, $hBackSv, $hIcon, $hbmp2, $hDC2, $hBackDC2, $hBackSv2, $bitmap2, $iC1, $hGraphics, $gwt, $ght, $iC2, $iC3, $hBrush1, $hBrush3, $hStatus, $leftit, $Downit ;~ Global $aSB_WindowInfo,$aSB_WindowInfo ; inne includy zmienne Global $akukuku = False Global $kupek = False Global $patrzczyklikniety = False Global $zmianka2, $ssssss, $sssss, $takatam2, $mojecombo2, $zmianka, $sss, $ssss, $takatam, $mojecombo, $mojepozycje Global $ryczek = "dasd" Global $wcisniety[5] Global $wartoscnowa[300][300] Global $wartosc[300][300] Global $tawart = 12 Global $Checkbox1, $Checkbox2, $HelpContext, $bProgressShowing;,$Status1,$Status2 Global $hFont, $defColLV = 0x000000, $defBkColLV = 0xFFFFFF Global $DB Global $aRow Global $sius = False Global $dll22 Global $start Global $B_DESCENDING Global $maxColumn Global $upDown, $bckpic3, $progressbar1, $label3, $mojecombo, $label4, $pozycje, $label3, $takatam, $zmianka, $pozycjestart, $gui2, $bckpic2, $label, $mojecombo2, $takatam2, $zmianka2, $pozycjestop Global $odswiez2tabele Global $cccc, $gid For $i = 0 To 4 $wcisniety[$i] = False Next Global $tenodp[5] $tenodp[0] = True For $i = 1 To 4 $tenodp[$i] = False Next Global $tenodpp[5] $tenodpp[0] = True For $i = 1 To 4 $tenodpp[$i] = False Next Global $listywartosc[300][300][5] Global $przychodwartosc[5] Global $wiecp[5] Global $combozreszta Global $handleewartosc[5][13] Global $jakiklikniety[200][200] For $i = 0 To 199 For $j = 0 To 199 $jakiklikniety[$i][$j] = False Next Next Global $bWM_NOTIFY = True Global $nacisnietyjest = False Global $tabela4start Global $tabela4stop Global $tabela5start Global $tabela5stop Global $hFont3, $listview3, $__LISTVIEWCTRL3 Global $bezpminuscf, $cfinput, $inputkosztybezp Global $ryczalt, $ryczalt2 Global $kosztybezpbezcf = 0 Global $kosztybezp = 0 Global $jakiprocent Global $kwotanaprojekt[15] Global $handlee[15] Global $fFlag[15] Global $flaga = False Global $flaga2 = False Global $fFlag2[15] For $s = 1 To 14 $fFlag2[$s] = False Next For $s = 1 To 14 $fFlag[$s] = False Next Global $labelmies, $miesiecy, $miechy Global $kolumn, $itemow, $liczebka, $rzym, $listview2, $dat1, $dat2, $rok1, $rok2, $ktora, $PL, $PP, $newgui, $stGui, $czcionka4, $czcionka, $czcionka3, $pozycje, $GUI1, $progressbar1 Global $timer, $czcionka2, $tabs1, $Dod, $Dodaj, $Dodajkilka, $usun, $load, $Do, $tabela1start, $tabela1stop, $tabela2start, $tabela2stop, $tabela3start1, $tabela3stop1, $tabela3start2 Global $tabela3stop2, $partn Global $tabela3start000, $tabela3stop000 Global $FileMenu, $OpenItem, $SaveItem, $OptionsMenu, $ViewItem, $ToolsItem, $ExitItem, $HelpMenu, $AboutItem, $hmenu, $2ndbckground, $labelokres, $labelmyslnik, $labeliloscp Global $labelkosztyp, $labelpp, $iLV_Width, $iHeader_Width, $iData_Width, $labelprzychod, $przychod, $hFont2, $tekstowo, $hANDle, $date1, $date2, $roke1, $roke2 Global $datka1, $datka2, $tawart2, $upDown2, $Hotek, $zadanie, $tekstt, $tekst, $godzina, $date, $czas, $lokacja, $lokacja2, $tekstowo, $hmm4, $olDopt, $TrayPos, $ile, $ile2, $HotItem Global $sumakosztow Global $guiw = 0 Global $guih = 0 Global $guiszer = 800 * 1.4 Global $guiwys = 420 * 1.4 Global $deskh = @DesktopHeight - _GetTaskBarHeight() Global $aWinPos[4] = [$guiw / 2, $guih / 2, $guiszer, $guiwys] Global $Gui Global $tabs1[7] Global $timer[46] Global $stGui[2] = [0, 420] Global $liczebka[300] ; koniec Globalnych Global $rzym[101] $wcisniety[3] = True Global $ladtab #include <GUIConstantsEx.au3> #include <WinDowsConstants.au3> #include <GuiListView.au3> #include <Constants.au3> #include <FontConstants.au3> #include <StructureConstants.au3> #include <WinAPI.au3> #include <GuiToolTip.au3> #include <_EIPListView.au3> #include <UpDownConstants.au3> #include <GuiImageList.au3> #include <ButtonConstants.au3> #include <ScrollBarConstants.au3> #include <GUIScrollBars.au3> #include <ProgressConstants.au3> #include <String.au3> #include <sqlite.au3>;Stop the Obfuscation process below this line #include <sqlite.dll.au3> #include <GuiMenu.au3> #include <GuiEdit.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <ListViewConstants.au3> load() ; wczyt Func _Main() $Gui = GUICreate("Edit", $aWinPos[2], $aWinPos[3], $aWinPos[1], $aWinPos[0]);, 424, 280, 200, 110) ;, BitOR($WS_MINIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_SYSMENU, $WS_CAPTION, $WS_POPUP, $WS_maximizebox, $WS_POPUPWINDoW, $WS_GROUP, $WS_BORDER, $WS_CLIPSIBLINGS) $newgui = WinGetClientSize($Gui) $timer[2] = TimerDiff($start) $czcionka = 12 * $newgui[1] / $stGui[1] $czcionka2 = 13 * $newgui[1] / $stGui[1] $czcionka3 = 8 * $newgui[1] / $stGui[1] $czcionka4 = 16 * $newgui[1] / $stGui[1] Global $LVcolControl[40] = [1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] ;left click actions ;0 = ignORe, 1= use context callback Global $LVcolRControl[40] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ; right click actions $timer[9] = TimerDiff($start) $tabela2start = GUICtrlCreateDummy() $hFont = _WinAPI_CreateFont(14 * $newgui[1] / $stGui[1], 0, 0, 0, $FW_NORMAL, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial') $ListView = GUICtrlCreateListView("", 25 * $newgui[1] / $stGui[1], 45 * $newgui[1] / $stGui[1], 750 * $newgui[1] / $stGui[1], 310 * $newgui[1] / $stGui[1]) $hListView = GUICtrlGetHandle($ListView) _WinAPI_SetFont($hListView, $hFont, True) GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES) ;~ GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_INFOTIP, $LVS_EX_INFOTIP) GUICtrlSendMsg($ListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_LABELTIP, $LVS_EX_LABELTIP) ;~ $LVS_EX_FLATSB ;~ $LVS_EX_LABELTIP $__LISTVIEWCTRL = $ListView $timer[12] = TimerDiff($start) ; wstawianie kolumn For $i = 0 To $kolumn + 1 _GUICtrlListView_AddColumn($ListView, liczba($i), "", 2) Next ; kolory _GUICtrlListView_SetBkColor($ListView, $CLR_MONEYGREEN) _GUICtrlListView_SetTextColor($ListView, $CLR_BLACK) _GUICtrlListView_SetTextBkColor($ListView, $CLR_MONEYGREEN) $timer[13] = TimerDiff($start) ; opcje Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($ListView)] Global $maxColumn = _GUICtrlListView_GetColumnCount($ListView) Global $aIParam[1][$maxColumn + 1][5] Global $oParamSearch = ObjCreate('Scripting.Dictionary') ; stORe FOR faster search (iParam, arrayIndex) Global $kolorki[300][300] Local $kolor = '' For $i = 1 To $itemow $kolor = '' For $Z = 0 To $kolumn $kolor &= $wartosc[$Z][$i] & '|' Next $kolor = StringTrimRight($kolor, 1) $kolorki[$i][0] = GUICtrlCreateListViewItem($kolor, $ListView) For $k = 1 To $liczebka[0] + 3 Step 2 If $i = $liczebka[$k] Then GUICtrlSetBkColor(-1, 0xCCFFCC) EndIf Next Next $timer[16] = TimerDiff($start) ; ustawienie 1 kolumny tj 0 $timer[17] = TimerDiff($start) Local $b = 2 For $f = 1 To 101 Step 2 For $Z = $liczebka[$f] To $liczebka[$f + 1] _GUICtrlListView_SetItemText($ListView, $Z, $Z - $b) Next $b = $b + 1 If $f = $liczebka[0] Then For $zz = $liczebka[$f + 1] To $liczebka[$f + 2] _GUICtrlListView_SetItemText($ListView, $zz, $zz - $b + 1) Next ExitLoop EndIf Next $timer[18] = TimerDiff($start) For $i = 1 To 99 Step 2 _GUICtrlListView_SetItemText($ListView, $liczebka[$i] - 1, $rzym[$i]) Next _GUICtrlListView_SetItemText($ListView, 0, "-") _GUICtrlListView_SetItemText($ListView, 1, "-") Local $dararara = $liczebka[$liczebka[0] + 1] For $i = $itemow + 50 To $dararara Step -1 _GUICtrlListView_DeleteItem(GUICtrlGetHandle($ListView), $i) Next $timer[20] = TimerDiff($start) For $i = 1 To 1 _GUICtrlListView_SetColumn($ListView, $i, liczba($i), 200, 2) Next $timer[21] = TimerDiff($start) $iLV_Width = 17 For $i = 0 To $kolumn + 5 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($ListView, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($ListView, $i) _GUICtrlListView_SetColumnWidth($ListView, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($ListView, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($ListView, $i, $iHeader_Width) $iLV_Width += $iHeader_Width Else $iLV_Width += $iData_Width EndIf Next przedzial() _InitEditLib("", "", "", "", $Gui); GUISetState(@SW_SHOW, $Gui) _WinAPI_InvalidateRect(0, 0) $bLVEDITondblclick = True $bInitiated = True $bLVUPDATEonfocusCHANGE = True While 1 ; Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd _TermEditLib();po tym <<<<<<<<<>>>>>>>> EndFunc ;==>_Main Func load() $lokacja2 = FileOpenDialog("Wczytaj plik...", @ScriptDir, "Bazy danych (*.db)", 1 + 2 + 8, "", $Gui) If $lokacja2 <> "" Then ;~ $hmm4 = MsgBox(33, "Otworzyć plik...?", $lokacja2, "", $Gui) ;~ If $hmm4 = 1 Then $start = TimerInit() $timer[0] = TimerDiff($start) $kolumn = 10 $itemow = 54 _SQLite_Startup() $DB = _SQLite_Open($lokacja2) _SQLite_Exec($DB, "PRAGMA synchronous = OFF;") _SQLite_Exec($DB, "PRAGMA count_changes = OFF;") _SQLite_Exec($DB, "BEGIN;") _SQLite_QuerySingleRow(-1, "SELECT key FROM sectionn2 WHERE id = -1;", $aRow) If Not @error Then $kolumn = $aRow[0] _SQLite_QuerySingleRow(-1, "SELECT key FROM sectionn2 WHERE id = -2;", $aRow) If Not @error Then $itemow = $aRow[0] For $Z = 0 To $kolumn For $d = 1 To $itemow _SQLite_QuerySingleRow(-1, "SELECT key FROM section" & $Z + 1 & " WHERE id = " & $d - 1 & ";", $aRow) If Not @error Then $wartosc[$Z][$d] = $aRow[0] Next Next For $i = 0 To 101 _SQLite_QuerySingleRow(-1, "SELECT key FROM sectionn2 WHERE id = " & $i & ";", $aRow) If $aRow[0] = "" Then ExitLoop If Not @error Then $liczebka[$i] = $aRow[0] Next _SQLite_Exec($DB, "COMMIT;") _SQLite_Close() _SQLite_Shutdown() Local $mml = 1 For $i = 1 To 100 Step 2 $rzym[$i] = _Roman($mml) $mml = $mml + 1 Next GUIDelete($Gui) _Main() ;~ EndIf EndIf EndFunc ;==>load Func _GetTaskBarHeight() $olDopt = Opt("WinTitleMatchMode", 4) $TrayPos = WinGetPos("classname=Shell_TrayWnd") Opt("WinTitleMatchMode", $olDopt) Return $TrayPos[3] EndFunc ;==>_GetTaskBarHeight Func liczba($licz) Local $wyszla = "" If $licz = 0 Then Return $wyszla If $licz <= 26 Then $wyszla = Chr($licz + 64) Return $wyszla EndIf If $licz <= 26 * 2 Then $wyszla = Chr(65) & Chr($licz + 64 - 26) Return $wyszla EndIf If $licz <= 26 * 3 Then $wyszla = Chr(66) & Chr($licz + 64 - 26 * 2) Return $wyszla EndIf If $licz <= 26 * 4 Then $wyszla = Chr(67) & Chr($licz + 64 - 26 * 3) Return $wyszla EndIf If $licz <= 26 * 5 Then $wyszla = Chr(68) & Chr($licz + 64 - 26 * 4) Return $wyszla EndIf If $licz <= 26 * 6 Then $wyszla = Chr(69) & Chr($licz + 64 - 26 * 5) Return $wyszla EndIf If $licz <= 26 * 7 Then $wyszla = Chr(70) & Chr($licz + 64 - 26 * 6) Return $wyszla EndIf If $licz <= 26 * 8 Then $wyszla = Chr(71) & Chr($licz + 64 - 26 * 7) Return $wyszla EndIf If $licz <= 26 * 9 Then $wyszla = Chr(72) & Chr($licz + 64 - 26 * 8) Return $wyszla EndIf If $licz <= 26 * 10 Then $wyszla = Chr(73) & Chr($licz + 64 - 26 * 9) Return $wyszla EndIf If $licz <= 26 * 11 Then $wyszla = Chr(74) & Chr($licz + 64 - 26 * 10) Return $wyszla EndIf If $licz <= 26 * 12 Then $wyszla = Chr(75) & Chr($licz + 64 - 26 * 11) Return $wyszla EndIf If $licz <= 26 * 13 Then $wyszla = Chr(76) & Chr($licz + 64 - 26 * 12) Return $wyszla EndIf If $licz <= 26 * 14 Then $wyszla = Chr(77) & Chr($licz + 64 - 26 * 13) Return $wyszla EndIf If $licz <= 26 * 15 Then $wyszla = Chr(78) & Chr($licz + 64 - 26 * 14) Return $wyszla EndIf If $licz <= 26 * 16 Then $wyszla = Chr(79) & Chr($licz + 64 - 26 * 15) Return $wyszla EndIf If $licz <= 26 * 17 Then $wyszla = Chr(80) & Chr($licz + 64 - 26 * 16) Return $wyszla EndIf If $licz <= 26 * 18 Then $wyszla = Chr(81) & Chr($licz + 64 - 26 * 17) Return $wyszla EndIf If $licz <= 26 * 19 Then $wyszla = Chr(82) & Chr($licz + 64 - 26 * 18) Return $wyszla EndIf If $licz <= 26 * 20 Then $wyszla = Chr(83) & Chr($licz + 64 - 26 * 19) Return $wyszla EndIf If $licz <= 26 * 21 Then $wyszla = Chr(84) & Chr($licz + 64 - 26 * 20) Return $wyszla EndIf EndFunc ;==>liczba Func _Roman($iNum) Local $asNum[3][10] = [["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"], _ ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"], _ ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"]] Local $sRet = "", $i = 0, $iLen = StringLen($iNum), $sBra = "" If $iLen > 3 Then $sBra = "(" & _Roman(StringTrimRight($iNum, 3)) & ")" $iNum = StringRight($iNum, 3) $iLen = 3 EndIf For $i = $iLen To 1 Step -1 $sRet = $asNum[$iLen - $i][Int(StringMid($iNum, $i, 1))] & $sRet Next $sRet = "--" & $sRet & "--" Return $sBra & $sRet EndFunc ;==>_Roman Func przedzial() Local $m, $mn, $datka1, $datka2 $ktora = 9 $date1 = 'luty' $date2 = 'wrzesień' $roke1 = 2006 $roke2 = 2009 If $date1 = "styczeń" Then $datka1 = 1 If $date1 = "luty" Then $datka1 = 2 If $date1 = "marzec" Then $datka1 = 3 If $date1 = "kwiecień" Then $datka1 = 4 If $date1 = "maj" Then $datka1 = 5 If $date1 = "czerwiec" Then $datka1 = 6 If $date1 = "lipiec" Then $datka1 = 7 If $date1 = "sierpień" Then $datka1 = 8 If $date1 = "wrzesień" Then $datka1 = 9 If $date1 = "październik" Then $datka1 = 10 If $date1 = "listopad" Then $datka1 = 11 If $date1 = "grudzień" Then $datka1 = 12 If $date2 = "styczeń" Then $datka2 = 1 If $date2 = "luty" Then $datka2 = 2 If $date2 = "marzec" Then $datka2 = 3 If $date2 = "kwiecień" Then $datka2 = 4 If $date2 = "maj" Then $datka2 = 5 If $date2 = "czerwiec" Then $datka2 = 6 If $date2 = "lipiec" Then $datka2 = 7 If $date2 = "sierpień" Then $datka2 = 8 If $date2 = "wrzesień" Then $datka2 = 9 If $date2 = "październik" Then $datka2 = 10 If $date2 = "listopad" Then $datka2 = 11 If $date2 = "grudzień" Then $datka2 = 12 Local $ilekolumn = 0 Local $datka = $datka2 - $datka1 + 1 ; zaczynamy cos nowego znznznz; as ;dsadasd;asdas ;dsa $miechy = 0 For $i = $roke1 To $roke2 If $roke1 = $roke2 Then $miechy += $datka $ilekolumn = $ilekolumn + $datka $ilekolumn = $ilekolumn + 2 $ilekolumn = $ilekolumn + $ktora ExitLoop EndIf If $i = $roke1 Then $miechy = $miechy + (12 - $datka1) + 1 $ilekolumn = $ilekolumn + $ktora $ilekolumn = $ilekolumn + (12 - $datka1) + 1 $ilekolumn = $ilekolumn + 1 ContinueLoop EndIf If $i = $roke2 Then $miechy += $datka2 $ilekolumn = $ilekolumn + $datka2 $ilekolumn = $ilekolumn + 2 ExitLoop EndIf $miechy += 12 $ilekolumn = $ilekolumn + 12 $ilekolumn = $ilekolumn + 1 Next GUICtrlSetData($miesiecy, $miechy) While $ilekolumn > _GUICtrlListView_GetColumnCount($ListView) _GUICtrlListView_AddColumn($ListView, "") WEnd For $i = $roke1 To $roke2 If $roke1 = $roke2 Then _GUICtrlListView_SetItemText($ListView, 1, "(" & $i & ")", $ktora) _GUICtrlListView_SetItemText($ListView, 0, "wartość j.m", $ktora) $ktora = $ktora + 1 For $j = $datka1 To $datka2 If $j = 1 Then $m = "I" If $j = 2 Then $m = "II" If $j = 3 Then $m = "III" If $j = 4 Then $m = "IV" If $j = 5 Then $m = "V" If $j = 6 Then $m = "VI" If $j = 7 Then $m = "VII" If $j = 8 Then $m = "VIII" If $j = 9 Then $m = "IX" If $j = 10 Then $m = "X" If $j = 11 Then $m = "XI" If $j = 12 Then $m = "XII" If $j = 1 Then $mn = "styczeń" If $j = 2 Then $mn = "luty" If $j = 3 Then $mn = "marzec" If $j = 4 Then $mn = "kwiecień" If $j = 5 Then $mn = "maj" If $j = 6 Then $mn = "czerwiec" If $j = 7 Then $mn = "lipiec" If $j = 8 Then $mn = "sierpień" If $j = 9 Then $mn = "wrzesień" If $j = 10 Then $mn = "październik" If $j = 11 Then $mn = "listopad" If $j = 12 Then $mn = "grudzień" _GUICtrlListView_SetItemText($ListView, 1, $m & " - " & $i, $ktora) _GUICtrlListView_SetItemText($ListView, 0, "ilość j.m", $ktora) $ktora = $ktora + 1 Next _GUICtrlListView_SetItemText($ListView, 0, "Razem", $ktora) $ktora = $ktora + 1 ExitLoop EndIf If $i = $roke1 Then _GUICtrlListView_SetItemText($ListView, 1, "(" & $i & ")", $ktora) _GUICtrlListView_SetItemText($ListView, 0, "wartość j.m", $ktora) $ktora = $ktora + 1 For $j = $datka1 To 12 If $j = 1 Then $m = "I" If $j = 2 Then $m = "II" If $j = 3 Then $m = "III" If $j = 4 Then $m = "IV" If $j = 5 Then $m = "V" If $j = 6 Then $m = "VI" If $j = 7 Then $m = "VII" If $j = 8 Then $m = "VIII" If $j = 9 Then $m = "IX" If $j = 10 Then $m = "X" If $j = 11 Then $m = "XI" If $j = 12 Then $m = "XII" If $j = 1 Then $mn = "styczeń" If $j = 2 Then $mn = "luty" If $j = 3 Then $mn = "marzec" If $j = 4 Then $mn = "kwiecień" If $j = 5 Then $mn = "maj" If $j = 6 Then $mn = "czerwiec" If $j = 7 Then $mn = "lipiec" If $j = 8 Then $mn = "sierpień" If $j = 9 Then $mn = "wrzesień" If $j = 10 Then $mn = "październik" If $j = 11 Then $mn = "listopad" If $j = 12 Then $mn = "grudzień" _GUICtrlListView_SetItemText($ListView, 1, $m & " - " & $i, $ktora) _GUICtrlListView_SetItemText($ListView, 0, "ilość j.m", $ktora) $ktora = $ktora + 1 Next ContinueLoop EndIf If $i = $roke2 Then _GUICtrlListView_SetItemText($ListView, 1, "(" & $i & ")", $ktora) _GUICtrlListView_SetItemText($ListView, 0, "wartość j.m", $ktora) $ktora = $ktora + 1 For $j = 1 To $datka2 If $j = 1 Then $m = "I" If $j = 2 Then $m = "II" If $j = 3 Then $m = "III" If $j = 4 Then $m = "IV" If $j = 5 Then $m = "V" If $j = 6 Then $m = "VI" If $j = 7 Then $m = "VII" If $j = 8 Then $m = "VIII" If $j = 9 Then $m = "IX" If $j = 10 Then $m = "X" If $j = 11 Then $m = "XI" If $j = 12 Then $m = "XII" If $j = 1 Then $mn = "styczeń" If $j = 2 Then $mn = "luty" If $j = 3 Then $mn = "marzec" If $j = 4 Then $mn = "kwiecień" If $j = 5 Then $mn = "maj" If $j = 6 Then $mn = "czerwiec" If $j = 7 Then $mn = "lipiec" If $j = 8 Then $mn = "sierpień" If $j = 9 Then $mn = "wrzesień" If $j = 10 Then $mn = "październik" If $j = 11 Then $mn = "listopad" If $j = 12 Then $mn = "grudzień" _GUICtrlListView_SetItemText($ListView, 1, $m & " - " & $i, $ktora) _GUICtrlListView_SetItemText($ListView, 0, "ilość j.m", $ktora) $ktora = $ktora + 1 Next _GUICtrlListView_SetItemText($ListView, 0, "Razem", $ktora) $ktora = $ktora + 1 ExitLoop EndIf _GUICtrlListView_SetItemText($ListView, 1, "(" & $i & ")", $ktora) _GUICtrlListView_SetItemText($ListView, 0, "wartość j.m", $ktora) $ktora = $ktora + 1 For $j = 1 To 12 If $j = 1 Then $m = "I" If $j = 2 Then $m = "II" If $j = 3 Then $m = "III" If $j = 4 Then $m = "IV" If $j = 5 Then $m = "V" If $j = 6 Then $m = "VI" If $j = 7 Then $m = "VII" If $j = 8 Then $m = "VIII" If $j = 9 Then $m = "IX" If $j = 10 Then $m = "X" If $j = 11 Then $m = "XI" If $j = 12 Then $m = "XII" If $j = 1 Then $mn = "styczeń" If $j = 2 Then $mn = "luty" If $j = 3 Then $mn = "marzec" If $j = 4 Then $mn = "kwiecień" If $j = 5 Then $mn = "maj" If $j = 6 Then $mn = "czerwiec" If $j = 7 Then $mn = "lipiec" If $j = 8 Then $mn = "sierpień" If $j = 9 Then $mn = "wrzesień" If $j = 10 Then $mn = "październik" If $j = 11 Then $mn = "listopad" If $j = 12 Then $mn = "grudzień" _GUICtrlListView_SetItemText($ListView, 1, $m & " - " & $i, $ktora) _GUICtrlListView_SetItemText($ListView, 0, "ilość j.m", $ktora) $ktora = $ktora + 1 Next Next For $i = 0 To 99 _GUICtrlListView_SetColumn($ListView, $i, liczba($i), 100, 2) Next $iLV_Width = 17 For $i = 0 To 79 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($ListView, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($ListView, $i) _GUICtrlListView_SetColumnWidth($ListView, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($ListView, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($ListView, $i, $iHeader_Width) $iLV_Width += $iHeader_Width Else $iLV_Width += $iData_Width EndIf Next EndFunc ;==>przedzial Edited November 22, 2010 by ZwinnyRolnik
ZwinnyRolnik Posted November 22, 2010 Author Posted November 22, 2010 (edited) _EIPListView.au3 expandcollapse popup#include-once #include <GuiConstantsEx.au3> #include <GuiListview.au3> #include <GuiComboBox.au3> #include <windowsconstants.au3> #include <editconstants.au3> #include <datetimeconstants.au3> #include <Misc.au3> Global $pozycjai Global $__LISTVIEWCTRL Global $__LISTVIEWCTRL2 Global $bWM_NOTIFY = True Global $kliknietonadate = False Global $mama = False Global $nacisnietyjest = False Global $iLastItem = -1, $iLastsubitemNR = -1 Global $gogo, $czasnr1, $czasnr2 Global $iColll Global $tNMLISTVIEW Global $lvin3, $lvin2 Global $lvin4, $lvin5 Global $roki[1500] For $i = 0 To 1499 $roki[$i] = False Next Global $moznakliknac = False Global $moznakliknac2 = False ;this is a modified version of my original script. It creates a popup ;window for the control as a child window to workaround issues related to ;listviews on tabs. ; ; ------------------------------------------------------------------------------ ; ; AutoIt Version: 3.0 ; Language: English ; Description: Multi-column editable Listview (EditInPlace) ; Stephen Podhajecki <gehossafats at netmdc.com/> Gary Frost <gafrost at charter dot net/> ; pdm for control array concept ; see http://www.autoitscript.com/forum/index.php?showtopic=42694&st=0&gopid=322551&#entry322551 ;============================================================================== ; ######>>> set the type of control for each column <<<###### ; 0 = Input/edit 1 = combobox 2 = date control ; Global $LVcolControl[4]=[0,0,1,2] ; _InitEditLib();######>>> add this after you create your main gui<<<###### ; _MonitorEditState($Gui, $editCtrl, $editFlag, $__LISTVIEWCTRL, $LVINFO, $LVcolControl);######>>> add this in your message loop<<<###### ; _TermEditLib();######>>> add this after your message loop when exiting the script<<<###### ; $__LISTVIEWCTRL = $__LISTVIEWCTRL1 ######>>> Set this to your ListView control <<<###### ;============================================================================== Global $DebugIt = 0 ;Global Const $WM_NOTIFY = 0x004E ;Global Const $WM_KEYDOWN = 0x0100 ;Global Const $WM_COMMAND = 0x0111 Global Const $WM_MOVING = 0x0216 ;Global Const $WM_MOVE = 0x0003 ;Global Const $WM_KILLFOCUS = 0x0008 ;Global Const $WM_SETFOCUS = 0x0007 ;Global Const $WM_ACTIVATE = 0x0006 Global Const $WM_CAPTURECHANGED = 0x0215 Global Const $HD_FIRST = -300 ;Global Const $HDN_TRACK = ($HDN_FIRST - 8) ;Global Const $HDN_TRACKW = ($HDN_FIRST - 28) Global Const $LBN_SELCHANGE = 1 Global Const $LBN_DBLCLK = 2 Global Const $LBN_SETFOCUS = 4 Global Const $LBN_KILLFOCUS = 5 ;Global Const $EN_SETFOCUS =0x0100 ;Global Const $EN_KILLFOCUS = 0x0200 ;Global Const $EN_CHANGE =0x0300 ;Global Const $EN_UPDATE =0x0400 Global Const $DT_FIRST = -760 ;Global Const $DTN_DATETIMECHANGE = $DTN_FIRST + 1 ; the systemtime has changed ;~ Global Const $DTN_USERSTRINGA = $DTN_FIRST + 2 ; the user has entered a string Global Const $DTN_WMKEYDOWNA = $DTN_FIRST + 3 ; modify keydown on app format field (X) ;~ Global Const $DTN_FORMATA = $DTN_FIRST + 4 ; query display for app format field (X) ;~ Global Const $DTN_FORMATQUERYA = $DTN_FIRST + 5 ; query formatting info for app format field (X) ;Global Const $DTN_DROPDOWN = $DTN_FIRST + 6 ; MonthCal has dropped down ;Global Const $DTN_CLOSEUP = $DTN_FIRST + 7 ; MonthCal is popping up ;Global Const $CBN_SELCHANGE = 1; ;Global Const $CBN_DBLCLK = 2; ;Global Const $CBN_SETFOCUS = 3; ;Global Const $CBN_KILLFOCUS = 4; ;Global Const $CBN_EDITCHANGE = 5; ;Global Const $CBN_EDITUPDATE = 6; ;Global Const $CBN_DROPDOWN = 7; ;Global Const $CBN_CLOSEUP = 8; ;Global Const $CBN_SELENDOK = 9; ;Global Const $CBN_SELENDCANCEL = 10; ;Global Const $NM_FIRST = 0 ;Global Const $NM_CLICK = ($NM_FIRST - 2) ;Global Const $NM_DBLCLK = ($NM_FIRST - 3) ;Global Const $NM_RCLICK = ($NM_FIRST - 5) ;Global Const $NM_RDBLCLK = ($NM_FIRST - 6) ;Global Const $NM_SETFOCUS = ($NM_FIRST - 7) ;Global Const $NM_KILLFOCUS = ($NM_FIRST - 8) ;Global Const $LVS_SHAREIMAGELISTS = 0x0040 ;~ Global Const $LVM_FIRST = 0x1000 ;~ Global Const $LVM_SETIMAGELIST = ($LVM_FIRST + 3) ;~ Global Const $LVM_GETITEM = ($LVM_FIRST + 5) ;~ Global Const $LVM_SETITEM = ($LVM_FIRST + 6) ;~ Global Const $LVM_GETNEXTITEM = ($LVM_FIRST + 12) ;~ Global Const $LVM_ENSUREVISIBLE = ($LVM_FIRST + 19) ;~ Global Const $LVM_SETITEMSTATE = ($LVM_FIRST + 43) ;Global Const $LVN_FIRST = -100 ;Global Const $LVN_ENDLABELEDITA = (-106) ;Global Const $LVN_ITEMCHANGING = ($LVN_FIRST - 0) ;Global Const $LVN_ITEMCHANGED = ($LVN_FIRST - 1) ;Global Const $LVN_INSERTITEM = ($LVN_FIRST - 2) ;Global Const $LVN_DELETEITEM = ($LVN_FIRST - 3) ;Global Const $LVN_DELETEALLITEMS = ($LVN_FIRST - 4) ;Global Const $LVN_COLUMNCLICK = ($LVN_FIRST - 8) ;Global Const $LVN_BEGINDRAG = ($LVN_FIRST - 9) ;Global Const $LVN_BEGINRDRAG = ($LVN_FIRST - 11) ;Global Const $LVN_ODCACHEHINT = ($LVN_FIRST - 13) ;Global Const $LVN_ITEMACTIVATE = ($LVN_FIRST - 14) ;Global Const $LVN_ODSTATECHANGED = ($LVN_FIRST - 15) ;Global Const $LVN_HOTTRACK = ($LVN_FIRST - 21) ;Global Const $LVN_KEYDOWN = ($LVN_FIRST - 55) ;Global Const $LVN_MARQUEEBEGIN = ($LVN_FIRST - 56) Global Const $GUILOSTFOCUS = -1 Global $LVCALLBACK = "_CancelEdit" ; default to cancel edit Global $LVCONTEXT = "_CancelEdit" ; defalut to cancel edit Global $bCALLBACK = False ;a call-back has been executed. Global $bCALLBACK_EVENT = False Global $bLVUPDATEonfocusCHANGE = 1 ;save editing if another cell is clicked Global $bLVDBLCLICK = False; Global $bLVITEMCHECKED = False; Global $bLVEDITondblclick = False ;Must dblclick to edit Global $bDATECHANGED = False; Global $bPROGRESSSHOWING = False; Global $bInitiated = False Global $LVCHECKEDCNT = 0; Global $old_col Global $__LISTVIEWCTRL = -999 Global $__LISTVIEWCTRL2 = -999 Global $__LISTVIEWCTRL3 = -999 Global $Gui, $editFlag Global $bCanceled = False Global $editHwnd ;= the Hwnd of the editing control. Global $editCtrl ;= the CtrlId of the editing control. ;;array dim to number of cols, value of each element determines control. Global $LVcolControl[1] = [0] ;0= ignore, 1= edit, 2= combo, 4= calendar, 8 = list, 256 use callback. Global $LVcolRControl[1] = [0] ;0= ignore, 256 = context callback. Global $lvControlGui, $lvEdit, $lvCombo, $lvDate, $lvList Global $LVINFO[11]; ;=============================================================================== ; Function Name: _InitEditLib ; Description: Create the editing controls and registers WM_NOTIFY handler. ; Parameter(s): ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): Call this BEFORE you create your listview. ;=============================================================================== Func _InitEditLib($lvEditStart = "", $lvComboStart = "", $lvDataStart = "", $lvListStart = "", $hParent = 0) If $mama = False Then _TermEditLib() $lvControlGui = GUICreate("", 0, 0, 1, 1, $WS_POPUP, -1, $hParent) $lvEdit = GUICtrlCreateInput($lvEditStart, 0, 0, 1, 1, BitOR($ES_AUTOHSCROLL, $ES_NOHIDESEL, $WS_BORDER), 0) GUICtrlSetState($lvEdit, $GUI_HIDE) GUICtrlSetFont($lvEdit, 8.5 * $newgui[1] / $stGui[1]) $lvCombo = GUICtrlCreateCombo($lvComboStart, 0, 0, 1, 1, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL), $WS_EX_TOPMOST) GUICtrlSetState($lvCombo, $GUI_HIDE) $lvDate = GUICtrlCreateDate($lvDataStart, 0, 0, 1, 1, $DTS_SHORTDATEFORMAT, BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOPMOST)) GUICtrlSetState($lvDate, $GUI_HIDE) $lvList = GUICtrlCreateList($lvListStart, 0, 0, 1, 1, -1, $WS_EX_TOPMOST) GUICtrlSetState($lvList, $GUI_HIDE) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events") EndIf GUIRegisterMsg($WM_COMMAND, "WM_Command_Events") GUIRegisterMsg($WM_ACTIVATE, "WM_ACTIVATE") GUIRegisterMsg($WM_MOVE, "WM_MOVE_EVENT") GUIRegisterMsg($WM_MOVING, "WM_Notify_Events") $mama = False EndFunc ;==>_InitEditLib Func _InitEditLib2($lvEditStart = "", $lvComboStart = "", $lvDataStart = "", $lvListStart = "", $hParent = 0) If $mama = False Then _TermEditLib2() $lvControlGui = GUICreate("", 0, 0, 1, 1, $WS_POPUP, -1, $hParent) $lvEdit = GUICtrlCreateInput($lvEditStart, 0, 0, 1, 1, BitOR($ES_AUTOHSCROLL, $ES_NOHIDESEL, $WS_BORDER), 0) GUICtrlSetState($lvEdit, $GUI_HIDE) GUICtrlSetFont($lvEdit, 8.5 * $newgui[1] / $stGui[1]) $lvCombo = GUICtrlCreateCombo($lvComboStart, 0, 0, 1, 1, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL), $WS_EX_TOPMOST) GUICtrlSetState($lvCombo, $GUI_HIDE) $lvDate = GUICtrlCreateDate($lvDataStart, 0, 0, 1, 1, $DTS_SHORTDATEFORMAT, BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOPMOST)) GUICtrlSetState($lvDate, $GUI_HIDE) $lvList = GUICtrlCreateList($lvListStart, 0, 0, 1, 1, -1, $WS_EX_TOPMOST) GUICtrlSetState($lvList, $GUI_HIDE) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events") EndIf GUIRegisterMsg($WM_COMMAND, "WM_Command_Events") GUIRegisterMsg($WM_ACTIVATE, "WM_ACTIVATE") GUIRegisterMsg($WM_MOVE, "WM_MOVE_EVENT") GUIRegisterMsg($WM_MOVING, "WM_Notify_Events") $mama = False EndFunc ;==>_InitEditLib2 ;=============================================================================== ; Function Name: _TermEditLib ; Description: Deletes the editing controls and un-registers WM_NOTIFY handler. ; Parameter(s): ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): Call this when close your gui if switching to another gui. ;=============================================================================== Func _TermEditLib() GUICtrlDelete($lvEdit) GUICtrlDelete($lvCombo) GUICtrlDelete($lvDate) GUICtrlDelete($lvList) GUIRegisterMsg($WM_ACTIVATE, "") GUIRegisterMsg($WM_MOVE, "") GUIRegisterMsg($WM_MOVING, "") GUIRegisterMsg($WM_NOTIFY, "") GUIRegisterMsg($WM_COMMAND, "") EndFunc ;==>_TermEditLib Func _TermEditLib2() GUIDelete($lvControlGui) GUICtrlDelete($lvEdit) GUICtrlDelete($lvCombo) GUICtrlDelete($lvDate) GUICtrlDelete($lvList) GUIRegisterMsg($WM_COMMAND, "") GUIRegisterMsg($WM_MOVING, "") GUIRegisterMsg($WM_ACTIVATE, "") GUIRegisterMsg($WM_MOVE, "") $mama = True EndFunc ;==>_TermEditLib2 Func _TermEditLib22() GUICtrlDelete($lvEdit) GUICtrlDelete($lvCombo) GUICtrlDelete($lvDate) GUICtrlDelete($lvList) GUIRegisterMsg($WM_ACTIVATE, "") GUIRegisterMsg($WM_MOVE, "") GUIRegisterMsg($WM_MOVING, "") GUIRegisterMsg($WM_NOTIFY, "") GUIRegisterMsg($WM_COMMAND, "") EndFunc ;==>_TermEditLib22 Func _TermEditLib222() GUIDelete($lvControlGui) GUICtrlDelete($lvEdit) GUICtrlDelete($lvCombo) GUICtrlDelete($lvDate) GUICtrlDelete($lvList) GUIRegisterMsg($WM_COMMAND, "") GUIRegisterMsg($WM_MOVING, "") GUIRegisterMsg($WM_ACTIVATE, "") GUIRegisterMsg($WM_MOVE, "") $mama = True EndFunc ;==>_TermEditLib222 ;=============================================================================== ; Function Name: ListView_Click ; Description: Called from WN_NOTIFY event handler. ; Parameter(s): ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s): ;=============================================================================== Func _ListView_Click() ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- If $editFlag = 1 Then If $bLVUPDATEonfocusCHANGE = True Then If $editCtrl = $lvDate Then If $bDATECHANGED = False Then _CancelEdit() $kliknietonadate = False Return EndIf EndIf _LVUpdate($editCtrl, $__LISTVIEWCTRL, $lvin2, $lvin3) $kliknietonadate = False For $i = $lvin3 To $lvin3 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $iHeader_Width) EndIf Next Else _CancelEdit() $kliknietonadate = False EndIf Else If $bLVEDITondblclick = False Then _InitEdit($LVINFO, $LVcolControl) $kliknietonadate = False EndIf EndIf EndFunc ;==>_ListView_Click Func _ListView_Click2() ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- If $editFlag = 1 Then If $bLVUPDATEonfocusCHANGE = True Then If $editCtrl = $lvDate Then If $bDATECHANGED = False Then _CancelEdit2() $kliknietonadate = False Return EndIf EndIf _LVUpdate2($editCtrl, $__LISTVIEWCTRL2, $lvin4, $lvin5) $kliknietonadate = False For $i = $lvin5 To $lvin5 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $iHeader_Width) EndIf Next Else _CancelEdit2() $kliknietonadate = False EndIf Else If $bLVEDITondblclick = False Then _InitEdit2($LVINFO, $LVcolControl) $kliknietonadate = False EndIf EndIf EndFunc ;==>_ListView_Click2 ;=============================================================================== ; Function Name: ListView_RClick ; Description: Called from WN_NOTIFY event handler. ; Parameter(s): ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s): ;=============================================================================== Func _ListView_RClick() If $editFlag = 1 Then _CancelEdit() Else If $LVINFO[0] < 0 Or $LVINFO[1] < 0 Then Return 0 _CancelEdit() EndIf ToolTip("") ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- EndFunc ;==>_ListView_RClick Func _ListView_RClick2() If $editFlag = 1 Then _CancelEdit2() Else If $LVINFO[0] < 0 Or $LVINFO[1] < 0 Then Return 0 _CancelEdit2() EndIf ToolTip("") ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- EndFunc ;==>_ListView_RClick2 ;=============================================================================== ; Function Name: ListView_DoubleClick ; Description: Called from WN_NOTIFY event handler. ; Parameter(s): ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): Initiates the edit process on a DblClick ;=============================================================================== Func _ListView_DoubleClick() ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- If $LVINFO[8] = 0 Or $LVINFO[8] = 1 Or $LVINFO[9] = 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $LVINFO[9]) = "Razem" or (StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], 0), "--") <> 0 And $LVINFO[9] > 1) Then Return $lvControlGui = GUICreate("", 0, 0, 1, 1, $WS_POPUP, -1, $Gui) $lvEdit = GUICtrlCreateInput("", 0, 0, 1, 1, BitOR($ES_AUTOHSCROLL, $ES_NOHIDESEL, $WS_BORDER), 0) GUICtrlSetState($lvEdit, $GUI_HIDE) GUICtrlSetFont($lvEdit, 8.5 * $newgui[1] / $stGui[1]) $lvCombo = GUICtrlCreateCombo("", 0, 0, 1, 1, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL), $WS_EX_TOPMOST) GUICtrlSetState($lvCombo, $GUI_HIDE) $lvDate = GUICtrlCreateDate("", 0, 0, 1, 1, $DTS_SHORTDATEFORMAT, BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOPMOST)) GUICtrlSetState($lvDate, $GUI_HIDE) $lvList = GUICtrlCreateList("", 0, 0, 1, 1, -1, $WS_EX_TOPMOST) GUICtrlSetState($lvList, $GUI_HIDE) GUISetState(@SW_SHOW) If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $LVINFO[9]) = "-L/P-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "L|P1|P2|P3|P4") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $LVINFO[9]) = "-PP-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "20%|25%|30%|35%|40%|45%|50%|100%") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $LVINFO[9]) = "-KP-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $LVINFO[9]) = "-PS-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $LVINFO[9]) = "-CF-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $LVINFO[9]) = "-UZ-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf $lvin2 = $LVINFO[8] $lvin3 = $LVINFO[9] If $editFlag = 0 Then _InitEdit($LVINFO, $LVcolControl) Else _CancelEdit() EndIf EndFunc ;==>_ListView_DoubleClick Func _ListView_DoubleClick2() ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- If $LVINFO[8] = 0 Or $LVINFO[8] = 1 Or $LVINFO[9] = 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $LVINFO[9]) = "Łącznie" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 0, $LVINFO[9]) = "Razem" Then Return $lvControlGui = GUICreate("", 0, 0, 1, 1, $WS_POPUP, -1, $Gui) $lvEdit = GUICtrlCreateInput("", 0, 0, 1, 1, BitOR($ES_AUTOHSCROLL, $ES_NOHIDESEL, $WS_BORDER), 0) GUICtrlSetState($lvEdit, $GUI_HIDE) GUICtrlSetFont($lvEdit, 8.5 * $newgui[1] / $stGui[1]) $lvCombo = GUICtrlCreateCombo("", 0, 0, 1, 1, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL), $WS_EX_TOPMOST) GUICtrlSetState($lvCombo, $GUI_HIDE) $lvDate = GUICtrlCreateDate("", 0, 0, 1, 1, $DTS_SHORTDATEFORMAT, BitOR($WS_EX_CLIENTEDGE, $WS_EX_TOPMOST)) GUICtrlSetState($lvDate, $GUI_HIDE) $lvList = GUICtrlCreateList("", 0, 0, 1, 1, -1, $WS_EX_TOPMOST) GUICtrlSetState($lvList, $GUI_HIDE) GUISetState(@SW_SHOW) If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $LVINFO[9]) = "-L/P-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "L|P1|P2|P3|P4") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $LVINFO[9]) = "-PP-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "20%|25%|30%|35%|40%|45%|50%|100%") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $LVINFO[9]) = "-KP-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $LVINFO[9]) = "-PS-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $LVINFO[9]) = "-CF-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $LVINFO[9]) = "-UZ-" Then GUICtrlSetData($lvCombo, "") GUICtrlSetData($lvCombo, "TAK|NIE") EndIf $lvin4 = $LVINFO[8] $lvin5 = $LVINFO[9] If $editFlag = 0 Then _InitEdit2($LVINFO, $LVcolControl) Else _CancelEdit2() EndIf EndFunc ;==>_ListView_DoubleClick2 ; WM_NOTIFY event handler ;=============================================================================== ; Function Name: _MonitorEditState ; Description: Handles {enter} {esc} and {f2} ; Parameter(s): $h_gui - IN/OUT - ; $editCtrl - IN/OUT - ; $editFlag - IN/OUT - ; $__LISTVIEWCTRL - IN/OUT - ; $LVINFO - IN/OUT - ; $LVcolControl - IN - ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _MonitorEditState(ByRef $editCtrl, ByRef $editFlag, ByRef $__LISTVIEWCTRL, ByRef $LVINFO) Local $pressed = _vKeyCheck() If $editFlag And $pressed = 13 Then; pressed enter If $wcisniety[1] = True Then If $editCtrl = $lvCombo Then _LVUpdate($editCtrl, $__LISTVIEWCTRL, $lvin2, $lvin3) $iLV_Width = 17 For $i = $lvin3 To $lvin3 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $iHeader_Width) EndIf Next Else _LVUpdate($editCtrl, $__LISTVIEWCTRL, $lvin2, $lvin3) $iLV_Width = 17 For $i = $lvin3 To $lvin3 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $iHeader_Width) EndIf Next EndIf _WinAPI_InvalidateRect(0, 0) ElseIf $wcisniety[2] = True Then If $editCtrl = $lvCombo Then _LVUpdate2($editCtrl, $__LISTVIEWCTRL2, $lvin4, $lvin5) $iLV_Width = 17 For $i = $lvin5 To $lvin5 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $iHeader_Width) EndIf Next Else _LVUpdate2($editCtrl, $__LISTVIEWCTRL2, $lvin4, $lvin5) $iLV_Width = 17 For $i = $lvin5 To $lvin5 If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $iHeader_Width) EndIf Next EndIf _WinAPI_InvalidateRect(0, 0) Else EndIf ElseIf $editFlag And $pressed = 27 Then; pressed esc _CancelEdit() _WinAPI_InvalidateRect(0, 0) ElseIf Not $editFlag And $pressed = 113 Then; pressed f2 EndIf EndFunc ;==>_MonitorEditState Func Enter() ; just a dummy function EndFunc ;==>Enter ;=============================================================================== ; Function Name: _LVUpdate ; Description: Put the new data in the Listview ; Parameter(s): $editCtrl - IN/OUT - ; $__LISTVIEWCTRL - IN/OUT - ; $iRow - IN - ; $iCol - IN - ; ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _LVUpdate(ByRef $editCtrl, ByRef $__LISTVIEWCTRL, $iRow, $iCol) If $bCanceled Then Return Local $auc = 0 Local $newText = GUICtrlRead($editCtrl) If $editCtrl = $lvList Or $editCtrl = $lvCombo Then If $newText <> "" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, $newText, $iCol) obliczenierazem() $jakiklikniety[$iCol][$iRow] = True EndIf Else If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, 4) = "-PP-" Then $auc += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, 5) = "-L/P-" Then $auc += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, 4) = "-L/P-" Then $auc += 1 ; wazne If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $iCol) = "wartość j.m" Then ; jesli wart If StringRegExp($newText, '[^0-9\,\r\n\s]') = 0 Then ; jesli nowy ma dobre rzeczy to If $newText = "" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, "", $iCol) obliczeniabezp($iRow, $iCol, $newText) $jakiklikniety[$iCol][$iRow] = True Else Local $textcik = StringReplace($newText, ",", ".") Local $numreplacements = @extended If $numreplacements > 1 Then Else If StringInStr($newText, ",") = 0 Then $newText = StringReplace($newText, " ", "") $newText = StringReplace($newText, ".", ",") If StringInStr($newText, " ") = 0 Then Local $dl22 = StringLen($newText) Local $kohh = StringInStr($newText, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($newText, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($newText, $i) $newText = StringTrimLeft($newText, $i) $newText = $left & " " & $newText EndIf Next EndIf $newText = $newText & ",00zł" If $newText = ',00' Then $newText = "0,00" _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, $newText, $iCol) obliczeniabezp($iRow, $iCol, $newText) $jakiklikniety[$iCol][$iRow] = True Else $newText = StringReplace($newText, ",", ".") $newText = StringReplace($newText, " ", "") $newText = Round(Number($newText), 2) $newText = StringReplace($newText, ".", ",") If StringInStr($newText, " ") = 0 Then Local $dl22 = StringLen($newText) Local $kohh = StringInStr($newText, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($newText, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($newText, $i) $newText = StringTrimLeft($newText, $i) $newText = $left & " " & $newText EndIf Next EndIf If StringInStr($newText, ",") = 0 Then $newText = $newText & ",00" If $newText = ',00' Then $newText = "0,00" Else Local $poz22 = StringInStr($newText, ",") Local $dl22 = StringLen($newText) If $dl22 - $poz22 = 1 Then $newText = $newText & "0" If $dl22 - $poz22 = 0 Then $newText = $newText & "00" EndIf $newText = $newText & "zł" _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, $newText, $iCol) obliczeniabezp($iRow, $iCol, $newText) $jakiklikniety[$iCol][$iRow] = True EndIf EndIf EndIf Else EndIf ; TUTAJ JEST OBLICZAINE ElseIf _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $iCol) = "ilość j.m" Then If $newText = "" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, "", $iCol) obliczeniabezp($iRow, $iCol, $newText, 1) $jakiklikniety[$iCol][$iRow] = True Else If StringRegExp($newText, '[^0-9\r\n\s]') = 0 Then If $newText = "" Then Else $newText = StringReplace($newText, " ", "") If StringInStr($newText, " ") = 0 Then Local $dl22 = StringLen($newText) Local $kohh = StringInStr($newText, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($newText, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($newText, $i) $newText = StringTrimLeft($newText, $i) $newText = $left & " " & $newText EndIf Next EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, $newText, $iCol) obliczeniabezp($iRow, $iCol, $newText, 1) $jakiklikniety[$iCol][$iRow] = True EndIf Else EndIf EndIf ElseIf _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $iCol) = "j.m" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $iCol) = "Bezpośrednie" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $iCol) = "Bezposrednie" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, $newText, $iCol) If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $iCol) = "j.m" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $iRow, $newText, 2) If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $iCol) = "Bezpośrednie" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, $iCol) = "Bezposrednie" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $iRow, $newText, $iCol) ;~ Elseif _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $LVINFO[7]) = "Razem" Then ;~ ;~ Else EndIf EndIf $LVINFO[6] = $iRow $LVINFO[7] = $iCol _CancelEdit() EndFunc ;==>_LVUpdate Func _LVUpdate2(ByRef $editCtrl, ByRef $__LISTVIEWCTRL2, $iRow, $iCol) If $bCanceled Then Return Local $auc = 0 Local $newText = GUICtrlRead($editCtrl) If $editCtrl = $lvList Or $editCtrl = $lvCombo Then If $newText <> "" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, $newText, $iCol) ;~ obliczenierazem() EndIf Else If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, 4) = "-PP-" Then $auc += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, 5) = "-L/P-" Then $auc += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, 4) = "-L/P-" Then $auc += 1 ; wazne If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $iCol) = "Koszt j." Then ; jesli wart If StringRegExp($newText, '[^0-9\,\r\n\s]') = 0 Then ; jesli nowy ma dobre rzeczy to If $newText = "" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, "", $iCol) obliczeniabezp2($iRow, $iCol, $newText) Else Local $textcik = StringReplace($newText, ",", ".") Local $numreplacements = @extended If $numreplacements > 1 Then Else If StringInStr($newText, ",") = 0 Then $newText = StringReplace($newText, " ", "") $newText = StringReplace($newText, ".", ",") If StringInStr($newText, " ") = 0 Then Local $dl22 = StringLen($newText) Local $kohh = StringInStr($newText, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($newText, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($newText, $i) $newText = StringTrimLeft($newText, $i) $newText = $left & " " & $newText EndIf Next EndIf $newText = $newText & ",00zł" If $newText = ',00' Then $newText = "0,00" _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, $newText, $iCol) obliczeniabezp2($iRow, $iCol, $newText) Else $newText = StringReplace($newText, ",", ".") $newText = StringReplace($newText, " ", "") $newText = Round(Number($newText), 2) $newText = StringReplace($newText, ".", ",") If StringInStr($newText, " ") = 0 Then Local $dl22 = StringLen($newText) Local $kohh = StringInStr($newText, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($newText, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($newText, $i) $newText = StringTrimLeft($newText, $i) $newText = $left & " " & $newText EndIf Next EndIf If StringInStr($newText, ",") = 0 Then $newText = $newText & ",00" If $newText = ',00' Then $newText = "0,00" Else Local $poz22 = StringInStr($newText, ",") Local $dl22 = StringLen($newText) If $dl22 - $poz22 = 1 Then $newText = $newText & "0" If $dl22 - $poz22 = 0 Then $newText = $newText & "00" EndIf $newText = $newText & "zł" _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, $newText, $iCol) obliczeniabezp2($iRow, $iCol, $newText) EndIf EndIf EndIf Else EndIf ; TUTAJ JEST OBLICZAINE ElseIf _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $iCol) = "Ilość j." Then If $newText = "" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, "", $iCol) obliczeniabezp2($iRow, $iCol, $newText) Else If StringRegExp($newText, '[^0-9\r\n\s]') = 0 Then If $newText = "" Then Else $newText = StringReplace($newText, " ", "") If StringInStr($newText, " ") = 0 Then Local $dl22 = StringLen($newText) Local $kohh = StringInStr($newText, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($newText, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($newText, $i) $newText = StringTrimLeft($newText, $i) $newText = $left & " " & $newText EndIf Next EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, $newText, $iCol) obliczeniabezp2($iRow, $iCol, $newText) EndIf Else EndIf EndIf ElseIf _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $iCol) = "j.m" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $iCol) = "Pośrednie" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $iCol) = "Pposrednie" Then _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, $newText, $iCol) ;~ Else EndIf EndIf $LVINFO[6] = $iRow $LVINFO[7] = $iCol _CancelEdit2() EndFunc ;==>_LVUpdate2 ;=============================================================================== ; Function Name: _GUICtrlListViewGetSubItemRect ; Description: Get the bounding rect of a listview item ; Parameter(s): $h_listview - IN - ; $row - IN - ; $col - IN - ; $aRect - IN/OUT - ; ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _GUICtrlListViewGetSubItemRect($h_listview, $row, $col, ByRef $aRect) Local $rectangle, $rv, $ht[4] $rectangle = DllStructCreate("int;int;int;int") ;left, top, right, bottom DllStructSetData($rectangle, 1, $LVIR_BOUNDS) DllStructSetData($rectangle, 2, $col) If IsHWnd($h_listview) Then Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETSUBITEMRECT, "int", $row, "ptr", DllStructGetPtr($rectangle)) $rv = $a_ret[0] Else $rv = GUICtrlSendMsg($h_listview, $LVM_GETSUBITEMRECT, $row, DllStructGetPtr($rectangle)) EndIf ReDim $aRect[4] $aRect = $ht $aRect[0] = DllStructGetData($rectangle, 1) $aRect[1] = DllStructGetData($rectangle, 2) $aRect[2] = DllStructGetData($rectangle, 3) $aRect[3] = DllStructGetData($rectangle, 4) - $aRect[1] $rectangle = 0 Return $rv EndFunc ;==>_GUICtrlListViewGetSubItemRect Func _GUICtrlListViewGetSubItemRect2($h_listview, $row, $col, ByRef $aRect) Local $rectangle, $rv, $ht[4] $rectangle = DllStructCreate("int;int;int;int") ;left, top, right, bottom DllStructSetData($rectangle, 1, $LVIR_BOUNDS) DllStructSetData($rectangle, 2, $col) If IsHWnd($h_listview) Then Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETSUBITEMRECT, "int", $row, "ptr", DllStructGetPtr($rectangle)) $rv = $a_ret[0] Else $rv = GUICtrlSendMsg($h_listview, $LVM_GETSUBITEMRECT, $row, DllStructGetPtr($rectangle)) EndIf ReDim $aRect[4] $aRect = $ht $aRect[0] = DllStructGetData($rectangle, 1) $aRect[1] = DllStructGetData($rectangle, 2) $aRect[2] = DllStructGetData($rectangle, 3) $aRect[3] = DllStructGetData($rectangle, 4) - $aRect[1] $rectangle = 0 Return $rv EndFunc ;==>_GUICtrlListViewGetSubItemRect2 ;=============================================================================== ; Function Name: _InitEdit ; Description: Bring forth the editing control and set focus on it. ; Parameter(s): $LVINFO - IN - ; $LVcolControl - IN - ; ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _InitEdit($LVINFO, $LVcolControl) If $bPROGRESSSHOWING = True Then Return ;ConsoleWrite("_InitEdit>>"&@LF) If $bCanceled Then $bCanceled = False Return EndIf If $bCALLBACK Then _CancelEdit() $bCALLBACK = False EndIf If $editFlag = 1 Then _CancelEdit() Local $CtrlType If $LVINFO[0] < 0 Or $LVINFO[1] < 0 Then Return 0 If UBound($LVcolControl) - 1 < $LVINFO[1] Then $CtrlType = 0 Else $CtrlType = $LVcolControl[$LVINFO[1]] EndIf ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- Switch $CtrlType Case 1 GUICtrlSetData($lvEdit, "") $editCtrl = $lvEdit Case 2 $editCtrl = $lvCombo Case 4 $editCtrl = $lvDate Case 8 $editCtrl = $lvList Case 256 $bCALLBACK = True Case Else Return EndSwitch If $bCALLBACK Then $bCALLBACK = False $bCALLBACK_EVENT = True Else ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- Local $editCtrlPos = _CalcEditPos($__LISTVIEWCTRL, $LVINFO) Local $x1, $y1 ClientToScreen($Gui, $x1, $y1) WinMove($lvControlGui, "", $editCtrlPos[0] + ($x1 - 1), $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2], $editCtrlPos[3]) ; GUICtrlSetPos($editCtrl, $editCtrlPos[0],$editCtrlPos[1], $editCtrlPos[2],$editCtrlPos[3]) GUICtrlSetPos($editCtrl, 0, 0, $editCtrlPos[2], $editCtrlPos[3]) Local $oldText = _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[0], $LVINFO[1]) GUICtrlSetState($__LISTVIEWCTRL, $GUI_NOFOCUS) Switch $editCtrl Case $lvList If $oldText <> "" Then GUICtrlSetData($editCtrl, $oldText) Case $lvCombo If $oldText <> "" Then Local $index = _GUICtrlComboBox_FindString($editCtrl, $oldText) If ($index = -1) Then $index = _GUICtrlComboBox_AddString($editCtrl, $oldText) _GUICtrlComboBox_SetCurSel($editCtrl, $index) GUICtrlSetState($editCtrl, $GUI_ONTOP) EndIf Case Else Local $auc2 = 0 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, 4) = "-PP-" Then $auc2 += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, 5) = "-L/P-" Then $auc2 += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 1, 4) = "-L/P-" Then $auc2 += 1 If $LVINFO[1] > 6 + $auc2 Then $oldText = StringReplace($oldText, "zł", "") EndIf GUICtrlSetData($editCtrl, $oldText) EndSwitch $editFlag = 1 GUICtrlSetState($__LISTVIEWCTRL, $GUI_NOFOCUS) WinMove($lvControlGui, "", $editCtrlPos[0] + ($x1 - 1), $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2] + 1, $editCtrlPos[3] + 1) WinSetOnTop($lvControlGui, "", 1) GUISetState(@SW_SHOW, $lvControlGui) ;~ GUICtrlSetPos($editCtrl, $editCtrlPos[0],$editCtrlPos[1], $editCtrlPos[2],$editCtrlPos[3]) ;~ GUICtrlSetState($editCtrl, $GUI_SHOW) GUICtrlSetPos($editCtrl, 0, 0, $editCtrlPos[2], $editCtrlPos[3]) GUICtrlSetState($editCtrl, $GUI_SHOW) GUICtrlSetState($editCtrl, $GUI_FOCUS) ; GUIRegisterMsg($WM_ACTIVATE,"WM_ACTIVATE") EndIf EndFunc ;==>_InitEdit Func _InitEdit2($LVINFO, $LVcolControl) If $bPROGRESSSHOWING = True Then Return ;ConsoleWrite("_InitEdit>>"&@LF) If $bCanceled Then $bCanceled = False Return EndIf If $bCALLBACK Then _CancelEdit() $bCALLBACK = False EndIf If $editFlag = 1 Then _CancelEdit() Local $CtrlType If $LVINFO[0] < 0 Or $LVINFO[1] < 0 Then Return 0 If UBound($LVcolControl) - 1 < $LVINFO[1] Then $CtrlType = 0 Else $CtrlType = $LVcolControl[$LVINFO[1]] EndIf ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- Switch $CtrlType Case 1 GUICtrlSetData($lvEdit, "") $editCtrl = $lvEdit Case 2 $editCtrl = $lvCombo Case 4 $editCtrl = $lvDate Case 8 $editCtrl = $lvList Case 256 $bCALLBACK = True Case Else Return EndSwitch If $bCALLBACK Then $bCALLBACK = False $bCALLBACK_EVENT = True Else ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- Local $editCtrlPos = _CalcEditPos($__LISTVIEWCTRL, $LVINFO) Local $x1, $y1 ClientToScreen($Gui, $x1, $y1) WinMove($lvControlGui, "", $editCtrlPos[0] + ($x1 - 1), $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2], $editCtrlPos[3]) ; GUICtrlSetPos($editCtrl, $editCtrlPos[0],$editCtrlPos[1], $editCtrlPos[2],$editCtrlPos[3]) GUICtrlSetPos($editCtrl, 0, 0, $editCtrlPos[2], $editCtrlPos[3]) Local $oldText = _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[0], $LVINFO[1]) GUICtrlSetState($__LISTVIEWCTRL2, $GUI_NOFOCUS) Switch $editCtrl Case $lvList If $oldText <> "" Then GUICtrlSetData($editCtrl, $oldText) Case $lvCombo If $oldText <> "" Then Local $index = _GUICtrlComboBox_FindString($editCtrl, $oldText) If ($index = -1) Then $index = _GUICtrlComboBox_AddString($editCtrl, $oldText) _GUICtrlComboBox_SetCurSel($editCtrl, $index) GUICtrlSetState($editCtrl, $GUI_ONTOP) EndIf Case Else Local $auc2 = 0 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, 4) = "-PP-" Then $auc2 += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, 5) = "-L/P-" Then $auc2 += 1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, 4) = "-L/P-" Then $auc2 += 1 If $LVINFO[1] > 6 + $auc2 Then $oldText = StringReplace($oldText, "zł", "") EndIf GUICtrlSetData($editCtrl, $oldText) EndSwitch $editFlag = 1 GUICtrlSetState($__LISTVIEWCTRL2, $GUI_NOFOCUS) WinMove($lvControlGui, "", $editCtrlPos[0] + ($x1 - 1), $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2] + 1, $editCtrlPos[3] + 1) WinSetOnTop($lvControlGui, "", 1) GUISetState(@SW_SHOW, $lvControlGui) ;~ GUICtrlSetPos($editCtrl, $editCtrlPos[0],$editCtrlPos[1], $editCtrlPos[2],$editCtrlPos[3]) ;~ GUICtrlSetState($editCtrl, $GUI_SHOW) GUICtrlSetPos($editCtrl, 0, 0, $editCtrlPos[2], $editCtrlPos[3]) GUICtrlSetState($editCtrl, $GUI_SHOW) GUICtrlSetState($editCtrl, $GUI_FOCUS) ; GUIRegisterMsg($WM_ACTIVATE,"WM_ACTIVATE") EndIf EndFunc ;==>_InitEdit2 Func _MoveControl() If $bInitiated = True Then Local $editCtrlPos = _CalcEditPos($__LISTVIEWCTRL, $LVINFO) Local $x1, $y1 ClientToScreen($Gui, $x1, $y1) If $editCtrlPos[0] > 0 Then WinMove($lvControlGui, "", $editCtrlPos[0] + ($x1 - 1), $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2], $editCtrlPos[3]) Else WinMove($lvControlGui, "", $x1 + 1, $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2] - Abs($editCtrlPos[0]), $editCtrlPos[3]) EndIf ;GUICtrlSetPos($editCtrl, 0,0, $editCtrlPos[2],$editCtrlPos[3]) EndIf EndFunc ;==>_MoveControl Func _MoveControl2() If $bInitiated = True Then Local $editCtrlPos = _CalcEditPos2($__LISTVIEWCTRL2, $LVINFO) Local $x1, $y1 ClientToScreen2($Gui, $x1, $y1) If $editCtrlPos[0] > 0 Then WinMove($lvControlGui, "", $editCtrlPos[0] + ($x1 - 1), $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2], $editCtrlPos[3]) Else WinMove($lvControlGui, "", $x1 + 1, $editCtrlPos[1] + ($y1 - 1), $editCtrlPos[2] - Abs($editCtrlPos[0]), $editCtrlPos[3]) EndIf ;GUICtrlSetPos($editCtrl, 0,0, $editCtrlPos[2],$editCtrlPos[3]) EndIf EndFunc ;==>_MoveControl2 Func _CalcEditPos($nLvCtrl, $aINFO) Local $pos[4] Local $ctrlSize = ControlGetPos($Gui, "", $nLvCtrl) Local $ERR = @error $pos[0] = $aINFO[2] $pos[1] = $aINFO[3] + 3 $pos[2] = $aINFO[4] $pos[3] = $aINFO[5] - 4 If $ERR Then Return $pos EndIf If $aINFO[2] + $aINFO[4] > $ctrlSize[2] + 100 Then $pos[0] = $aINFO[2] - (($aINFO[2] + $aINFO[4]) - $ctrlSize[2] + 100) EndIf If $editCtrl = $lvList Then ; Local $initH = (_GUICtrlListView_GetItemCount($lvList) * 14.5) * (_GUICtrlListView_GetItemCount($lvList) * 14.5 > 0) Local $y1 = $ctrlSize[3] + 100 - $aINFO[3] - 21 $y1 = $y1 * ($y1 > 21) If $initH < $y1 Then $pos[3] = $initH Else $pos[3] = $y1 EndIf EndIf If _LvHasCheckStyle($__LISTVIEWCTRL) And $aINFO[1] = 0 And $editCtrl = $lvEdit Then ;compensate for check box $pos[2] = $aINFO[4] - 21 $pos[0] = $aINFO[2] + 21 EndIf Return $pos EndFunc ;==>_CalcEditPos Func _CalcEditPos2($nLvCtrl, $aINFO) Local $pos[4] Local $ctrlSize = ControlGetPos($Gui, "", $nLvCtrl) Local $ERR = @error $pos[0] = $aINFO[2] $pos[1] = $aINFO[3] + 3 $pos[2] = $aINFO[4] $pos[3] = $aINFO[5] - 4 If $ERR Then Return $pos EndIf If $aINFO[2] + $aINFO[4] > $ctrlSize[2] Then $pos[0] = $aINFO[2] - (($aINFO[2] + $aINFO[4]) - $ctrlSize[2]) EndIf If $editCtrl = $lvList Then ;make the list fit inside the ListView. Local $initH = (_GUICtrlListView_GetItemCount($lvList) * 14.5) * (_GUICtrlListView_GetItemCount($lvList) * 14.5 > 0) Local $y1 = $ctrlSize[3] - $aINFO[3] - 21 $y1 = $y1 * ($y1 > 21) If $initH < $y1 Then $pos[3] = $initH Else $pos[3] = $y1 EndIf EndIf If _LvHasCheckStyle2($__LISTVIEWCTRL2) And $aINFO[1] = 0 And $editCtrl = $lvEdit Then ;compensate for check box $pos[2] = $aINFO[4] - 21 $pos[0] = $aINFO[2] + 21 EndIf Return $pos EndFunc ;==>_CalcEditPos2 ;=============================================================================== ; Function Name: _CancelEdit ; Description: Cancels the editing process, and kills the hot keys. ; Parameter(s): ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _CancelEdit() HotKeySet("{Enter}") HotKeySet("{Esc}") If $editFlag = 1 Then Send("{Enter}");quit edit mode $editFlag = 0 GUISetState(@SW_HIDE, $lvControlGui); additionally hide it WinSetOnTop($lvControlGui, "", 0); remove topmost attrib WinMove($lvControlGui, "", 1024, 768, 1, 1);move to bottom right corner GUICtrlSetState($editCtrl, $GUI_HIDE) GUICtrlSetPos($editCtrl, 0, 0, 1, 1) $bCanceled = True $bDATECHANGED = False ;---------------------------------------------------------------------------------------------- $kliknietonadate = False ;---------------------------------------------------------------------------------------------- ;if Not(WinActive($Gui,"")) Then WinActivate($Gui,"") EndFunc ;==>_CancelEdit Func _CancelEdit2() HotKeySet("{Enter}") HotKeySet("{Esc}") If $editFlag = 1 Then Send("{Enter}");quit edit mode $editFlag = 0 GUISetState(@SW_HIDE, $lvControlGui); additionally hide it WinSetOnTop($lvControlGui, "", 0); remove topmost attrib WinMove($lvControlGui, "", 1024, 768, 1, 1);move to bottom right corner GUICtrlSetState($editCtrl, $GUI_HIDE) GUICtrlSetPos($editCtrl, 0, 0, 1, 1) $bCanceled = True $bDATECHANGED = False ;---------------------------------------------------------------------------------------------- $kliknietonadate = False ;---------------------------------------------------------------------------------------------- ;if Not(WinActive($Gui,"")) Then WinActivate($Gui,"") EndFunc ;==>_CancelEdit2 ;=============================================================================== ; Function Name: _FillLV_Info ; Description: This fills the passed in array with row col and rect info for ; used by the editing controls ; Parameter(s): $__LISTVIEWCTRL - IN/OUT - ; $iRow - IN - ; $iCol - IN - ; $aLVI - IN/OUT - ; ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _FillLV_Info(ByRef $nLvCtrl, $iRow, $iCol, ByRef $aLVI, $iFlag = 1) If $iFlag Then $aLVI[6] = $aLVI[0] ;set old row $aLVI[7] = $aLVI[1] ;set old col $aLVI[0] = $iRow ;set new row $aLVI[1] = $iCol ;set new col EndIf If $iRow < 0 Or $iCol < 0 Then Return 0 Local $lvi_rect[4], $pos = ControlGetPos($Gui, "", $nLvCtrl) _GUICtrlListViewGetSubItemRect($nLvCtrl, $iRow, $iCol, $lvi_rect) $aLVI[2] = $pos[0] + $lvi_rect[0] + 5 $aLVI[3] = $pos[1] + $lvi_rect[1] $aLVI[4] = _GUICtrlListView_GetColumnWidth($nLvCtrl, $iCol) - 4 $aLVI[5] = $lvi_rect[3] + 5 Return 1 EndFunc ;==>_FillLV_Info Func _FillLV_Info2(ByRef $nLvCtrl, $iRow, $iCol, ByRef $aLVI, $iFlag = 1) If $iFlag Then $aLVI[6] = $aLVI[0] ;set old row $aLVI[7] = $aLVI[1] ;set old col $aLVI[0] = $iRow ;set new row $aLVI[1] = $iCol ;set new col EndIf If $iRow < 0 Or $iCol < 0 Then Return 0 Local $lvi_rect[4], $pos = ControlGetPos($Gui, "", $nLvCtrl) _GUICtrlListViewGetSubItemRect2($nLvCtrl, $iRow, $iCol, $lvi_rect) $aLVI[2] = $pos[0] + $lvi_rect[0] + 5 $aLVI[3] = $pos[1] + $lvi_rect[1] $aLVI[4] = _GUICtrlListView_GetColumnWidth($nLvCtrl, $iCol) - 4 $aLVI[5] = $lvi_rect[3] + 5 Return 1 EndFunc ;==>_FillLV_Info2 Func WM_ACTIVATE($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGui,$MsgID,$wParam, $lParam ;Local $wa = _LoWord($wParam) Local $hActive = DllCall("user32.dll", "hwnd", "GetForegroundWindow") If $lParam = 0 And $editFlag = 1 Then _CancelEdit() _CancelEdit2() EndIf If IsArray($hActive) Then WinSetOnTop($hActive[0], "", 1) WinSetOnTop($hActive[0], "", 0) EndIf Return 0 EndFunc ;==>WM_ACTIVATE Edited November 22, 2010 by ZwinnyRolnik
ZwinnyRolnik Posted November 22, 2010 Author Posted November 22, 2010 (edited) next (i can't join it together in [au.toit][/au.toit] expandcollapse popup;=============================================================================== ; Function Name: WM_Notify_Events ; Description: Event handler for windows WN_NOTIFY messages ; Parameter(s): $hWndGUI - IN - ; $MsgID - IN - ; $wParam - IN - ; $lParam - IN - ; ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGUI, $MsgID, $wParam If ($wcisniety[1] Or ($wcisniety[2] And $ryczek = "nierycz") Or $wcisniety[3]) And $bWM_NOTIFY = True And $nacisnietyjest = False Then Local $tagNMHDR, $pressed, $event, $retval = $GUI_RUNDEFMSG ;, $idFrom $tagNMHDR = DllStructCreate("int;int;int", $lParam);NMHDR (hwndFrom, idFrom, code) If @error Then $tagNMHDR = 0 Return EndIf ;~ $from = DllStructGetData($tagNMHDR, 1) ;~ $idFrom = DllStructGetData($tagNMHDR,2) ;ConsoleWrite("idFrom="&$idFrom&@LF) $event = DllStructGetData($tagNMHDR, 3) If $wcisniety[1] or $wcisniety[3] Then Select Case $wParam = $__LISTVIEWCTRL Select Case $event = $LVN_BEGINSCROLL $bWM_NOTIFY = False _CancelEdit() _TermEditLib2() ToolTip("") If _IsPressed("01", $dll22) Then $nacisnietyjest = True $wszystkostop = True EndIf EndSelect EndSelect ElseIf $wcisniety[2] Then Select Case $wParam = $__LISTVIEWCTRL2 Select Case $event = $LVN_BEGINSCROLL $bWM_NOTIFY = False _CancelEdit2() _TermEditLib222() ToolTip("") If _IsPressed("01", $dll22) Then $nacisnietyjest = True $wszystkostop = True EndIf EndSelect EndSelect ElseIf $wcisniety[3] Then Select Case $wParam = $__LISTVIEWCTRL3 Select Case $event = $LVN_BEGINSCROLL $bWM_NOTIFY = False _CancelEdit2() _TermEditLib222() ToolTip("") If _IsPressed("01", $dll22) Then $nacisnietyjest = True $wszystkostop = True EndIf EndSelect EndSelect EndIf Select Case ($event = $HDN_TRACK Or $event = $HDN_TRACKW) ;column dragging _CancelEdit() _CancelEdit2() Case $MsgID = $WM_MOVING _MoveControl() _MoveControl2() Case $wParam = $__LISTVIEWCTRL3 If $wcisniety[3] Then Select Case $event = $LVN_COLUMNCLICK $tNMLISTVIEW = DllStructCreate("hwnd hwndfrom;int idfrom;int code;" & _ "int item;int subitem", $lParam) $iColll = DllStructGetData($tNMLISTVIEW, "subitem") If $iColll = 1 Or $iColll = 2 Then Local $tekszt = _GUICtrlListView_GetColumn($__LISTVIEWCTRL3, $iColll) If $tekszt[5] = "Zwiń wszystkie" Then ;~ _GUICtrlListView_SetColumn($__LISTVIEWCTRL3, $iColll, "Rozwiń wszystkie") For $i = _GUICtrlListView_GetColumnCount($__LISTVIEWCTRL3) - 1 To 2 Step -1 Local $tekszt = _GUICtrlListView_GetColumn($__LISTVIEWCTRL3, $i) If $tekszt[5] = "Zwiń" Then For $j = $i - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $j), "(") <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $j) = "" Then ExitLoop _GUICtrlListView_HideColumn($__LISTVIEWCTRL3, $j) Next _GUICtrlListView_SetColumn($__LISTVIEWCTRL3, $i, "Rozwiń") Local $jhj = _GUICtrlListView_GetTopIndex($__LISTVIEWCTRL3) _GUICtrlListView_EnsureVisibleEx($__LISTVIEWCTRL3, $jhj, $i - 1) EndIf Next For $i = 0 To 1499 $roki[$i] = True Next Else ;~ _GUICtrlListView_SetColumn($__LISTVIEWCTRL3, $iColll, "Zwiń wszystkie") For $i = _GUICtrlListView_GetColumnCount($__LISTVIEWCTRL3) - 1 To 2 Step -1 Local $tekszt = _GUICtrlListView_GetColumn($__LISTVIEWCTRL3, $i) If $tekszt[5] = "Rozwiń" Then For $j = $i - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $j), "(") <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $j) = "" Then ExitLoop _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $j, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL3, $j) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $j, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL3, $j) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $j, $iHeader_Width) $iLV_Width += $iHeader_Width Else $iLV_Width += $iData_Width EndIf Next _GUICtrlListView_SetColumn($__LISTVIEWCTRL3, $i, "Zwiń") Local $jhj = _GUICtrlListView_GetTopIndex($__LISTVIEWCTRL3) _GUICtrlListView_EnsureVisibleEx($__LISTVIEWCTRL3, $jhj, $i - 1) EndIf Next For $i = 0 To 1499 $roki[$i] = False Next EndIf Else If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $iColll), "(") <> 0 Then Local $juzpo = StringTrimLeft(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $iColll), 1), 1) $juzpo = Number($juzpo) - 1500 If $roki[$juzpo] = False Then $roki[$juzpo] = True For $i = $iColll - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $i), "(") <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $i) = "" Then ExitLoop _GUICtrlListView_HideColumn($__LISTVIEWCTRL3, $i) Next _GUICtrlListView_SetColumn($__LISTVIEWCTRL3, $iColll, "Rozwiń") Local $jhj = _GUICtrlListView_GetTopIndex($__LISTVIEWCTRL3) _GUICtrlListView_EnsureVisibleEx($__LISTVIEWCTRL3, $jhj, $iColll - 1) Else $roki[$juzpo] = False For $i = $iColll - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $i), "(") <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $i) = "" Then ExitLoop _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL3, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL3, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $i, $iHeader_Width) $iLV_Width += $iHeader_Width Else $iLV_Width += $iData_Width EndIf Next _GUICtrlListView_SetColumn($__LISTVIEWCTRL3, $iColll, "Zwiń") Local $jhj = _GUICtrlListView_GetTopIndex($__LISTVIEWCTRL3) _GUICtrlListView_EnsureVisibleEx($__LISTVIEWCTRL3, $jhj, $iColll - 1) EndIf EndIf EndIf EndSelect EndIf Case $wParam = $__LISTVIEWCTRL If $wcisniety[1] or $wcisniety[3] Then Select Case $event = $LVN_ITEMCHANGED Local $ckcount = _LvGetCheckedCount($__LISTVIEWCTRL) If $LVCHECKEDCNT <> $ckcount Then $LVCHECKEDCNT = $ckcount $bLVITEMCHECKED = True _CancelEdit() EndIf Case $event = $NM_CLICK ;~ If $bLVEDITondblclick = false Then ;~ ;~ Else If $editFlag = 1 Then _ListView_Click() Else ;~ If $moznakliknac = True Then _ListView_DoubleClick() EndIf $moznakliknac = True EndIf ;~ EndIf ;~ $bLVITEMCHECKED = False; Case $event = $LVN_HOTTRACK _LVGetInfo($lParam) If _GUICtrlListView_GetItemSelected($__LISTVIEWCTRL, $LVINFO[8]) = True Then $moznakliknac = True Else $moznakliknac = False EndIf If $editFlag = 0 Then ; if no cell change return without doing anythingli If $iLastItem = $LVINFO[8] And $iLastsubitemNR = $LVINFO[9] Then Return Else $iLastItem = $LVINFO[8] $iLastsubitemNR = $LVINFO[9] If $LVINFO[8] = 1 And (_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) = "-CF-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) = "-UZ-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) = "-KP-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) = "-PS-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) = "-PP-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) = "-L/P-") Then Local $sToolTipData2 = _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) If $sToolTipData2 = "-CF-" Then $sToolTipData2 = "Cross Financing" If $sToolTipData2 = "-UZ-" Then $sToolTipData2 = "Usługa Zlecana" If $sToolTipData2 = "-PP-" Then $sToolTipData2 = "Pomoc Publiczna" If $sToolTipData2 = "-L/P-" Then $sToolTipData2 = "Liderzy/Partnerzy" If $sToolTipData2 = "-KP-" Then $sToolTipData2 = "Koszty Personelu" If $sToolTipData2 = "-PS-" Then $sToolTipData2 = "Pozycja Skalowana" Sleep(10) Local $mousx = MouseGetPos(0) Local $mousy = MouseGetPos(1) Sleep(140) ToolTip($sToolTipData2, $mousx + 5, $mousy + 5, "", 0, 1) ;~ Local $tip = _GUIToolTip_Create($gui,$TTS_BALLOON) ;~ Local $id = _GUIToolTip_GetCurrentTool($tip) ;~ _GUIToolTip_UpdateTipText($gui,$tip,$id[2],"ala ma kota") ;~ _GUIToolTip_PopUp($tip) ;~ _GUIToolTip_TrackActivate($tip,true,$gui,$id[2]) Else ;~ Local $sToolTipData = _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) ;~ $Mypos = StringInStr($sToolTipData, @CRLF) ;~ $strin = _GUICtrlListView_GetStringWidth($__LISTVIEWCTRL, $sToolTipData) ;~ $strin = $strin + 12 ;~ $str = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $LVINFO[9]) ;~ If $Mypos = 0 Then ;~ If $str < $strin Then ;~ Sleep(250) ;ToolTip($sToolTipData, MouseGetPos(0) + 5, MouseGetPos(1) + 5, "", 0, 1) ;~ $tip = _GUIToolTip_Create($gui,$TTS_BALLOON) ;~ $id = _GUIToolTip_GetCurrentTool($tip) ;~ _GUIToolTip_UpdateTipText($gui,$tip,$id[2],"ala ma kota") ;~ Else ;~ ToolTip("") ;~ EndIf ;~ ;ConsoleWrite("R" & $iItem & "C" & $subitemNR & " No tip" & @CR) ;~ Else ToolTip("") ;~ EndIf EndIf EndIf EndIf Case $event = $NM_DBLCLK _LVGetInfo($lParam) _ListView_DoubleClick() Case $event = $NM_RCLICK _ListView_RClick() Case $event = -180 If $editFlag = 1 Then Send("{Esc}") _CancelEdit() $retval = 0 EndIf Case $event = -181 _FillLV_Info($__LISTVIEWCTRL, $LVINFO[0], $LVINFO[1], $LVINFO, 0) Case $event = -121 _LVGetInfo($lParam, 1) Case Else EndSelect EndIf Case $wParam = $__LISTVIEWCTRL2 If $wcisniety[2] Then Select Case $event = $LVN_ITEMCHANGED Local $ckcount = _LvGetCheckedCount($__LISTVIEWCTRL2) If $LVCHECKEDCNT <> $ckcount Then $LVCHECKEDCNT = $ckcount $bLVITEMCHECKED = True _CancelEdit2() EndIf Case $event = $NM_CLICK If $editFlag = 1 Then _ListView_Click2() Else If $moznakliknac2 = True Then _ListView_DoubleClick2() EndIf $moznakliknac2 = True EndIf Case $event = $LVN_HOTTRACK _LVGetInfo2($lParam) If _GUICtrlListView_GetItemSelected($__LISTVIEWCTRL2, $LVINFO[8]) = True Then $moznakliknac2 = True Else $moznakliknac2 = False EndIf If $editFlag = 0 Then If $iLastItem = $LVINFO[8] And $iLastsubitemNR = $LVINFO[9] Then Return Else $iLastItem = $LVINFO[8] $iLastsubitemNR = $LVINFO[9] If $LVINFO[8] = 1 And (_GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[8], $LVINFO[9]) = "-CF-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[8], $LVINFO[9]) = "-UZ-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[8], $LVINFO[9]) = "-KP-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[8], $LVINFO[9]) = "-PS-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[8], $LVINFO[9]) = "-PP-" Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[8], $LVINFO[9]) = "-L/P-") Then Local $sToolTipData2 = _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $LVINFO[8], $LVINFO[9]) If $sToolTipData2 = "-CF-" Then $sToolTipData2 = "Cross Financing" If $sToolTipData2 = "-UZ-" Then $sToolTipData2 = "Usługa Zlecana" If $sToolTipData2 = "-PP-" Then $sToolTipData2 = "Pomoc Publiczna" If $sToolTipData2 = "-L/P-" Then $sToolTipData2 = "Liderzy/Partnerzy" If $sToolTipData2 = "-KP-" Then $sToolTipData2 = "Koszty Personelu" If $sToolTipData2 = "-PS-" Then $sToolTipData2 = "Pozycja Skalowana" Sleep(10) Local $mousx = MouseGetPos(0) Local $mousy = MouseGetPos(1) Sleep(140) ToolTip($sToolTipData2, $mousx + 5, $mousy + 5, "", 0, 1) ;~ Local $tip = _GUIToolTip_Create($gui,$TTS_BALLOON) ;~ Local $id = _GUIToolTip_GetCurrentTool($tip) ;~ _GUIToolTip_UpdateTipText($gui,$tip,$id[2],"ala ma kota") ;~ _GUIToolTip_PopUp($tip) ;~ _GUIToolTip_TrackActivate($tip,true,$gui,$id[2]) Else ;~ Local $sToolTipData = _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $LVINFO[8], $LVINFO[9]) ;~ $Mypos = StringInStr($sToolTipData, @CRLF) ;~ $strin = _GUICtrlListView_GetStringWidth($__LISTVIEWCTRL, $sToolTipData) ;~ $strin = $strin + 12 ;~ $str = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $LVINFO[9]) ;~ If $Mypos = 0 Then ;~ If $str < $strin Then ;~ Sleep(250) ;ToolTip($sToolTipData, MouseGetPos(0) + 5, MouseGetPos(1) + 5, "", 0, 1) ;~ $tip = _GUIToolTip_Create($gui,$TTS_BALLOON) ;~ $id = _GUIToolTip_GetCurrentTool($tip) ;~ _GUIToolTip_UpdateTipText($gui,$tip,$id[2],"ala ma kota") ;~ Else ;~ ToolTip("") ;~ EndIf ;~ ;ConsoleWrite("R" & $iItem & "C" & $subitemNR & " No tip" & @CR) ;~ Else ToolTip("") ;~ EndIf EndIf EndIf EndIf Case $event = $NM_DBLCLK _LVGetInfo2($lParam) _ListView_DoubleClick2() Case $event = $NM_RCLICK _ListView_RClick2() Case $event = -180 If $editFlag = 1 Then Send("{Esc}") _CancelEdit2() $retval = 0 EndIf Case $event = -181 _FillLV_Info2($__LISTVIEWCTRL2, $LVINFO[0], $LVINFO[1], $LVINFO, 0) Case $event = -121 _LVGetInfo2($lParam, 1) Case Else EndSelect EndIf Case $lvDate Select Case $event = $DTN_DROPDOWN $kliknietonadate = True $bCanceled = False $bDATECHANGED = False Case $event = $DTN_WMKEYDOWNA $pressed = _vKeyCheck() If $pressed = 27 Then _CancelEdit() Case $event = $DTN_DATETIMECHANGE If $bDATECHANGED = False Then $bDATECHANGED = True $pressed = _vKeyCheck() If $pressed = 27 Then _CancelEdit() $bDATECHANGED = False EndIf Case $event = $DTN_CLOSEUP If $bCanceled or ($bDATECHANGED = False) Then Send("{Esc}") $kliknietonadate = False $bDATECHANGED = False Else ; If $bLVUPDATEonfocusCHANGE = True Then Send("{Enter}") $bDATECHANGED = True ; Else ; Send("{Esc}") ; EndIf EndIf Case $event = -7 $bCanceled = False $bDATECHANGED = False If $bCanceled = True Then ;or ($bDATECHANGED = False) Then Send("{Esc}") $bDATECHANGED = False $bCanceled = False Else $bDATECHANGED = True EndIf EndSelect Case $event = -326 If $editFlag Then _CancelEdit() If $editFlag Then _CancelEdit2() Case $MsgID = $WM_KEYDOWN ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- Case Else ;;uncomment the following line to have the edit _LVUpdate if the mouse moves ;;off of the listview. If $editFlag And Not (_HasFocus($editCtrl)) Then _LVUpdate($editCtrl, $__LISTVIEWCTRL, $LVINFO[0], $LVINFO[1]) If $editFlag And Not (_HasFocus2($editCtrl)) Then _LVUpdate2($editCtrl, $__LISTVIEWCTRL2, $LVINFO[0], $LVINFO[1]) EndSelect $tagNMHDR = 0 $event = 0 $lParam = 0 Return $retval EndIf EndFunc ;==>WM_Notify_Events Func WM_MOVE_EVENT($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGuI,$MsgID,$wParam,$lParam If $editFlag Then _MoveControl() If $editFlag Then _MoveControl2() Return True EndFunc ;==>WM_MOVE_EVENT ;=============================================================================== ; Function Name: WM_Command_Events ; Description: Event handler for windows WN_Command messages ; Parameter(s): $hWndGUI - IN - ; $MsgID - IN - ; $wParam - IN - ; $lParam - IN - ; ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func WM_Command_Events($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGUI, $MsgID, $wParam $iLAST_PRIMARYDOWN_CTRLID = $lParam Local $nNotifyCode, $nID, $hCtrl Local $retval = $GUI_RUNDEFMSG $nNotifyCode = BitShift($wParam, 16) $nID = BitAND($wParam, 0x0000FFFF) $hCtrl = $lParam Switch $nID Case $lvList Switch $nNotifyCode Case $LBN_DBLCLK $bLVDBLCLICK = True ;Send("{Enter}") _SendMessage($lvControlGui, $WM_COMMAND, _MakeLong2($editCtrl, $LBN_SELCHANGE), $lParam) ;~ _LVUpdate($editCtrl, $__LISTVIEWCTRL, $LVINFO[0], $LVINFO[1]) _LVUpdate2($editCtrl, $__LISTVIEWCTRL2, $LVINFO[0], $LVINFO[1]) Return $GUI_RUNDEFMSG Case $LBN_SELCHANGE If Not $bLVDBLCLICK Then Return 0 Case $LBN_SETFOCUS Case $LBN_KILLFOCUS Case Else EndSwitch Case $lvCombo Switch $nNotifyCode Case $CBN_SELCHANGE Send("{Enter}") EndSwitch Case $handlee[1] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[1] = True Case $EN_KILLFOCUS $fFlag2[1] = True EndSwitch Case $handlee[2] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[2] = True Case $EN_KILLFOCUS $fFlag2[2] = True EndSwitch Case $handlee[3] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[3] = True Case $EN_KILLFOCUS $fFlag2[3] = True EndSwitch Case $handlee[4] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[4] = True Case $EN_KILLFOCUS $fFlag2[4] = True EndSwitch Case $handlee[5] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[5] = True Case $EN_KILLFOCUS $fFlag2[5] = True EndSwitch Case $handlee[6] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[6] = True Case $EN_KILLFOCUS $fFlag2[6] = True EndSwitch Case $handlee[7] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[7] = True Case $EN_KILLFOCUS $fFlag2[7] = True EndSwitch Case $handlee[8] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[8] = True Case $EN_KILLFOCUS $fFlag2[8] = True EndSwitch Case $handlee[9] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[9] = True Case $EN_KILLFOCUS $fFlag2[9] = True EndSwitch Case $handlee[10] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[10] = True Case $EN_KILLFOCUS $fFlag2[10] = True EndSwitch Case $handlee[11] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[11] = True Case $EN_KILLFOCUS $fFlag2[11] = True EndSwitch Case $handlee[12] Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $fFlag[12] = True Case $EN_KILLFOCUS $fFlag2[12] = True EndSwitch Case $przychod Switch $nNotifyCode Case $EN_CHANGE, $EN_SETFOCUS $flaga = True Case $EN_KILLFOCUS $flaga2 = True EndSwitch Case Else EndSwitch If $bCanceled Then $bCanceled = 0 $retval = 0 EndIf Return $retval EndFunc ;==>WM_Command_Events ;=============================================================================== ; Function Name : _MakeLong ; Description : Converts two 16 bit values into on 32 bit value ; Parameter(s) : $LoWord 16bit value ; : $HiWord 16bit value ; Return Value(s) : Long value ; Note(s) : ;=============================================================================== Func _MakeLong($LoWord, $HiWord) Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF)) EndFunc ;==>_MakeLong Func _MakeLong2($LoWord, $HiWord) Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF)) EndFunc ;==>_MakeLong2 ;=============================================================================== ; Function Name : _LVGetInfo ; Description : ; Parameter(s) : $lParam Pointer to $tagNMITEMACTIVE struct ; $iFlag Optional value 0 (default)= fill all fields ; 1 = fill just the latest click location. ; Requirement(s) : ; Return Value(s) : ; User CallTip : ; Author(s) : ; Note(s) : ;=============================================================================== Func _LVGetInfo($lParam, $iFlag = 0) Local $tagNMITEMACTIVATE = DllStructCreate("int;int;int;int;int;int;int;int;int", $lParam) Local $clicked_row = DllStructGetData($tagNMITEMACTIVATE, 4) Local $clicked_col = DllStructGetData($tagNMITEMACTIVATE, 5) If $clicked_col < -1 Then $clicked_col = -1 If $clicked_row < -1 Then $clicked_row = -1 If $clicked_col > _GUICtrlListView_GetColumnCount($__LISTVIEWCTRL) Then $clicked_col = -1 If $clicked_row > _GUICtrlListView_GetItemCount($__LISTVIEWCTRL) Then $clicked_row = -1 $tagNMITEMACTIVATE = 0 If $iFlag = 0 Then _FillLV_Info($__LISTVIEWCTRL, $clicked_row, $clicked_col, $LVINFO) $old_col = $clicked_col EndIf $LVINFO[8] = $clicked_row $LVINFO[9] = $clicked_col ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- EndFunc ;==>_LVGetInfo Func _LVGetInfo2($lParam, $iFlag = 0) Local $tagNMITEMACTIVATE = DllStructCreate("int;int;int;int;int;int;int;int;int", $lParam) Local $clicked_row = DllStructGetData($tagNMITEMACTIVATE, 4) Local $clicked_col = DllStructGetData($tagNMITEMACTIVATE, 5) If $clicked_col < -1 Then $clicked_col = -1 If $clicked_row < -1 Then $clicked_row = -1 If $clicked_col > _GUICtrlListView_GetColumnCount($__LISTVIEWCTRL2) Then $clicked_col = -1 If $clicked_row > _GUICtrlListView_GetItemCount($__LISTVIEWCTRL2) Then $clicked_row = -1 $tagNMITEMACTIVATE = 0 If $iFlag = 0 Then _FillLV_Info2($__LISTVIEWCTRL2, $clicked_row, $clicked_col, $LVINFO) $old_col = $clicked_col EndIf $LVINFO[8] = $clicked_row $LVINFO[9] = $clicked_col ;---------------------------------------------------------------------------------------------- ;---------------------------------------------------------------------------------------------- EndFunc ;==>_LVGetInfo2 ;=============================================================================== ; Function Name: _DebugHeader ; Description: Gary's console debug header. ; Parameter(s): $s_text - IN - ; ; Requirement(s): ; Return Value(s): ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _DebugHeader($s_text) Return _ "!===========================================================" & @LF & _ "+===========================================================" & @LF & _ "-->" & $s_text & @LF & _ "+===========================================================" & @LF EndFunc ;==>_DebugHeader Func _DebugHeader2($s_text) Return _ "!===========================================================" & @LF & _ "+===========================================================" & @LF & _ "-->" & $s_text & @LF & _ "+===========================================================" & @LF EndFunc ;==>_DebugHeader2 ;=============================================================================== ; Function Name: _GetClassName ; Description: get the classname of a ctrl ; Parameter(s): $nCtrl the ctrlId of to get classname for. ; Requirement(s): ; Return Value(s): Classname or 0 on failure ; User CallTip: ; Author(s): Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s): Strips trailing numbers from classname. ;=============================================================================== Func _GetClassName($nCtrl) Local $ret, $struct = DllStructCreate("char[128]"), $classname = 0 $ret = DllCall("user32.dll", "int", "GetClassName", "hwnd", GUICtrlGetHandle($nCtrl), "ptr", DllStructGetPtr($struct), "int", DllStructGetSize($struct)) If IsArray($ret) Then $classname = DllStructGetData($struct, 1) ;ConsoleWrite("Classname="&$classname&@LF) EndIf $struct = 0 Return $classname EndFunc ;==>_GetClassName Func _GetClassName2($nCtrl) Local $ret, $struct = DllStructCreate("char[128]"), $classname = 0 $ret = DllCall("user32.dll", "int", "GetClassName", "hwnd", GUICtrlGetHandle($nCtrl), "ptr", DllStructGetPtr($struct), "int", DllStructGetSize($struct)) If IsArray($ret) Then $classname = DllStructGetData($struct, 1) ;ConsoleWrite("Classname="&$classname&@LF) EndIf $struct = 0 Return $classname EndFunc ;==>_GetClassName2 ;=============================================================================== ; Function Name: vKeyCheck alias for __IsPressedMod ; Description: Gets a key press ; Parameter(s): $dll - IN/OPTIONAL - ; Requirement(s): ; Return Value(s): Return the key that is pressed or 0 ; User CallTip: ; Author(s): ; Note(s): ;=============================================================================== Func _vKeyCheck($dll = "user32.dll") Local $aR, $hexKey, $i Local $vkeys[4] = [1, 13, 27, 113];leftmouse,enter,esc,f2 For $i = 0 To UBound($vkeys) - 1 $hexKey = '0x' & Hex($vkeys[$i], 2) $aR = DllCall($dll, "int", "GetAsyncKeyState", "int", $hexKey) If $aR[0] <> 0 Then Return $vkeys[$i] Next Return 0 EndFunc ;==>_vKeyCheck Func _vKeyCheck2($dll = "user32.dll") Local $aR, $hexKey, $i Local $vkeys[4] = [1, 13, 27, 113];leftmouse,enter,esc,f2 For $i = 0 To UBound($vkeys) - 1 $hexKey = '0x' & Hex($vkeys[$i], 2) $aR = DllCall($dll, "int", "GetAsyncKeyState", "int", $hexKey) If $aR[0] <> 0 Then Return $vkeys[$i] Next Return 0 EndFunc ;==>_vKeyCheck2 ;=============================================================================== ; Function Name : _HasFocus ; Description : Return true if control has focus ; Parameter(s) : $nCtrl Ctrlid to check ; Return Value(s) : True is ctrl has focus, false otherwise. ; User CallTip : ; Author(s) : Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s) : ;=============================================================================== Func _HasFocus($nCtrl) ; If $DebugIt Then ConsoleWrite("_HasFocus>>"&@LF) Local $hwnd If $nCtrl = $lvCombo Then $hwnd = _GetComboInfo($nCtrl, 0) Else $hwnd = GUICtrlGetHandle($nCtrl) EndIf Return ($hwnd = ControlGetHandle($Gui, "", ControlGetFocus($Gui, ""))) EndFunc ;==>_HasFocus Func _HasFocus2($nCtrl) ; If $DebugIt Then ConsoleWrite("_HasFocus>>"&@LF) Local $hwnd If $nCtrl = $lvCombo Then $hwnd = _GetComboInfo2($nCtrl, 0) Else $hwnd = GUICtrlGetHandle($nCtrl) EndIf Return ($hwnd = ControlGetHandle($Gui, "", ControlGetFocus($Gui, ""))) EndFunc ;==>_HasFocus2 ;=============================================================================== ; Function Name : _SetLVCallBack ; Description : ; Parameter(s) : $CallBack Function to use for(primary button) call back defaults to _CancelEdit() ; Return Value(s) : None. ; Author(s) : Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s) : This is used to open other controls and dialogs ;=============================================================================== Func _SetLVCallBack($CallBack = "_CancelEdit") If $CallBack <> "" Then $LVCALLBACK = $CallBack EndFunc ;==>_SetLVCallBack ;=============================================================================== Func _SetLVCallBack2($CallBack = "_CancelEdit") If $CallBack <> "" Then $LVCALLBACK = $CallBack EndFunc ;==>_SetLVCallBack2 ;=============================================================================== ; Function Name : _SetLVContext ; Description : ; Description : ; Parameter(s) : $CallBack Function to use for (secondary button) contexts defaults to _CancelEdit() ; Return Value(s) : None. ; Author(s) : Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s) : This is used to open other controls and dialogs (context menus) ;=============================================================================== Func _SetLVContext($Context = "_CancelEdit") If $Context <> "" Then $LVCONTEXT = $Context EndFunc ;==>_SetLVContext Func _SetLVContext2($Context = "_CancelEdit") If $Context <> "" Then $LVCONTEXT = $Context EndFunc ;==>_SetLVContext2 ;=============================================================================== ; Function Name : _LvHasCheckStyle ; Description : ; Parameter(s) : $hCtrl Listview control to check for $LVS_EX_CHECKBOXES style ; ; Requirement(s) : ; Return Value(s) : ; User CallTip : ; Author(s) : Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s) : ;=============================================================================== Func _LvHasCheckStyle($hCtrl) Local $style = _GUICtrlListView_GetExtendedListViewStyle($hCtrl) if (BitAND($style, $LVS_EX_CHECKBOXES) = $LVS_EX_CHECKBOXES) Then Return True Return False EndFunc ;==>_LvHasCheckStyle ;=============================================================================== Func _LvHasCheckStyle2($hCtrl) Local $style = _GUICtrlListView_GetExtendedListViewStyle($hCtrl) if (BitAND($style, $LVS_EX_CHECKBOXES) = $LVS_EX_CHECKBOXES) Then Return True Return False EndFunc ;==>_LvHasCheckStyle2 ;=============================================================================== ; Function Name : _LvGetCheckedCount ; Description : ; Parameter(s) : $nCtrl Listview control to get checked checkbox count. ; ; Requirement(s) : ; Return Value(s) : number of checked checkboxes, or zero. ; User CallTip : ; Author(s) : Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s) : ;=============================================================================== Func _LvGetCheckedCount($nCtrl) If _LvHasCheckStyle($nCtrl) Then Local $count = 0 For $x = 0 To _GUICtrlListView_GetItemCount($nCtrl) - 1 If _GUICtrlListView_GetItemChecked($nCtrl, $x) Then $count += 1 Next Return $count EndIf Return 0 EndFunc ;==>_LvGetCheckedCount Func _LvGetCheckedCount2($nCtrl) If _LvHasCheckStyle2($nCtrl) Then Local $count = 0 For $x = 0 To _GUICtrlListView_GetItemCount($nCtrl) - 1 If _GUICtrlListView_GetItemChecked($nCtrl, $x) Then $count += 1 Next Return $count EndIf Return 0 EndFunc ;==>_LvGetCheckedCount2 ;=============================================================================== ; Function Name : _GetComboInfo ; Description : ; Parameter(s) : $nCtrl ComboBox control to get info for ; $type 0= return edit hwnd, 1= return list hwnd ; ; Requirement(s) : ; Return Value(s) : return either the combos edit or list hwnd, or zero otherwise ; User CallTip : ; Author(s) : Stephen Podhajecki <gehossafats at netmdc.com/> ; Note(s) : ;=============================================================================== Func _GetComboInfo($nCtrl, $type = 0) ;ConsoleWrite(" _GetClassName:"&_GetClassName($nCtrl)&@LF) If _GetClassName($nCtrl) <> "ComboBox" Then Return 0 Local $ret, $cbInfo, $v_ret $cbInfo = DllStructCreate("int;int[4];int[4];int;int;int;int") DllStructSetData($cbInfo, 1, DllStructGetSize($cbInfo)) $v_ret = DllCall("user32.dll", "int", "GetComboBoxInfo", "hwnd", GUICtrlGetHandle($nCtrl), "ptr", DllStructGetPtr($cbInfo)) If IsArray($v_ret) Then If $type = 0 Then $ret = DllStructGetData($cbInfo, 6);edit handle ;ConsoleWrite("Text ="&WinGetText($ret)&@LF) ElseIf $type = 1 Then $ret = DllStructGetData($cbInfo, 7);list handle EndIf EndIf $cbInfo = 0 Return $ret EndFunc ;==>_GetComboInfo Func _InvalidateRect($hwnd) Local $v_ret = DllCall("user32.dll", "int", "InvalidateRect", "hwnd", $hwnd, "ptr", 0, "int", 1) Return $v_ret[0] EndFunc ;==>_InvalidateRect Func _UpdateWindow($hwnd) Local $v_ret = DllCall("user32.dll", "int", "UpdateWindow", "hwnd", $hwnd) Return $v_ret[0] EndFunc ;==>_UpdateWindow ;;;ripped from help file. ; Convert the client (GUI) coordinates to screen (desktop) coordinates Func ClientToScreen($hwnd, ByRef $x, ByRef $y) Local $stPoint = DllStructCreate("int;int") DllStructSetData($stPoint, 1, $x) DllStructSetData($stPoint, 2, $y) DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hwnd, "ptr", DllStructGetPtr($stPoint)) $x = DllStructGetData($stPoint, 1) $y = DllStructGetData($stPoint, 2) ; release Struct not really needed as it is a local $stPoint = 0 EndFunc ;==>ClientToScreen Func _HiWord($x) Return BitShift($x, 16) EndFunc ;==>_HiWord Func _LoWord($x) Return BitAND($x, 0xFFFF) EndFunc ;==>_LoWord Edited November 22, 2010 by ZwinnyRolnik
ZwinnyRolnik Posted November 22, 2010 Author Posted November 22, 2010 (edited) expandcollapse popupFunc _GetComboInfo2($nCtrl, $type = 0) ;ConsoleWrite(" _GetClassName:"&_GetClassName($nCtrl)&@LF) If _GetClassName2($nCtrl) <> "ComboBox" Then Return 0 Local $ret, $cbInfo, $v_ret $cbInfo = DllStructCreate("int;int[4];int[4];int;int;int;int") DllStructSetData($cbInfo, 1, DllStructGetSize($cbInfo)) $v_ret = DllCall("user32.dll", "int", "GetComboBoxInfo", "hwnd", GUICtrlGetHandle($nCtrl), "ptr", DllStructGetPtr($cbInfo)) If IsArray($v_ret) Then If $type = 0 Then $ret = DllStructGetData($cbInfo, 6);edit handle ;ConsoleWrite("Text ="&WinGetText($ret)&@LF) ElseIf $type = 1 Then $ret = DllStructGetData($cbInfo, 7);list handle EndIf EndIf $cbInfo = 0 Return $ret EndFunc ;==>_GetComboInfo2 Func _InvalidateRect2($hwnd) Local $v_ret = DllCall("user32.dll", "int", "InvalidateRect", "hwnd", $hwnd, "ptr", 0, "int", 1) Return $v_ret[0] EndFunc ;==>_InvalidateRect2 Func _UpdateWindow2($hwnd) Local $v_ret = DllCall("user32.dll", "int", "UpdateWindow", "hwnd", $hwnd) Return $v_ret[0] EndFunc ;==>_UpdateWindow2 ;;;ripped from help file. ; Convert the client (GUI) coordinates to screen (desktop) coordinates Func ClientToScreen2($hwnd, ByRef $x, ByRef $y) Local $stPoint = DllStructCreate("int;int") DllStructSetData($stPoint, 1, $x) DllStructSetData($stPoint, 2, $y) DllCall("user32.dll", "int", "ClientToScreen", "hwnd", $hwnd, "ptr", DllStructGetPtr($stPoint)) $x = DllStructGetData($stPoint, 1) $y = DllStructGetData($stPoint, 2) ; release Struct not really needed as it is a local $stPoint = 0 EndFunc ;==>ClientToScreen2 Func _HiWord2($x) Return BitShift($x, 16) EndFunc ;==>_HiWord2 Func _LoWord2($x) Return BitAND($x, 0xFFFF) EndFunc ;==>_LoWord2 Func obliczeniabezp($iRow, $iCol, $newText, $sss = 0) For $ko = $kolumn + 2 To 2 Step -1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $ko) = "Razem" Then ExitLoop Next Local $wart Local $iloscjm = 0 Local $rok = '' Local $razem = 0 Local $kfkd = True $pozycjai = 0 For $i = 2 To $ko If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $i) = "wartość j.m" Then If $kfkd Then $pozycjai = $i $kfkd = False EndIf $wart = '' $iloscjm = 0 $wart = StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $iRow, $i), 2), ',', '.'), " ", "") ContinueLoop EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $i) = "ilość j.m" Then Local $dod = StringReplace(_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $iRow, $i), " ", "") If $dod = '' Then $dod = 0 $iloscjm += $dod If $i = $iCol Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $iCol) = "wartość j.m" Then Local $nowlasnieto = $dod * $wart $nowlasnieto = StringReplace($nowlasnieto, " ", "") $nowlasnieto = StringReplace($nowlasnieto, ".", ",") If StringInStr($nowlasnieto, " ") = 0 Then Local $dl22 = StringLen($nowlasnieto) Local $kohh = StringInStr($nowlasnieto, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($nowlasnieto, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $hy = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $hy > 0 Then Local $left = StringLeft($nowlasnieto, $hy) $nowlasnieto = StringTrimLeft($nowlasnieto, $hy) $nowlasnieto = $left & " " & $nowlasnieto EndIf Next EndIf If StringInStr($nowlasnieto, ",") = 0 Then $nowlasnieto = $nowlasnieto & ",00" If $nowlasnieto = ',00' Then $nowlasnieto = "0,00" Else Local $poz22 = StringInStr($nowlasnieto, ",") Local $dl22 = StringLen($nowlasnieto) If $dl22 - $poz22 = 1 Then $nowlasnieto = $nowlasnieto & "0" If $dl22 - $poz22 = 0 Then $nowlasnieto = $nowlasnieto & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $iRow, $nowlasnieto & "zł", $i - $pozycjai + 2) EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $i + 1) <> "ilość j.m" Then $razem += $wart * $iloscjm EndIf ContinueLoop EndIf Next $razem = StringReplace($razem, " ", "") $razem = StringReplace($razem, ".", ",") If StringInStr($razem, " ") = 0 Then Local $dl22 = StringLen($razem) Local $kohh = StringInStr($razem, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($razem, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($razem, $i) $razem = StringTrimLeft($razem, $i) $razem = $left & " " & $razem EndIf Next EndIf If StringInStr($razem, ",") = 0 Then $razem = $razem & ",00" If $razem = ',00' Then $razem = "0,00" Else Local $poz22 = StringInStr($razem, ",") Local $dl22 = StringLen($razem) If $dl22 - $poz22 = 1 Then $razem = $razem & "0" If $dl22 - $poz22 = 0 Then $razem = $razem & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL, $iRow, $razem & "zł", $ko) ; dalej Local $sumowanie = 0 Local $qoq = 0 $kosztybezpbezcf = 0 For $s = 2 To _GUICtrlListView_GetItemCount($__LISTVIEWCTRL) + 1 $qoq = StringTrimRight(StringReplace(StringReplace(_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $s, $ko), " ", ""), ',', '.'), 2) If $qoq = '' Then $qoq = 0 $sumowanie += $qoq If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $s, 2) = "TAK" Then $kosztybezpbezcf += $qoq EndIf Next $sumowanie = StringReplace($sumowanie, " ", "") $sumowanie = StringReplace($sumowanie, ".", ",") If StringInStr($sumowanie, " ") = 0 Then Local $dl22 = StringLen($sumowanie) Local $kohh = StringInStr($sumowanie, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($sumowanie, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($sumowanie, $i) $sumowanie = StringTrimLeft($sumowanie, $i) $sumowanie = $left & " " & $sumowanie EndIf Next EndIf If StringInStr($sumowanie, ",") = 0 Then $sumowanie = $sumowanie & ",00" If $sumowanie = ',00' Then $sumowanie = "0,00" Else Local $poz22 = StringInStr($sumowanie, ",") Local $dl22 = StringLen($sumowanie) If $dl22 - $poz22 = 1 Then $sumowanie = $sumowanie & "0" If $dl22 - $poz22 = 0 Then $sumowanie = $sumowanie & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL, 1, $sumowanie & "zł", $ko) $kosztybezp = $sumowanie For $i = $ko To $ko If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $iHeader_Width) EndIf Next EndFunc ;==>obliczeniabezp Func obliczanieraportu() Local $wart Local $kfkd = True Local $razem Local $gg2 Local $kosztyposrednie = 0 Local $ko = _GUICtrlListView_GetColumnCount($__LISTVIEWCTRL) - 1 For $j = 3 To $ko - 1 For $wiersz = 2 To _GUICtrlListView_GetItemCount($__LISTVIEWCTRL3) - 1 If $jakiklikniety[$j][$wiersz] = True Then $jakiklikniety[$j][$wiersz] = False Local $a = _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $j) Local $b = 0 Local $c = 0 If StringInStr($a, 'warto') <> 0 Then Local $jj = $j - $pozycjai + 3 For $susu = $jj To $jj + 13 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $susu), '(') <> 0 Then Local $wspolx3 = $wiersz Local $wspoly3 = $susu Local $dl22 = StringLen($B) Local $kohh = StringInStr($b, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($b, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($b, $i) $b = StringTrimLeft($b, $i) $b = $left & " " & $b EndIf Next If $b = '' Then $b = 0 If StringInStr($b, ",") = 0 Then $b = $b & ",00" If $b = ',00' Then $b = "0,00" Else Local $poz22 = StringInStr($b, ",") Local $dl22 = StringLen($B) If $dl22 - $poz22 = 1 Then $b = $b & "0" If $dl22 - $poz22 = 0 Then $b = $b & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $wspolx3, $b & "zł", $wspoly3) Local $d = 0 ; tutaj obliczanie kazdego cella od gory do dolu For $kj = $wiersz - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0), '--') <> 0 Then Local $wspolx2 = $kj Local $wspoly2 = $susu ExitLoop EndIf $d = $d + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, $susu), 2), ',', '.'), " ", "") Next $d = $d + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, $susu), 2), ',', '.'), " ", "") For $kj = $wiersz + 1 To 200 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0), '--') <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0) = '' Then ExitLoop $d = $d + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, $susu), 2), ',', '.'), " ", "") Next $d = StringReplace($d, ".", ",") Local $dl22 = StringLen($d) Local $kohh = StringInStr($d, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($d, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($d, $i) $d = StringTrimLeft($d, $i) $d = $left & " " & $d EndIf Next If $d = '' Then $d = 0 If StringInStr($d, ",") = 0 Then $d = $d & ",00" If $d = ',00' Then $d = "0,00" Else Local $poz22 = StringInStr($d, ",") Local $dl22 = StringLen($d) If $dl22 - $poz22 = 1 Then $d = $d & "0" If $dl22 - $poz22 = 0 Then $d = $d & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $wspolx2, $d & "zł", $wspoly2) ;koniec obliczania od gora dol ;tera obliczanie tego na dole zeby Local $razemjazda = 0 For $szz = 1 To $liczebka[0] Step 2 For $haha = $liczebka[$szz] - 1 To $liczebka[$szz] - 1 $razemjazda = $razemjazda + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $haha, $susu), 2), ',', '.'), " ", "") Next Next $razemjazda = StringReplace($razemjazda, ".", ",") Local $dl22 = StringLen($razemjazda) Local $kohh = StringInStr($razemjazda, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($razemjazda, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($razemjazda, $i) $razemjazda = StringTrimLeft($razemjazda, $i) $razemjazda = $left & " " & $razemjazda EndIf Next If $razemjazda = '' Then $razemjazda = 0 If StringInStr($razemjazda, ",") = 0 Then $razemjazda = $razemjazda & ",00" If $razemjazda = ',00' Then $razemjazda = "0,00" Else Local $poz22 = StringInStr($razemjazda, ",") Local $dl22 = StringLen($razemjazda) If $dl22 - $poz22 = 1 Then $razemjazda = $razemjazda & "0" If $dl22 - $poz22 = 0 Then $razemjazda = $razemjazda & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $liczebka[$liczebka[0] + 1] + 2, $razemjazda & "zł", $susu) ; koniec obliczania ExitLoop Else $jakiklikniety[$susu + $pozycjai - 3][$wiersz] = False $b = $b + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, $susu), 2), ',', '.'), " ", "") Local $d = 0 ; tutaj obliczanie kazdego cella od gory do dolu For $kj = $wiersz - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0), '--') <> 0 Then Local $wspolx = $kj Local $wspoly = $susu ExitLoop EndIf $d = $d + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, $susu), 2), ',', '.'), " ", "") Next $d = $d + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, $susu), 2), ',', '.'), " ", "") For $kj = $wiersz + 1 To 200 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0), '--') <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0) = '' Then ExitLoop $d = $d + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, $susu), 2), ',', '.'), " ", "") Next $d = StringReplace($d, ".", ",") Local $dl22 = StringLen($d) Local $kohh = StringInStr($d, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($d, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($d, $i) $d = StringTrimLeft($d, $i) $d = $left & " " & $d EndIf Next If $d = '' Then $d = 0 If StringInStr($d, ",") = 0 Then $d = $d & ",00" If $d = ',00' Then $d = "0,00" Else Local $poz22 = StringInStr($d, ",") Local $dl22 = StringLen($d) If $dl22 - $poz22 = 1 Then $d = $d & "0" If $dl22 - $poz22 = 0 Then $d = $d & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $wspolx, $d & "zł", $wspoly) ;koniec obliczania od gora dol ;tera obliczanie tego na dole zeby Local $razemjazda = 0 For $szz = 1 To $liczebka[0] Step 2 For $haha = $liczebka[$szz] - 1 To $liczebka[$szz] - 1 $razemjazda = $razemjazda + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $haha, $susu), 2), ',', '.'), " ", "") Next Next $razemjazda = StringReplace($razemjazda, ".", ",") Local $dl22 = StringLen($razemjazda) Local $kohh = StringInStr($razemjazda, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($razemjazda, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($razemjazda, $i) $razemjazda = StringTrimLeft($razemjazda, $i) $razemjazda = $left & " " & $razemjazda EndIf Next If $razemjazda = '' Then $razemjazda = 0 If StringInStr($razemjazda, ",") = 0 Then $razemjazda = $razemjazda & ",00" If $razemjazda = ',00' Then $razemjazda = "0,00" Else Local $poz22 = StringInStr($razemjazda, ",") Local $dl22 = StringLen($razemjazda) If $dl22 - $poz22 = 1 Then $razemjazda = $razemjazda & "0" If $dl22 - $poz22 = 0 Then $razemjazda = $razemjazda & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $liczebka[$liczebka[0] + 1] + 2, $razemjazda & "zł", $susu) ; koniec obliczania EndIf Next ;~ MsgBox(0, '', _GUICtrlListView_GetItemText($__LISTVIEWCTRL3,0,$susu)) ; tu jesli wartosc.j.m Else ;tu jesli ilosc.jm Local $jj = $j - $pozycjai + 2 For $kj = $wiersz - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0), '--') <> 0 Then Local $wspolx = $kj Local $wspoly = $jj ExitLoop EndIf $b = $b + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, $jj), 2), ',', '.'), " ", "") Next $b = $b + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, $jj), 2), ',', '.'), " ", "") For $kj = $wiersz + 1 To 200 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0), '--') <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, 0) = '' Then ExitLoop $b = $b + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $kj, $jj), 2), ',', '.'), " ", "") Next $b = StringReplace($b, ".", ",") Local $dl22 = StringLen($B) Local $kohh = StringInStr($b, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($b, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($b, $i) $b = StringTrimLeft($b, $i) $b = $left & " " & $b EndIf Next If $b = '' Then $b = 0 If StringInStr($b, ",") = 0 Then $b = $b & ",00" If $b = ',00' Then $b = "0,00" Else Local $poz22 = StringInStr($b, ",") Local $dl22 = StringLen($B) If $dl22 - $poz22 = 1 Then $b = $b & "0" If $dl22 - $poz22 = 0 Then $b = $b & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $wspolx, $b & "zł", $wspoly) ; jedno na gorze czyli od srodka w gore i dol Local $razemjazda = 0 For $szz = 1 To $liczebka[0] Step 2 For $haha = $liczebka[$szz] - 1 To $liczebka[$szz] - 1 $razemjazda = $razemjazda + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $haha, $jj), 2), ',', '.'), " ", "") Next Next $razemjazda = StringReplace($razemjazda, ".", ",") Local $dl22 = StringLen($razemjazda) Local $kohh = StringInStr($razemjazda, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($razemjazda, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($razemjazda, $i) $razemjazda = StringTrimLeft($razemjazda, $i) $razemjazda = $left & " " & $razemjazda EndIf Next If $razemjazda = '' Then $razemjazda = 0 If StringInStr($razemjazda, ",") = 0 Then $razemjazda = $razemjazda & ",00" If $razemjazda = ',00' Then $razemjazda = "0,00" Else Local $poz22 = StringInStr($razemjazda, ",") Local $dl22 = StringLen($razemjazda) If $dl22 - $poz22 = 1 Then $razemjazda = $razemjazda & "0" If $dl22 - $poz22 = 0 Then $razemjazda = $razemjazda & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $liczebka[$liczebka[0] + 1] + 2, $razemjazda & "zł", $jj) ; tera od lewego w prawo For $kj = $jj - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $kj), '(') <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $kj) = '' Then ExitLoop $c = $c + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, $kj), 2), ',', '.'), " ", "") Next $c = $c + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, $jj), 2), ',', '.'), " ", "") For $kj = $jj + 1 To 50 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $kj), '(') <> 0 Then Local $wspolx = $wiersz Local $wspoly = $kj ExitLoop EndIf $c = $c + StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, $kj), 2), ',', '.'), " ", "") Next $c = StringReplace($c, ".", ",") Local $dl22 = StringLen($c) Local $kohh = StringInStr($c, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($c, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($c, $i) $c = StringTrimLeft($c, $i) $c = $left & " " & $c EndIf Next If $c = '' Then $c = 0 If StringInStr($c, ",") = 0 Then $c = $c & ",00" If $c = ',00' Then $c = "0,00" Else Local $poz22 = StringInStr($c, ",") Local $dl22 = StringLen($c) If $dl22 - $poz22 = 1 Then $c = $c & "0" If $dl22 - $poz22 = 0 Then $c = $c & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $wspolx, $c & "zł", $wspoly) EndIf EndIf Next Next ;~ ;~ ;~ $wszystkostop = True ;~ ProgressOn("Trwa obliczanie", "", "0 procent") ;~ _GUICtrlListView_BeginUpdate($__LISTVIEWCTRL3) ;~ Local $wart ;~ Local $kfkd = True ;~ Local $razem ;~ Local $pozycjai = 0 ;~ Local $gg2 ;~ Local $kosztyposrednie = 0 ;~ Local $ko = _GUICtrlListView_GetColumnCount($__LISTVIEWCTRL3) ;~ Local $gg = Round((_GUICtrlListView_GetItemCount($__LISTVIEWCTRL3) - 1) * ($ko - 1)) ;~ Local $szz = -1 ;~ For $j = 3 To $ko - 1 ;~ $gg2 = Round((((_GUICtrlListView_GetItemCount($__LISTVIEWCTRL3) - 1) * $j) / $gg) * 100) ;~ ProgressSet($gg2, $gg2 & " procent") ;~ $szz = $szz + 2 ;~ for $szz = 1 to $liczebka[0] step 2 ;~ For $wiersz = $liczebka[$szz]-1 To $liczebka[$szz]-1 ;~ if $wiersz > $liczebka[$liczebka[0]+1] then ExitLoop ;~ If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $wiersz, 0), '--') <> 0 Then ;~ Local $ktory = $wiersz ;~ $razem = '' ;~ For $ks = $wiersz + 1 To 200 ;~ If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $ks, 0), '--') <> 0 Then ExitLoop ;~ $wart = '' ;~ $wart = StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, $ks, $j), 2), ',', '.'), " ", "") ;~ if $wart = '' then ;~ $wart = 0 ;~ _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $ks, "0,00zł",$j) ;~ EndIf ;~ $razem += $wart ;~ Next ;~ $razem = StringReplace($razem, ".", ",") ;~ Local $dl22 = StringLen($razem) ;~ Local $kohh = StringInStr($razem, ",") ;~ Local $wiadomo2 = 0 ;~ If $kohh <> 0 Then ;~ $wiadomo2 = StringTrimLeft($razem, $kohh) ;~ $wiadomo2 = StringLen($wiadomo2) + 1 ;~ EndIf ;~ For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 ;~ If $i > 0 Then ;~ Local $left = StringLeft($razem, $i) ;~ $razem = StringTrimLeft($razem, $i) ;~ $razem = $left & " " & $razem ;~ EndIf ;~ Next ;~ If StringInStr($razem, ",") = 0 Then ;~ $razem = $razem & ",00" ;~ If $razem = ',00' Then $razem = "0,00" ;~ Else ;~ Local $poz22 = StringInStr($razem, ",") ;~ Local $dl22 = StringLen($razem) ;~ If $dl22 - $poz22 = 1 Then $razem = $razem & "0" ;~ If $dl22 - $poz22 = 0 Then $razem = $razem & "00" ;~ EndIf ;~ _GUICtrlListView_SetItemText($__LISTVIEWCTRL3, $ktory, $razem & "zł", $j) ;~ EndIf ;~ Next ;~ Next ;~ Next ;~ If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $j) = "ilość j.m" Then ;~ Local $dod = StringReplace(_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $wiersz, $j), " ", "") ;~ If $dod = '' Then $dod = 0 ;~ $dod = $dod * $wart ;~ $razem += $dod ;~ If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $wiersz, 0), '--') <> 0 Then ;~ $ilemazad[$wiersz][$j] += $dod ;~ EndIf For $i = 3 To $ko _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL3, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL3, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL3, $i, $iHeader_Width) EndIf Next For $ii = 3 To $ko If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $ii), "(") <> 0 Then Local $juzpo = StringTrimLeft(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $ii), 1), 1) $juzpo = Number($juzpo) - 1500 If $roki[$juzpo] = True Then $roki[$juzpo] = True For $i = $ii - 1 To 0 Step -1 If StringInStr(_GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $i), "(") <> 0 Or _GUICtrlListView_GetItemText($__LISTVIEWCTRL3, 0, $i) = "" Then ExitLoop _GUICtrlListView_HideColumn($__LISTVIEWCTRL3, $i) Next _GUICtrlListView_SetColumn($__LISTVIEWCTRL3, $ii, "Rozwiń") EndIf EndIf Next _GUICtrlListView_EndUpdate($__LISTVIEWCTRL3) ;~ ProgressOff() $wszystkostop = False ;~ for $i = 0 to 199 ;~ for $j = 0 to 199 ;~ $jakiklikniety[$i][$j] = False ;~ Next ;~ Next EndFunc ;==>obliczanieraportu Func obliczenierazem() For $ko = $kolumn + 2 To 2 Step -1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, 0, $ko) = "Razem" Then ExitLoop Next ;dalej Local $sumowanie = 0 Local $qoq = 0 $kosztybezpbezcf = 0 For $s = 2 To _GUICtrlListView_GetItemCount($__LISTVIEWCTRL) + 1 $qoq = StringTrimRight(StringReplace(StringReplace(_GUICtrlListView_GetItemText($__LISTVIEWCTRL, $s, $ko), " ", ""), ',', '.'), 2) If $qoq = '' Then $qoq = 0 $sumowanie += $qoq If _GUICtrlListView_GetItemText($__LISTVIEWCTRL, $s, 2) = "TAK" Then $kosztybezpbezcf += $qoq EndIf Next $sumowanie = StringReplace($sumowanie, " ", "") $sumowanie = StringReplace($sumowanie, ".", ",") If StringInStr($sumowanie, " ") = 0 Then Local $dl22 = StringLen($sumowanie) Local $kohh = StringInStr($sumowanie, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($sumowanie, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($sumowanie, $i) $sumowanie = StringTrimLeft($sumowanie, $i) $sumowanie = $left & " " & $sumowanie EndIf Next EndIf If StringInStr($sumowanie, ",") = 0 Then $sumowanie = $sumowanie & ",00" If $sumowanie = ',00' Then $sumowanie = "0,00" Else Local $poz22 = StringInStr($sumowanie, ",") Local $dl22 = StringLen($sumowanie) If $dl22 - $poz22 = 1 Then $sumowanie = $sumowanie & "0" If $dl22 - $poz22 = 0 Then $sumowanie = $sumowanie & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL, 1, $sumowanie & "zł", $ko) $kosztybezp = $sumowanie GUICtrlSetData($inputkosztybezp, $sumowanie & "zł") Local $asdas = Round(StringReplace(StringReplace($sumowanie, " ", ""), ",", ".") - $kosztybezpbezcf, 2) $kosztybezpbezcf = StringReplace($kosztybezpbezcf, " ", "") $kosztybezpbezcf = StringReplace($kosztybezpbezcf, ".", ",") If StringInStr($kosztybezpbezcf, " ") = 0 Then Local $dl22 = StringLen($kosztybezpbezcf) Local $kohh = StringInStr($kosztybezpbezcf, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($kosztybezpbezcf, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($kosztybezpbezcf, $i) $kosztybezpbezcf = StringTrimLeft($kosztybezpbezcf, $i) $kosztybezpbezcf = $left & " " & $kosztybezpbezcf EndIf Next EndIf If StringInStr($kosztybezpbezcf, ",") = 0 Then $kosztybezpbezcf = $kosztybezpbezcf & ",00" If $kosztybezpbezcf = ',00' Then $kosztybezpbezcf = "0,00" Else Local $poz22 = StringInStr($kosztybezpbezcf, ",") Local $dl22 = StringLen($kosztybezpbezcf) If $dl22 - $poz22 = 1 Then $kosztybezpbezcf = $kosztybezpbezcf & "0" If $dl22 - $poz22 = 0 Then $kosztybezpbezcf = $kosztybezpbezcf & "00" EndIf GUICtrlSetData($cfinput, $kosztybezpbezcf & "zł") $asdas = StringReplace($asdas, " ", "") $asdas = StringReplace($asdas, ".", ",") If StringInStr($asdas, " ") = 0 Then Local $dl22 = StringLen($asdas) Local $kohh = StringInStr($asdas, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($asdas, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($asdas, $i) $asdas = StringTrimLeft($asdas, $i) $asdas = $left & " " & $asdas EndIf Next EndIf If StringInStr($asdas, ",") = 0 Then $asdas = $asdas & ",00" If $asdas = ',00' Then $asdas = "0,00" Else Local $poz22 = StringInStr($asdas, ",") Local $dl22 = StringLen($asdas) If $dl22 - $poz22 = 1 Then $asdas = $asdas & "0" If $dl22 - $poz22 = 0 Then $asdas = $asdas & "00" EndIf GUICtrlSetData($bezpminuscf, $asdas & "zł") For $i = $ko To $ko If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL, $i, $iHeader_Width) EndIf Next EndFunc ;==>obliczenierazem Func obliczeniabezp2($iRow, $iCol, $newText, $sss = 0) For $ko = $kolumn + 2 To 2 Step -1 If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 0, $ko) = "Razem" Then ExitLoop Next Local $wart Local $iloscjm = 0 Local $rok = '' Local $razem = 0 Local $dod For $j = 2 To $ko If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $j) = "Ilość j." Then $dod = '' $dod = StringReplace(_GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $iRow, $j), " ", "") If $dod = '' Then $dod = 0 ContinueLoop EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $j) = "Koszt j." Then $wart = '' $wart = StringReplace(StringReplace(StringTrimRight(_GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $iRow, $j), 2), ',', '.'), " ", "") ContinueLoop EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $j) = "Łącznie" Then $rok = $dod * $wart $razem += $rok $rok = StringReplace($rok, " ", "") $rok = StringReplace($rok, ".", ",") If StringInStr($rok, " ") = 0 Then Local $dl22 = StringLen($rok) Local $kohh = StringInStr($rok, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($rok, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($rok, $i) $rok = StringTrimLeft($rok, $i) $rok = $left & " " & $rok EndIf Next EndIf If StringInStr($rok, ",") = 0 Then $rok = $rok & ",00" If $rok = ',00' Then $rok = "0,00" Else Local $poz22 = StringInStr($rok, ",") Local $dl22 = StringLen($rok) If $dl22 - $poz22 = 1 Then $rok = $rok & "0" If $dl22 - $poz22 = 0 Then $rok = $rok & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, $rok & "zł", $j) ContinueLoop EndIf If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 0, $j) = "Razem" Then $razem = StringReplace($razem, " ", "") $razem = StringReplace($razem, ".", ",") If StringInStr($razem, " ") = 0 Then Local $dl22 = StringLen($razem) Local $kohh = StringInStr($razem, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($razem, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($razem, $i) $razem = StringTrimLeft($razem, $i) $razem = $left & " " & $razem EndIf Next EndIf If StringInStr($razem, ",") = 0 Then $razem = $razem & ",00" If $razem = ',00' Then $razem = "0,00" Else Local $poz22 = StringInStr($razem, ",") Local $dl22 = StringLen($razem) If $dl22 - $poz22 = 1 Then $razem = $razem & "0" If $dl22 - $poz22 = 0 Then $razem = $razem & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, $iRow, $razem & "zł", $j) EndIf Next ; dalej Local $sumowanie = 0 Local $qoq = 0 For $s = 2 To _GUICtrlListView_GetItemCount($__LISTVIEWCTRL2) + 1 $qoq = StringTrimRight(StringReplace(StringReplace(_GUICtrlListView_GetItemText($__LISTVIEWCTRL2, $s, $ko), " ", ""), ',', '.'), 2) If $qoq = '' Then $qoq = 0 $sumowanie += $qoq Next $sumowanie = StringReplace($sumowanie, " ", "") $sumowanie = StringReplace($sumowanie, ".", ",") If StringInStr($sumowanie, " ") = 0 Then Local $dl22 = StringLen($sumowanie) Local $kohh = StringInStr($sumowanie, ",") Local $wiadomo2 = 0 If $kohh <> 0 Then $wiadomo2 = StringTrimLeft($sumowanie, $kohh) $wiadomo2 = StringLen($wiadomo2) + 1 EndIf For $i = $dl22 - 3 - $wiadomo2 To 0 Step -3 If $i > 0 Then Local $left = StringLeft($sumowanie, $i) $sumowanie = StringTrimLeft($sumowanie, $i) $sumowanie = $left & " " & $sumowanie EndIf Next EndIf If StringInStr($sumowanie, ",") = 0 Then $sumowanie = $sumowanie & ",00" If $sumowanie = ',00' Then $sumowanie = "0,00" Else Local $poz22 = StringInStr($sumowanie, ",") Local $dl22 = StringLen($sumowanie) If $dl22 - $poz22 = 1 Then $sumowanie = $sumowanie & "0" If $dl22 - $poz22 = 0 Then $sumowanie = $sumowanie & "00" EndIf _GUICtrlListView_SetItemText($__LISTVIEWCTRL2, 1, $sumowanie & "zł", $ko) For $i = $ko To $ko If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $iHeader_Width) EndIf Next For $j = 2 To $ko If _GUICtrlListView_GetItemText($__LISTVIEWCTRL2, 1, $j) = "Łącznie" Then For $i = $j To $j If $i = 1 Then ContinueLoop EndIf _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE_USEHEADER) $iHeader_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $LVSCW_AUTOSIZE) $iData_Width = _GUICtrlListView_GetColumnWidth($__LISTVIEWCTRL2, $i) If $iHeader_Width > $iData_Width Then _GUICtrlListView_SetColumnWidth($__LISTVIEWCTRL2, $i, $iHeader_Width) EndIf Next EndIf Next EndFunc ;==>obliczeniabezp2 Func _GUICtrlListView_EnsureVisibleEx($hwnd, $iIndex, $iSubItem = 0, $fPartialOK = False) ;funkey April 15, 2010 If Not IsHWnd($hwnd) Then $hwnd = GUICtrlGetHandle($hwnd) _SendMessage($hwnd, $LVM_ENSUREVISIBLE, $iIndex, $fPartialOK) Local $aRect = _GUICtrlListView_GetItemRect($hwnd, $iSubItem) Local $iPixel For $i = 0 To $iSubItem - 2 ; 2 means: show at second visible column $iPixel += _GUICtrlListView_GetColumnWidth($hwnd, $i) Next _GUICtrlListView_Scroll($hwnd, $iPixel + $aRect[0], 0) EndFunc ;==>_GUICtrlListView_EnsureVisibleExAnd load file hereSorry for chaos, just look at Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam)And sorry for polish words. Please help me with this slow scrolling.Zwinnyedit:sorry for 4 parts but it's still writing "You must enter the post" or still giving error Edited November 22, 2010 by ZwinnyRolnik
PsaltyDS Posted November 22, 2010 Posted November 22, 2010 (edited) There is a particularly annoying legal tactic used by less-than-scrupulous lawyers called the document dump. It's intended to overwhelm the target with mounds of useless info in order to prevent them from getting anything useful out of it. Don't do a "script dump". Let's get to a demo script that is as short as possible while reaching your current issue. Here is a simple demo that has a 50 x 45 listview, and triggers on Begin/End scroll events of that listview. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiListView.au3> Global $Gui, $hListView, $iWM_Notify = 0 $Gui = GUICreate("Edit", 800, 600) ConsoleWrite("$Gui = " & $Gui & @LF) $hListView = _GUICtrlListView_Create($Gui, "Column 0", 10, 10, 780, 580) ConsoleWrite("$hListView = " & $hListView & @LF) _GUICtrlListView_SetColumnWidth($hListView, 0, 100) For $c = 1 To 44 ; 45 columns _GUICtrlListView_AddColumn($hListView, "Column " & $c, 100) Next For $r = 0 To 49 ; 50 rows _GUICtrlListView_AddItem($hListView, "Row " & $r & " Col 0") For $c = 1 To 44 _GUICtrlListView_SetItemText($hListView, $r, "Row " & $r & " Col " & $c, $c) Next Next GUISetState(@SW_SHOW, $Gui) GUIRegisterMsg($WM_NOTIFY, "WM_Notify_Events") While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd Func WM_Notify_Events($hWndGUI, $MsgID, $wParam, $lParam) #forceref $hWndGUI, $MsgID, $wParam Local $tagNMHDR, $pressed, $event, $retval = $GUI_RUNDEFMSG, $idFrom, $from, $event If $hWndGUI = $Gui Then $iWM_Notify += 1 $tagNMHDR = DllStructCreate("hwnd;int;int", $lParam) ; NMHDR (hwndFrom, idFrom, code) $from = DllStructGetData($tagNMHDR, 1) $idFrom = DllStructGetData($tagNMHDR, 2) $event = DllStructGetData($tagNMHDR, 3) If $from = $hListView Then Switch $event Case $LVN_BEGINSCROLL ConsoleWrite("DEBUG: WM_Notify_Events = " & $iWM_Notify & " $from = " & $from & " $event = " & $event & " ($LVN_BEGINSCROLL)" & @LF) Case $LVN_ENDSCROLL ConsoleWrite("DEBUG: WM_Notify_Events = " & $iWM_Notify & " $from = " & $from & " $event = " & $event & " ($LVN_ENDSCROLL)" & @LF) EndSwitch EndIf EndIf EndFunc ;==>WM_Notify_Events Now, what's supposed to happen next (when the listview gets scrolled)? P.S. One thing that would certainly need changing is the length of your event handler function. It is way too long. Events must be handled very fast, or they start overlapping/interrupting each other. Edited November 22, 2010 by PsaltyDS Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Tvern Posted November 22, 2010 Posted November 22, 2010 I did a syntax check on that script and ran into over about 150 errors, mostly caused by strings without quotes around them. ^^ I'll go back to my trolling now.
ZwinnyRolnik Posted November 23, 2010 Author Posted November 23, 2010 (edited) Ok, I'll try to do a demo as I get home. But back to the first question - is the possibility to use the GUIRegisterMsg($WM_VSCROLL, "WM_VSCROLL") in the listview? Working on this program four months so thank you very much for your interest. The biggest mistake of the program is precisely that scrolling is so slow. PS. I changed my handler function of few characters, but still scrolling is very slow. I am sure that is wine - WM_notify edit: That's why I want to disable 'wm_notify' when scrolling Edited November 23, 2010 by ZwinnyRolnik
PsaltyDS Posted November 23, 2010 Posted November 23, 2010 (edited) I don't know how. I am not enough of an expert to say it "can't" be done, but I know enough to say it "shouldn't" be done. Faster message handling is very doable, and the sort itself shouldn't happen inside the handler. Just trigger a flag or AdLib function that performs that outside the message handler. And what's the point anyway? You want the ListView to get sorted every time it gets scrolled? How does that make sense functionally, or am I missing what action you want the scroll to trigger? Edited November 23, 2010 by PsaltyDS Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
ZwinnyRolnik Posted November 23, 2010 Author Posted November 23, 2010 "You want the ListView to get sorted every time it gets scrolled?" no no no... I just want, when I'm scrolling to disable this function (wm_notify) because it slows My listview. Sorry for bad english. And i can't make a demo. I can winrar my program and upload here
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now