Chimaera Posted July 6, 2011 Share Posted July 6, 2011 Hi all Im trying to create a simple pie chart on an 8 tab project that im working on but the issue is the graphic dosent respond to the tabs and stays underneath This is the example im working with, i chose this because its simple for me to modify Ive adde the tab so you can see the problem Is there a way to make it on the tab or are there other options that might be better? Chimaera expandcollapse popup; ---------------------------------------------------------------------------- ; ; AutoIt Version: 3.1.1.66 ; Author: MikeOsdx ; ; Script Function: Create a Pie graph of Passed/Failed/Warnings ; You can change the $Pass, $Fail, $Warnings values to modify the Pie chart ; ; ---------------------------------------------------------------------------- #include <GUIConstants.au3> $Pass = 16;Total number of Passed $Fail = 3;Total Number of Failed $Warnings = 5;Total Number of Warnings ;===== The following functions calculate Percentages and Degrees ===== $TotalTests = $Pass + $Fail + $Warnings;Get the total number of all "for Percentage calculations" $PassP1 = $Pass / $TotalTests;Get percentage of Total Passed $PassP = $PassP1 * 360;Get the Degrees from the Passed Percentage $FailP1 = $Fail / $TotalTests;Get Percentage of Total Failed $FailP = $FailP1 * 360;Get the Degrees from the Failed percentage $WarningsP1 = $Warnings / $TotalTests;Get Percentage of Total Warnings $WarningsP = $WarningsP1 * 360;Get the Degrees from the Warning Percentage ;===================================================================== GUICreate("Reporting Chart", 340, 300);Create the GUI window $hTab = GUICtrlCreateTab(10,20,300, 280) $hTab0 = GUICtrlCreateTabItem(" Information ") $Pie1 = GuiCtrlCreateGraphic(0, 0, 240,140);Create the main graphic area ;=== This section will create the Pie Chart ========================== ;Passed Pie section GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0xF0F8FF);Set the color of Passed to light blue GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120,70, 80, 90, $PassP);Set the Pie Chart piece Starts at 90^ and sweeps for $PassP number of ^ ;Failed Pie section GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0x8B0000);Set color of Failed to dark red GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120,70, 80, 90 + $PassP, $FailP);Set the Pie Chart piece Starts at 90^ + total ^ of $PassP ;Warnings Pie Section GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0xFFD700);Set color of warning to dark Yellow GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120,70, 80, 90 + $PassP + $FailP, $WarningsP);Set the Pie Chart piece Start at 90^ + Total ^ of $PassP and $FailP ;===================================================================== ;~ ;=== This section creates the Legend ============================= ;~ $Legend = GUICtrlCreateGraphic(0, 140, 200, 60) ;~ ;Passed Legend ;~ GUICtrlSetGraphic($Legend, $GUI_GR_PENSIZE, 5);makes the Dot bigger so you can see the color ;~ GUICtrlSetGraphic($Legend,$GUI_GR_COLOR, 0xF0F8FF,0xF0F8FF) ;~ GUICtrlSetGraphic($Legend, $GUI_GR_DOT, 20, 10) ;~ GUICtrlCreateLabel("Passed", 40, 145, 40, 20) ;~ $PassPercent = GUICtrlCreateLabel(Round($PassP1 * 100, 0) & "%", 80, 145, 30, 20);Calculates the total percentage to display ;~ ;Failed Legend ;~ GUICtrlSetGraphic($Legend, $GUI_GR_PENSIZE, 5);makes the Dot bigger so you can see the color ;~ GUICtrlSetGraphic($Legend,$GUI_GR_COLOR, 0x8B0000,0x8B0000) ;~ GUICtrlSetGraphic($Legend, $GUI_GR_DOT, 20, 40) ;~ GUICtrlCreateLabel("Failed", 40, 175, 40, 20) ;~ $FailPercent = GUICtrlCreateLabel(Round($FailP1 * 100, 0) & "%", 80, 175, 30, 20);Calculates the total percentage to display ;~ ;Warnings legend ;~ GUICtrlSetGraphic($Legend, $GUI_GR_PENSIZE, 5);makes the Dot bigger so you can see the color ;~ GUICtrlSetGraphic($Legend, $GUI_GR_COLOR, 0xFFD700, 0xFFD700) ;~ GUICtrlSetGraphic($Legend, $GUI_GR_DOT, 130, 40) ;~ GUICtrlCreateLabel("Warnings", 150, 175, 70, 20) ;~ $WarningPercent = GUICtrlCreateLabel(Round($WarningsP1 * 100, 0) & "%", 200, 175, 30, 20);Calculates the total percentage to display ;~ ;================================================================= GUISetState() while 1 $msg = GUIGetMsg() if $msg = $GUI_EVENT_CLOSE then Exit WEnd If Ive just helped you ... miracles do happen. Chimaera CopyRobo() * Hidden Admin Account Enabler * Software Location From Registry * Find Display Resolution * _ChangeServices() Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 6, 2011 Moderators Share Posted July 6, 2011 Chimaera, Graphic controls are a law unto themselves when it comes to z-order! I suggest you create a child GUI to hold the graphic control - but you then have to look after the hiding/showing yourself like this: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIConstants.au3> $Pass = 16;Total number of Passed $Fail = 3;Total Number of Failed $Warnings = 5;Total Number of Warnings ;===== The following functions calculate Percentages and Degrees ===== $TotalTests = $Pass + $Fail + $Warnings;Get the total number of all "for Percentage calculations" $PassP1 = $Pass / $TotalTests;Get percentage of Total Passed $PassP = $PassP1 * 360;Get the Degrees from the Passed Percentage $FailP1 = $Fail / $TotalTests;Get Percentage of Total Failed $FailP = $FailP1 * 360;Get the Degrees from the Failed percentage $WarningsP1 = $Warnings / $TotalTests;Get Percentage of Total Warnings $WarningsP = $WarningsP1 * 360;Get the Degrees from the Warning Percentage $hGUI = GUICreate("Test", 500, 500) $hTab = GUICtrlCreateTab(10, 20, 300, 280) $hTab0 = GUICtrlCreateTabItem(" Information ") $hTab1 = GUICtrlCreateTabItem(" Another Tab ") GUICtrlCreateTabItem("") GUISetState() ; Create child GUI to hold graphic $hGraphic_Win = GUICreate("", 280, 240, 20, 50, $WS_POPUP, $WS_EX_MDICHILD, $hGUI) $Pie1 = GuiCtrlCreateGraphic(0, 00, 280, 240);Create the main graphic area GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0xF0F8FF);Set the color of Passed to light blue GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90, $PassP);Set the Pie Chart piece Starts at 90^ and sweeps for $PassP number of ^ ;Failed Pie section GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0x8B0000);Set color of Failed to dark red GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $PassP, $FailP);Set the Pie Chart piece Starts at 90^ + total ^ of $PassP ;Warnings Pie Section GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0xFFD700);Set color of warning to dark Yellow GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $PassP + $FailP, $WarningsP);Set the Pie Chart piece Start at 90^ + Total ^ of $PassP and $FailP GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hTab ; Which tab is selected? Switch GUICtrlRead($hTab) Case 0 WinSetState($hGraphic_Win, "", @SW_SHOW) Case 1 WinSetState($hGraphic_Win, "", @SW_HIDE) EndSwitch EndSwitch WEnd Please ask if you have any questions. M23  Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area  Link to comment Share on other sites More sharing options...
taietel Posted July 6, 2011 Share Posted July 6, 2011 Or something like this: #include <GUIConstantsEx.au3> $Form1 = GUICreate("Form1", 348, 266, 192, 114) $Tab1 = GUICtrlCreateTab(32, 40, 289, 193) $TabSheet1 = GUICtrlCreateTabItem("TabSheet1") $TabSheet2 = GUICtrlCreateTabItem("TabSheet2") $TabSheet3 = GUICtrlCreateTabItem("TabSheet3") $Graphic1 = GUICtrlCreateGraphic(80, 97, 120, 120) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF0000, 0xFF0000) GUICtrlSetGraphic(-1, $GUI_GR_PIE, 56, 56, 56, 0, 120) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFF00, 0xFFFF00) GUICtrlSetGraphic(-1, $GUI_GR_PIE, 56, 56, 56, 120, 240) GuiCtrlSetState(-1,$GUI_ONTOP) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) While 1 Sleep(10) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Things you should know first...In the beginning there was only ONE! And zero... Progs: Create PDF(TXT2PDF,IMG2PDF) 3D Bar Graph DeskGadget Menu INI Photo Mosaic 3D Text Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 6, 2011 Moderators Share Posted July 6, 2011 taietel,Clever! I would have though that the $GUI_ONTOP style would have placed the graphic on top of the z-order for all tabs. Now I know better - thanks. M23  Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area  Link to comment Share on other sites More sharing options...
taietel Posted July 6, 2011 Share Posted July 6, 2011 Thanks Melba! I've learned from one of the best. Here is a variation, slightly 3D: expandcollapse popup#include <GUIConstantsEx.au3> $Form1 = GUICreate("Form1", 348, 266) $Tab1 = GUICtrlCreateTab(32, 40, 289, 193) $TabSheet1 = GUICtrlCreateTabItem("TabSheet1") $TabSheet2 = GUICtrlCreateTabItem("TabSheet2") $TabSheet3 = GUICtrlCreateTabItem("TabSheet3") _SomePie(60,70,160) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) While 1 Sleep(10) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd Func _SomePie($iX, $iY, $iW, $iR=0, $iH=0) If $iH=0 Then $iH=$iW If $iR=0 Then $iR=Round($iW/2.5,1) Local $hGraphic = GUICtrlCreateGraphic($iX, $iY, $iW, $iH) For $i=0 To 5 Step 0.5 GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF0000, 0x990000) GUICtrlSetGraphic(-1, $GUI_GR_PIE, 10+$iX-$i, $iY-$i, $iR, 0, 120) Next For $i=0 To 5 GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFF00, 0x999900) GUICtrlSetGraphic(-1, $GUI_GR_PIE, 10+$iX-$i, 10+$iY-$i, $iR, 120, 240) Next GuiCtrlSetState(-1,$GUI_ONTOP) EndFunc Things you should know first...In the beginning there was only ONE! And zero... Progs: Create PDF(TXT2PDF,IMG2PDF) 3D Bar Graph DeskGadget Menu INI Photo Mosaic 3D Text Link to comment Share on other sites More sharing options...
Chimaera Posted July 6, 2011 Author Share Posted July 6, 2011 (edited) Thanks for doing those unfortunatly i have input vars that i need it to work from So these wont do for that, i really liked the slightly 3d one cool Chim This is what i have so far expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.6.1 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIConstants.au3> $Pie_Income = 16 ; to be replaced by input vars $Pie_House = 3 ; to be replaced by input vars $Pie_Living = 5 ; to be replaced by input vars $Pie_Finance = 6 ; to be replaced by input vars $Pie_Family = 4 ; to be replaced by input vars $Pie_Travel = 5 ; to be replaced by input vars $Pie_Leisure =2 ; to be replaced by input vars ;===== The following functions calculate Percentages and Degrees ===== $TotalTests = $Pie_Income + $Pie_House + $Pie_Living + $Pie_Finance + $Pie_Family + $Pie_Travel + $Pie_Leisure ;Get the total number of all "for Percentage calculations" $Pie_Income_Perc = $Pie_Income / $TotalTests ;Get percentage of Total Passed $Pie_Income_Deg = $Pie_Income_Perc * 360 ;Get the Degrees from the Passed Percentage $Pie_House_Perc = $Pie_House / $TotalTests ;Get Percentage of Total Failed $Pie_House_Deg = $Pie_House_Perc * 360 ;Get the Degrees from the Failed percentage $Pie_Living_Perc = $Pie_Living / $TotalTests ;Get Percentage of Total Warnings $Pie_Living_Deg = $Pie_Living_Perc * 360 ;Get the Degrees from the Warning Percentage $Pie_Finance_Perc = $Pie_Finance / $TotalTests ;Get Percentage of Total Warnings $Pie_Finance_Deg = $Pie_Finance_Perc * 360 ;Get the Degrees from the Warning Percentage $Pie_Family_Perc = $Pie_Family / $TotalTests ;Get Percentage of Total Warnings $Pie_Family_Deg = $Pie_Family_Perc * 360 ;Get the Degrees from the Warning Percentage $Pie_Travel_Perc = $Pie_Travel / $TotalTests ;Get Percentage of Total Warnings $Pie_Travel_Deg = $Pie_Travel_Perc * 360 ;Get the Degrees from the Warning Percentage $Pie_Leisure_Perc = $Pie_Leisure / $TotalTests ;Get Percentage of Total Warnings $Pie_Leisure_Deg = $Pie_Leisure_Perc * 360 ;Get the Degrees from the Warning Percentage $hGUI = GUICreate("Test", 500, 500) $hTab = GUICtrlCreateTab(10, 20, 300, 280) $hTab0 = GUICtrlCreateTabItem(" Information ") $hTab1 = GUICtrlCreateTabItem(" Another Tab ") GUICtrlCreateTabItem("") GUISetState() ; Create child GUI to hold graphic $hGraphic_Win = GUICreate("", 280, 240, 20, 50, $WS_POPUP, $WS_EX_MDICHILD, $hGUI) $Pie1 = GuiCtrlCreateGraphic(0, 00, 280, 240);Create the main graphic area GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0x736AFF) GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90, $Pie_Income_Deg) ;Failed Pie section GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0x8B0000) GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $Pie_Income_Deg, $Pie_House_Deg) ;Warnings Pie Section GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0xFFD700) GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $Pie_Income_Deg + $Pie_House_Deg, $Pie_Living_Deg) GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0x4E387E) GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $Pie_Income_Deg + $Pie_House_Deg + $Pie_Living_Deg, $Pie_Finance_Deg) GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0x48CCCD) GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $Pie_Income_Deg + $Pie_House_Deg + $Pie_Living_Deg + $Pie_Finance_Deg, $Pie_Family_Deg) GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0x347C17) GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $Pie_Income_Deg + $Pie_House_Deg + $Pie_Living_Deg + $Pie_Finance_Deg + $Pie_Family_Deg, $Pie_Travel_Deg) GUICtrlSetGraphic(-1,$GUI_GR_COLOR, 0x000000,0xF88017) GUICtrlSetGraphic(-1,$GUI_GR_PIE, 120, 100, 80, 90 + $Pie_Income_Deg + $Pie_House_Deg + $Pie_Living_Deg + $Pie_Finance_Deg + $Pie_Family_Deg + $Pie_Travel_Deg, $Pie_Leisure_Deg) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hTab ; Which tab is selected? Switch GUICtrlRead($hTab) Case 0 WinSetState($hGraphic_Win, "", @SW_SHOW) Case 1 WinSetState($hGraphic_Win, "", @SW_HIDE) EndSwitch EndSwitch WEnd But when i add it into the main script it goes pear shaped and just draws one half of the circle colured in, yet in the example it works fine, so i guess i have a variable problem or something like that. Edited July 6, 2011 by Chimaera If Ive just helped you ... miracles do happen. Chimaera CopyRobo() * Hidden Admin Account Enabler * Software Location From Registry * Find Display Resolution * _ChangeServices() Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 6, 2011 Moderators Share Posted July 6, 2011 Chimaera,Have you tried with taietel's simpler solution? As I have suggested to you in another thread, it helps if you post the whole script with which you are having problems - trying to solve your problems via small snippets of code and cryptic "guesses" is not terribly efficient. M23  Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area  Link to comment Share on other sites More sharing options...
taietel Posted July 7, 2011 Share Posted July 7, 2011 Or try this sample (instead pie it has graph bars): expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <Array.au3> Global $arNames=StringSplit("January|February|March|April|May|June|July|August|September|October|November|December","|",2) Global $arValues[12] ;fill the array of values with some random numbers For $i=0 To 11 $arValues[$i]=Random(0,200,1) Next GUICreate("Form1", 600, 600) $Tab1 = GUICtrlCreateTab(20, 20, 560, 560) $TabSheet1 = GUICtrlCreateTabItem("TabSheet1") $TabSheet2 = GUICtrlCreateTabItem("TabSheet2") $TabSheet3 = GUICtrlCreateTabItem("TabSheet3") _CreateBarChart("3D Bar Chart","Example",40,80,500,400) GUICtrlCreateTabItem("") GUISetState(@SW_SHOW) While 1 Sleep(10) Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd ; #FUNCTION# ==================================================================================================== ; Name...........: _CreateBarChart ; Description....: Create 3D bar graph with native AutoIt functions ; Syntax.........: _CreateBarChart($sTitle1="",$sTitle2="",$iX=20,$iY=20,$iW=400,$iH=400) ; Parameters.....: $sTitle1 - Title of the graph, [Optional] ; $sTitle2 - Subtitle of the graph, [Optional] ; $iX - left margin, [Optional] ; $iY - top margin, [Optional] ; $iW - width of the graph, [Optional] ; $iH - height of the graph, [Optional] ; ; Return values..: none ; Version........: 2 ; Author.........: Mihai Iancu (taietel at yahoo dot com) ; =============================================================================================================== Func _CreateBarChart($sTitle1="",$sTitle2="",$iX=20,$iY=20,$iW=400,$iH=400) Local $max=_ArrayMax($arValues,1);compare numerically ;Local $values = UBound($arValues) Local $arColours[UBound($arNames)] Local $color For $i=0 To UBound($arValues)-1 $color = (Random(100, 255, 1) * 0x10000) + (Random(100, 255, 1) * 0x100) + Random(100, 255, 1) $arColours[$i]=$color Next ;set default values for the frame If $iX=-1 Then $iX=20 If $iY=-1 Then $iY=20 If $iW=-1 Then $iW=400 If $iH=-1 Then $iH=400 ;create frame for the chart $grp = GUICtrlCreateGroup("", $iX, $iY, $iW, $iH) ;title GUICtrlCreateLabel($sTitle1,$iX+15, $iY+10,$iW-30,-1,$SS_CENTER) GUICtrlSetColor(-1,0x002244) GUICtrlSetFont(-1, 9, 800, 0, "Arial") GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT) GUICtrlCreateLabel($sTitle2,$iX+15, $iY+25,$iW-30,-1,$SS_CENTER) GUICtrlSetColor(-1,0x002244) GUICtrlSetFont(-1, 8, 800, 0, "Arial") GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT) Local $Canvas If IsString($arNames[1]) Then $Canvas = _CreateBarCanvas($iX+15, $iY+15, $iW-110, $iH-60) GUICtrlCreateGroup("Legend", $Canvas[0]+$Canvas[2]+10, $Canvas[1]-5, ($iW-$Canvas[2])/2-10, $Canvas[3]+$Canvas[4]+5) For $i=0 To UBound($arNames)-1 GUICtrlCreateLabel($arNames[$i],$Canvas[0]+$Canvas[2]+20, $Canvas[1]+10+(($Canvas[3]+$Canvas[4]-15)/UBound($arNames))*$i,($iW-$Canvas[2])/2-30,13,$SS_CENTER) GUICtrlSetColor(-1,$arColours[$i]-0x444444) GUICtrlSetFont(-1, 8, 800, 0, "Arial") GUICtrlSetBkColor(-1,$arColours[$i]) Next GUICtrlCreateGroup("", -99, -99, 1, 1) Else $Canvas = _CreateBarCanvas($iX+15, $iY+15, $iW-50, $iH-60) For $i=0 To UBound($arNames)-1 GUICtrlCreateLabel($arNames[$i],$iX+52+(($Canvas[2]/UBound($arNames)))*$i+5, $iY+$iH-30) GUICtrlSetColor(-1,0x990000) GUICtrlSetFont(-1, 8, 800, 0, "Arial") GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT) Next EndIf ;draw the bars GUICtrlCreateGraphic($Canvas[0]-0.5*$Canvas[4], $Canvas[1]+0.5*$Canvas[4], $Canvas[2], $Canvas[3],0) For $i=0 To UBound($arValues)-1 For $j=$Canvas[4]/2.5 To 0 Step -0.5 GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $arColours[$i]-0x333333, $arColours[$i]) GUICtrlSetGraphic(-1, $GUI_GR_RECT, 5+($Canvas[2]/UBound($arValues))*$i+$j, -2+$Canvas[3]-$j, 0.6*($Canvas[2]/UBound($arValues)), -($Canvas[3]/_RoundUp($max))*$arValues[$i]) Next Next GUICtrlSetGraphic(-1,$GUI_GR_REFRESH) GuiCtrlSetState(-1,$GUI_ONTOP) For $i=0 To UBound($arValues)-1 ;values from the top of the bars GUICtrlCreateLabel($arValues[$i],$iX+50+($Canvas[2]/UBound($arValues))*$i + $Canvas[4]/2.5 + 0.3*($Canvas[2]/UBound($arValues)), $iY+35+$Canvas[3]+ $Canvas[4]/2.5 -($Canvas[3]/_RoundUp($max))*$arValues[$i]) GUICtrlSetColor(-1,0x002244) GUICtrlSetFont(-1, 7, 800, 0, "Arial") GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT) Next ;Y Axis For $i=0 To $Canvas[3] Step $Canvas[3]/5 GUICtrlCreateLabel(($i/$Canvas[3])*_RoundUp($max),$Canvas[0]-65,$Canvas[1]+$Canvas[3]+$Canvas[4]-$i,30,-1,$SS_RIGHT) GUICtrlSetColor(-1,0x990000) GUICtrlSetFont(-1, 8, 800, 0, "Arial") GUICtrlSetBkColor(-1,$GUI_BKCOLOR_TRANSPARENT) Next GUICtrlCreateGroup("", -99, -99, 1, 1) EndFunc #Region INTERNAL USE ONLY Func _RoundUp($m) Local $rv = Round(Ceiling($m/10)*10,-1) Return $rv EndFunc Func _CreateBarCanvas($iX=0, $iY=0, $iW=400, $iH=400, $iDepthCanvas=30, $BgColor=0xD4D4D4) Local $iXCanvas=$iX+$iDepthCanvas Local $iYCanvas=$iY+10+2*$iDepthCanvas Local $iWCanvas=$iW-2*$iDepthCanvas Local $iHCanvas=$iH-2*$iDepthCanvas Local $BgColor2 = $BgColor - 0x333333 ;create bg for the bars For $i=0 To $iDepthCanvas GUICtrlCreateGraphic($iXCanvas+$i, $iYCanvas-$i, $iWCanvas, $iHCanvas, 0) GUICtrlSetBkColor(-1, $BgColor) GUICtrlSetColor(-1, $BgColor2) GuiCtrlSetState(-1,$GUI_ONTOP) Next GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, $iHCanvas) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $BgColor) GUICtrlSetGraphic(-1, $GUI_GR_LINE, -$iDepthCanvas-1, $iHCanvas+$iDepthCanvas+1) ;horizontal grid For $i=0 To $iHCanvas Step $iHCanvas/5 GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, $i) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $BgColor2) GUICtrlSetGraphic(-1, $GUI_GR_LINE, $iWCanvas, $i) GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 0, $i) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, $BgColor) GUICtrlSetGraphic(-1, $GUI_GR_LINE, -$iDepthCanvas, $i+$iDepthCanvas) Next Local $Canvas = StringSplit($iXCanvas+$iDepthCanvas &"|"& $iYCanvas-$iDepthCanvas&"|"&$iWCanvas&"|"&$iHCanvas&"|"&$iDepthCanvas,"|",2) Return $Canvas EndFunc #EndRegion INTERNAL USE ONLY Modify it to fit your needs. Regards, taietel Things you should know first...In the beginning there was only ONE! And zero... Progs: Create PDF(TXT2PDF,IMG2PDF) 3D Bar Graph DeskGadget Menu INI Photo Mosaic 3D Text Link to comment Share on other sites More sharing options...
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