Jump to content

Gui flickering with _GUIScrollbars_Generate


Recommended Posts

Hello,

For some time I've been using the UDF from Melba23 called 'GUIScrollbars_Ex.au3' (no modifications) to add scrollbars when a specific gui was getting too large (many controls).

It works like a charm except for when I'm using a lot of controls on the gui. That seems to make the creation of the gui flicker somewhat.

I've been looking around here to find a possible solution, but until now I did not find any.

Here is a simplified (....) version of the script, so the amount of controls is the same, but the data shown is minimal.

When I outcomment line 275 (the _GUIScrollbars_Generate part) it does not flicker (but the scrollbars won't work either).

#include <EditConstants.au3>
#Include <GuiListView.au3>
#include <GUIScrollbars_Ex.au3>
global $iSleepTime = 30,$iMaxMenu = 10,$lView,$aData,$iRows
Global $iTimer,$iRetID, $hCal,$sOutput, $sBuffer,$sOutput,$iCalc,$iSubafdeling,$iInlezen,$oADODBAX
Global $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES),$iMultiple,$iLvCol,$iLvWidth,$iDatumCheck,$sGebrVers,$iDblClk
Global $ahListView[1] = [0], $aQueryLv[1] = [0], $aListView[1] = [0],$iColWidth[1][1] ,$aIndices[$aListView[0] + 2]
_MenuR()

Func _MenuR() ;Show the lines of the Menu (with menuID)
  Local $cb[8][$iMaxMenu + 1],$sDag[8],$inpMenuNm[$iMaxMenu + 1],$Lv[8][$iMaxMenu + 1],$lCijf[8][$iMaxMenu + 1],$bCb[$iMaxMenu + 1],$iFilDayLV[8][$iMaxMenu + 1],$LvDay[8][$iMaxMenu + 1]
  Local $aCbOn[$iMaxMenu + 1],$lAvgPr[$iMaxMenu],$lMinPr[$iMaxMenu],$lMaxPr[$iMaxMenu]
  $sCyclus = "Summer"
  $iAW = 5
  $iAM = 3
  $iBDag = 1

  $iMultiple = 1
  $iGHTopPart = 70
  $iGHTopPartBet = 25
  $iGHMHeader = 15
  $iGHMLv = 120
  $iGHMFooter = 21
  $iGHDayPart = $iGHMHeader + $iGHMLv + $iGHMFooter

  $iGHMidPart = $iGHDayPart * 7
  $iGHBotPart = 40
  $iGHeight = $iGHTopPart + $iGHTopPartBet + $iGHMidPart + $iGHBotPart
  if $iGHeight > @DesktopHeight - 80 Then
   $iDiffH = $iGHeight - @DesktopHeight - 80  + 200
   $iGHeight = @DesktopHeight - 80
  Else
   $iDiffH = 200
  EndIf

  $iGWLE = 480
  $iGWMI = 30 * $iAM
  $iGWMIBe = 30
  $GWLvRE = 250
  $iGWRE = $GWLvRE * $iAM
  $iGWidth = $iGWLE + $iGWMI + $iGWMIBe + $iGWRE + 20
  if $iGWidth > @DesktopWidth - 80 Then
   $iDiffW = $iGWidth - @DesktopWidth - 80  + 200
   $iGWidth = @DesktopWidth - 80
  Else
   $iDiffW = 200
  EndIf
  $iGLabW = 25
  $iGButH = 25
  $hGUI = GUICreate("Lines menu : x for cyclus: " & $sCyclus, $iGWidth, $iGHeight,0,0,BitOR($WS_VSCROLL,$WS_MINIMIZEBOX,$WS_MAXIMIZE,$WS_MAXIMIZEBOX,$WS_CAPTION,$WS_POPUP,$WS_SYSMENU,$WS_HSCROLL))

  ;Filterpart
  $grKlFilterLI = GUICtrlCreateGroup("Gerechten",2,2,$iGWLE ,$iGHTopPart - 4)
  guictrlsetfont(-1,8.5,800)
  $iStart = 6
  $iWidth = 35
  $lFilNr = GUICtrlCreateLabel("Nr:",$iStart,25,$iWidth,20)
  $lFilOms = GUICtrlCreateLabel("Oms:",$iStart,45,$iWidth,20)
  $iStart = $iStart + $iWidth + 5
  $iWidth = 100
  $inpFilNr = GUICtrlCreateInput("",$iStart,22,$iWidth,20)
  $inpFilOms = GUICtrlCreateInput("",$iStart,42,$iWidth,20)
  $iStart = $iStart + $iWidth + 5
  $iWidth = 50
  $lFilVt = GUICtrlCreateLabel("Vlees:",$iStart ,25,$iWidth,20)
  $lFilComp = GUICtrlCreateLabel("Comp:",$iStart,45,$iWidth,20)
  $iStart = $iStart + $iWidth + 5
  $iWidth = 150
  $inpFilVt = GUICtrlCreateInput("",$iStart,22,$iWidth,20)
  $inpFilComp = GUICtrlCreateCombo("",$iStart,42,$iWidth,20)
  $iStart = $iStart + $iWidth + 5
  $iWidth = 50
  $lFilGebruik = GUICtrlCreateLabel("In gebruik:",$iStart ,25,$iWidth,20)
  $iStart = $iStart + $iWidth + 5
  $iWidth = 20
  $cbInGebr = GUICtrlCreateCheckbox("",$iStart ,22,$iWidth,20)
  $bFilLeeg = GUICtrlCreateButton("Leeg", 4 + $iGWLE,2 + $iGHTopPart,$iGWMI + $iGWMIBe - 4 ,$iGButH)
  $bBewGer = GUICtrlCreateButton("Gerecht", 4 + $iGWLE,2 + $iGHTopPart + $iGButH,$iGWMI + $iGWMIBe - 4 ,$iGButH)
  $bStat = GUICtrlCreateButton("Statistieken", 4 + $iGWLE,2 + $iGHTopPart + $iGButH * 2,$iGWMI + $iGWMIBe - 4 ,$iGButH)
  $grKlFilterMI = GUICtrlCreateGroup("Week",2 + $iGWLE,2,$iGWMI + $iGWMIBe,$iGHTopPart - 4)
  guictrlsetfont(-1,8.5,800)
  ;Fill weeknrs in combo
  $inpFilWk = GUICtrlCreateCombo("",4 + $iGWLE,2 + 20,$iGWMI - 8 ,$iGButH)
  For $w = 1 to $iAW
   if $w = 1 Then
    $s = "1"
   Else
    $s = $s & "|" & $w
   EndIf
  Next
  GUICtrlSetData($inpFilWk,$s,1)

  $dPrijs = "0,00"
  $lAvgPrm = GUICtrlCreateLabel("Gem : " & @TAB & " € " & $dPrijs,5 + 3 + $iGWLE,20 + $iGHTopPart + $iGHTopPartBet + ($iGButH - 6) * 2,$iGWMI + $iGWMIBe - 16,$iGButH - 10)
  guictrlsetfont(-1,8.5,800)
  $dPrijs = "0,00"
  $lMinPrm = GUICtrlCreateLabel("Min : " & @TAB & " € " & $dPrijs,5 + 3 + $iGWLE,20 + $iGHTopPart + $iGHTopPartBet + ($iGButH - 6) * 3,$iGWMI + $iGWMIBe - 16,$iGButH - 10)
  guictrlsetfont(-1,8.5,800)
  $sQuery =  ""
  $dPrijs = "0,00"
  $lMaxPrm = GUICtrlCreateLabel("Max : " & @TAB & " € " & $dPrijs,5 + 3 + $iGWLE,20 + $iGHTopPart + $iGHTopPartBet + ($iGButH - 6) * 4,$iGWMI + $iGWMIBe - 16,$iGButH - 10)
  guictrlsetfont(-1,8.5,800)
  $grKlFilterRE = GUICtrlCreateGroup("Cijfers",2 + $iGWLE + $iGWMI + $iGWMIBe,2,$iGWRE - 4 ,$iGHTopPart - 4)
  guictrlsetfont(-1,8.5,800)
   Switch $iBDag
    Case 1 ;Only 1 is in use right now
     $sDag[1] = "Zondag"
     $sDag[2] = "Maandag"
     $sDag[3] = "Dinsdag"
     $sDag[4] = "Woensdag"
     $sDag[5] = "Donderdag"
     $sDag[6] = "Vrijdag"
     $sDag[7] = "Zaterdag"
    Case 2
     $sDag[1] = "Maandag"
     $sDag[2] = "Dinsdag"
     $sDag[3] = "Woensdag"
     $sDag[4] = "Donderdag"
     $sDag[5] = "Vrijdag"
     $sDag[6] = "Zaterdag"
     $sDag[7] = "Zondag"
    Case 3
     $sDag[1] = "Dinsdag"
     $sDag[2] = "Woensdag"
     $sDag[3] = "Donderdag"
     $sDag[4] = "Vrijdag"
     $sDag[5] = "Zaterdag"
     $sDag[6] = "Zondag"
     $sDag[7] = "Maandag"
    Case 4
     $sDag[1] = "Woensdag"
     $sDag[2] = "Donderdag"
     $sDag[3] = "Vrijdag"
     $sDag[4] = "Zaterdag"
     $sDag[5] = "Zondag"
     $sDag[6] = "Maandag"
     $sDag[7] = "Dinsdag"
    Case 5
     $sDag[1] = "Donderdag"
     $sDag[2] = "Vrijdag"
     $sDag[3] = "Zaterdag"
     $sDag[4] = "Zondag"
     $sDag[5] = "Maandag"
     $sDag[6] = "Dinsdag"
     $sDag[7] = "Woensdag"
    Case 6
     $sDag[1] = "Vrijdag"
     $sDag[2] = "Zaterdag"
     $sDag[3] = "Zondag"
     $sDag[4] = "Maandag"
     $sDag[5] = "Dinsdag"
     $sDag[6] = "Woensdag"
     $sDag[7] = "Donderdag"
    Case 7
     $sDag[1] = "Zaterdag"
     $sDag[2] = "Zondag"
     $sDag[3] = "Maandag"
     $sDag[4] = "Dinsdag"
     $sDag[5] = "Woensdag"
     $sDag[6] = "Donderdag"
     $sDag[7] = "Vrijdag"
   EndSwitch

  ;Create labels, Listviews etc.

   $sQuery1Lv1 = ""
   $sQuery2Lv1 = ""
   $sQuery1aLv1 = ""
   $sLvCol = "ID|Gerecht|Naam|VleesType|Menu|HuidigeWeek"
   _ListviewCreate($sQuery1Lv1 & GUICtrlRead($inpFilWk) & $sQuery1aLv1 & "WHERE gm.CompNm = '" & GUICtrlRead($inpFilComp)& "' " & $sQuery2Lv1,2 ,2 + $iGHTopPart,$iGWLE,$iGHDayPart * 5,$sLvCol)
   $LvLi = $lView
   $lOms = GUICtrlCreateLabel("Extra omschrijving voor deze week",2 ,2 + $iGHTopPart + $iGHDayPart * 5 + 3,$iGWLE,$iGButH)
   $sOms = ""

   $inpOms = GUICtrlCreateInput($sOms,2 ,2 + $iGHTopPart + $iGHDayPart * 5 + $iGButH,$iGWLE,$iGButH * 4,BitOR($ES_MULTILINE,$ES_WANTRETURN))

  For $m = 1 to $iAM ;All menu's
   ;Pricelabels for menu's ;Also on filter
   $dPrijs = "0,00"
   $lAvgPr[$m] = GUICtrlCreateLabel("Gem : " & @TAB & " € " & $dPrijs,5 + 3 + $iGWLE + $iGWMI + $iGWMIBe + $GWLvRE * ($m - 1),18,$GWLvRE - 16,$iGButH - 12)
   guictrlsetfont(-1,8.5,800)
   ;Min
   $dPrijs = "0,00"
   $lMinPr[$m] = GUICtrlCreateLabel("Min : " & @TAB & " € " & $dPrijs,5 + 3 + $iGWLE + $iGWMI + $iGWMIBe + $GWLvRE * ($m - 1),18 + ($iGButH - 8) * 1,$GWLvRE - 16,$iGButH - 12)
   guictrlsetfont(-1,8.5,800)
   ;Max
   $dPrijs = "0,00"
   $lMaxPr[$m] = GUICtrlCreateLabel("Max : " & @TAB & " € " & $dPrijs,5 + 3 + $iGWLE + $iGWMI + $iGWMIBe + $GWLvRE * ($m - 1),18 + ($iGButH - 8) * 2,$GWLvRE - 16,$iGButH - 12)
   guictrlsetfont(-1,8.5,800)
   For $d = 1 To 7 ;All days
    $iFilDayLV[$d][$m] = 0 ;Once set, check if needed
    if $m = 1 Then
     GUICtrlCreateLabel(StringLeft($sDag[$d],2),2 + 3 + $iGWLE + 20 * ($m - 1),2 + $iGHTopPart + $iGHTopPartBet + $iGButH + $iGHDayPart * 2 + $iGButH * ($d - 1),$iGLabW,$iGButH - 5) ;DayLabels
     GUICtrlCreateGroup($sDag[$d],2 + $iGWLE + $iGWMI + $iGWMIBe,2 + $iGHTopPart + $iGHTopPartBet + $iGHDayPart * ($d - 1),$iGWRE,$iGHDayPart) ;Days
     guictrlsetfont(-1,8.5,800)
    EndIf
    If $d = 1 Then
     $sDef = "0"
     $inpMenuNm[$m] = GUICtrlCreateCombo("",2 + $iGWLE + $iGWMI + $iGWMIBe + $GWLvRE * ($m-1),2 + $iGHTopPart ,$GWLvRE,$iGButH)

     GUICtrlSetData($inpMenuNm[$m],"Leeg")
     GUICtrlCreateLabel("M" & $m,2 + $iGWLE + $iGLabW + 20 * ($m - 1),2 + $iGHTopPart + $iGHTopPartBet + $iGHDayPart * 2 + $iGButH * ($d - 1),$iGLabW,$iGButH) ;MenuLabels
     $bCb[$m] = GUICtrlCreateButton($m, $iGWLE + $iGLabW + 20 * ($m - 1),3 + $iGHTopPart + $iGHTopPartBet + $iGHDayPart * 2 + $iGButH * (8),18,18)
    EndIf
    $cb[$d][$m] = GUICtrlCreateCheckbox("",2 + $iGWLE + $iGLabW + 20 * ($m - 1),2 + $iGHTopPart + $iGHTopPartBet + $iGButH + $iGHDayPart * 2 + $iGButH * ($d - 1),20,$iGButH)
    $sLvCol = "ID|Component|Gerecht"
    $sQuery = ""
    _ListviewCreate($sQuery,2 + 3 + $iGWLE + $iGWMI + $iGWMIBe + $GWLvRE * ($m - 1),2 + $iGHTopPart + $iGHTopPartBet + $iGHMHeader + $iGHDayPart * ($d - 1),$GWLvRE - 6,$iGHMLv,$sLvCol)
    $LvDay[$d][$m] = $lView

    $dPrijs = "0,00"
    $lCijf[$d][$m] = GUICtrlCreateLabel("Prijs : € " & $dPrijs,2 + 3 + $iGWLE + $iGWMI + $iGWMIBe + $GWLvRE * ($m - 1),5 + $iGHTopPart + $iGHTopPartBet + $iGHMHeader + $iGHMLv + $iGHDayPart * ($d - 1),$GWLvRE - 6,$iGButH - 9)
    guictrlsetfont(-1,8.5,800)
   Next
  Next
  $bCbAll = GUICtrlCreateButton("Alles", $iGWLE + $iGLabW,2 + $iGHTopPart + $iGHTopPartBet + $iGHDayPart * 2 + $iGButH + $iGButH * (8),(20 * $iAM) - 2 ,$iGButH)
  $bAdd = GUICtrlCreateButton(">",$iGWLE + $iGWMI,2 + $iGHTopPart + $iGHTopPartBet + $iGButH + $iGHDayPart * 2 ,25,$iGButH * 2)
  guictrlsetfont(-1,8.5,800)
  $bDel = GUICtrlCreateButton("<",$iGWLE + $iGWMI,2 + $iGHTopPart + $iGHTopPartBet + $iGButH + $iGHDayPart * 2 + ($iGButH * 2) * 1,25,$iGButH * 2)
  guictrlsetfont(-1,8.5,800)
  $bDelAll = GUICtrlCreateButton("<<",$iGWLE + $iGWMI,2 + $iGHTopPart + $iGHTopPartBet + $iGButH + $iGHDayPart * 2 + ($iGButH * 2) * 2,25,$iGButH * 2)
  guictrlsetfont(-1,8.5,800)
  GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
  GUISetState(@SW_SHOW)
  ;Outcomment the next line and the flicker is gone....
  _GUIScrollbars_Generate($hGUI, $iGWidth + $iDiffW, $iGHeight + $iDiffH)
  $iFilLI = 0
  $iFilDay = 0
  $iBew = 0
  $iCbOn = 0
  $iCompID = 0
  While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
   Case $GUI_EVENT_CLOSE
    _resetLV()
    ExitLoop

   EndSwitch
  sleep($iSleepTime) ;Performance
  WEnd
EndFunc ;==> MenuR

;========================================Other functions==========================================================

Func _ListviewCreate($sQuery,$iLvLeft,$iLvTop,$iLvWidth,$iLvHeight,$sLvCol,$AX = 0) ;Functie om listview te maken, multiple = 1 => more listviews
;Create listview
$lView = GUICtrlCreateListView($sLvCol, $iLvLeft, $iLvTop, $iLvWidth, $iLvHeight, BitOr($LVS_ICON, $LVS_SHOWSELALWAYS), BitOR($LVS_SORTDESCENDING, $LVS_EX_GRIDLINES,$LVS_EX_DOUBLEBUFFER))
GUICtrlSetBkColor($lView, $GUI_BKCOLOR_LV_ALTERNATE)
_GUICtrlListView_SetExtendedListViewStyle($lView, $iExListViewStyle)

if $iMultiple = 1 then
  $aListView[0] += 1
  ;Increase size of array
  ReDim $ahListView[$aListView[0] + 1]
  ReDim $aIndices[$aListView[0] + 1]
  ReDim $aListView[$aListView[0] + 1]
  ReDim $aQueryLv[$aListView[0] + 1]
  Redim $iColWidth[$aListView[0] + 1][1 + $iLvCol] ;Reset on close menu!!!!
  ; Store the handle in the array
  $ahListView[$aListView[0]] = GUICtrlGetHandle($lView)
  $aQueryLv[$aListView[0]] = $sQuery
  $aListView[$aListView[0]] = $lView ;ID instead of handle
EndIf
  if $iRows > 0 Then ;check if there are any rows to return
   _PopulateListview ($lView,$sQuery,$aListView[0],$AX)
  EndIf
EndFunc ;====>_ListviewCreate
Func _ResetLV() ;Reset the counter of listviews (otherwhise the number of listviews will keep increasing while using the program)
  $aListView[0] = 0
  ;Increase size of array
  ReDim $ahListView[$aListView[0] + 1]
  ReDim $aIndices[$aListView[0] + 1]
  ReDim $aListView[$aListView[0] + 1]
  ReDim $aQueryLv[$aListView[0] + 1]
  Redim $iColWidth[$aListView[0] + 1][1 + $iLvCol] ;Reset on close menu!!!!
EndFunc
Func _PopulateListview ($lViewRP,$sQuery,$iLv,$AX = 0)

_GUICtrlListView_DeleteAllItems($lViewRP)

EndFunc ;==> _PopulateListview
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
   Local $hWndFrom, $iCode, $tNMHDR, $hWndListView
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
  if $iMultiple = 1 Then
   For $i = 1 To $aListView[0]
    If $hWndFrom = $ahListView[$i] Then
     Switch $iCode
      Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
       ; Set the index of the ListView in the storage array
       $iDblClk = $i
       ; No point in looking any further!
       $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
       $iDblClkIndex = DllStructGetData($tInfo, "Index")
       _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
         "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
         "-->Code:" & @TAB & $iCode & @LF & _
         "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
         "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
         "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
         "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
         "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
         "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
         "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
         "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
         "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))

       ExitLoop
     EndSwitch
    EndIf
   Next
  EndIf
  if $iMultiple = 0 or $iCalc = 1 Then ;Single LV and calc
   ;MsgBox(0,"","0")
   Switch $iCode
    Case $NM_RELEASEDCAPTURE
      _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
        "-->IDFrom:" & @TAB & $iIDFrom)
     if $hWndFrom = $hCal Then ;This part is only for the calendar
      If TimerDiff($iTimer) <= 300 Then ;milliseconds between mouse clicks
      _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
        "-->OK:" & @TAB & TimerDiff($iTimer) & @LF)
       If $sBuffer == $sOutput Then ;buffer date from 1st mouse click release to compare with 2nd mouse click release
         $iDblClk = 1
       Else
        $sOutput = ""
        $iDblClk = 0
       EndIf
      Else
       $iTimer = TimerInit()
       $sBuffer = $sOutput
      EndIf
     EndIf

    Case $NM_DBLCLK ; Sent by a list-view control when the user double-clicks an item with the left mouse button
     ; Set the index of the ListView in the storage array
     $iDblClk = 1
     ;MsgBox(0,"","2")
     ; No point in looking any further!
     $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
     $iDblClkIndex = DllStructGetData($tInfo, "Index")
     _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
       "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
       "-->Code:" & @TAB & $iCode & @LF & _
       "-->Index:" & @TAB & DllStructGetData($tInfo, "Index") & @LF & _
       "-->SubItem:" & @TAB & DllStructGetData($tInfo, "SubItem") & @LF & _
       "-->NewState:" & @TAB & DllStructGetData($tInfo, "NewState") & @LF & _
       "-->OldState:" & @TAB & DllStructGetData($tInfo, "OldState") & @LF & _
       "-->Changed:" & @TAB & DllStructGetData($tInfo, "Changed") & @LF & _
       "-->ActionX:" & @TAB & DllStructGetData($tInfo, "ActionX") & @LF & _
       "-->ActionY:" & @TAB & DllStructGetData($tInfo, "ActionY") & @LF & _
       "-->lParam:" & @TAB & DllStructGetData($tInfo, "lParam") & @LF & _
       "-->KeyFlags:" & @TAB & DllStructGetData($tInfo, "KeyFlags"))
   EndSwitch

  EndIf ;multiple
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
Func _DebugPrint($s_text, $line = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+======================================================" & @LF & _
            "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
            "+======================================================" & @LF)
EndFunc   ;==>_DebugPrint

So how could I still have (working) scrollbars, but get rid of the flickering.

Other comments are welcome also, since I like to learn!

I did attach the GUIScrollbars_Ex.au3 file, which I downloaded from this forum, just to have a working example from this post without having to look for the file.

Thanks in advance,

Peter

Link to comment
Share on other sites

What an impressive gui, man!

I've tried creating the scrollbars just after creating the gui and there is no flickering:

$hGUI = GUICreate("Lines menu : x for cyclus: " & $sCyclus, $iGWidth, $iGHeight,0,0,BitOR($WS_VSCROLL,$WS_MINIMIZEBOX,$WS_MAXIMIZE,$WS_MAXIMIZEBOX,$WS_CAPTION,$WS_POPUP,$WS_SYSMENU,$WS_HSCROLL))
_GUIScrollbars_Generate($hGUI, $iGWidth + $iDiffW, $iGHeight + $iDiffH)

(line 50 of your code).

Just curiosity: What does the program do?

Greets from Barcelona

Edited by adolfito121
Link to comment
Share on other sites

Yes, that did the trick!

Thanks a thousand.

Would never have thought of that!

For the satisfaction of your curiosity, it is in use for the calculation of weekly menu's (food) for our customers (we produce meals).

So all the little listviews represent a grid of day (horizontal) / menu (vertical) combinations, where all the 'items' are show on the left listview.

The numbers are the average, min and max prices given the actual food prices for our production facility.

The 'real' gui is more flexible as it allows the user to tell per 'menu' how many days, weeks and menu's it needs.

The concept is actually rather simple with a few SQL tables that populate the gui and some checkboxes.

Works like a charm, except for the flickering.

Which is gone now. Thanks for that!

Greets from

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...