I've written some functions to better manipulate data in RMChart. I recommend that you read documentation file of RMChart DLL
http://www.rmchart.com/.
Here are the functions (version 1.0):
Code:
#SingleInstance force
SetWorkingDir, %A_ScriptDir%
Gui, Show, w700 h500, RM Chart
Return
GuiClose:
GuiEscape:
ExitApp
f8::
;nParentHndl
nCtrlId=1001
nRegion = 1
sRMCFile = C:\folder\4 regions.rmc
;AHK_RMC_CreateChartFromFile(nParentHndl, nCtrlId, nX, nY, nExportOnly, sRMCFile)
AHK_RMC_CreateChart(nParentHndl, nCtrlId, 50, 50, 500, 400)
AHK_RMC_AddRegion(nCtrlId)
AHK_RMC_AddCaption(nCtrlId, nRegion, "teste*weqw")
AHK_RMC_AddGrid(nCtrlId, nRegion)
AHK_RMC_AddLabelAxis(nCtrlId, nRegion, "Abr/06*Mai*Jun*Jul*Ago*Set*Out*Nov*Dez*Jan/07*Fev*Mar")
AHK_RMC_AddDataAxis(nCtrlId, nRegion)
AHK_RMC_AddDataAxis(nCtrlId, nRegion)
AHK_RMC_AddLineSeries(nCtrlId, nRegion)
;AHK_RMC_SetSeriesData(nCtrlId, nRegion, 1, "20070612", nDataValuesCount)
AHK_RMC_Draw(nCtrlId)
Return
f9::
AHK_RMC_WriteRMCFile(1001, "C:\_delete_rmc_" . A_Now)
Return
AHK_RMC_CreateChartFromFile(nParentHndl, nCtrlId, nX, nY, nExportOnly, sRMCFile) {
{ ;GLOBALs
;GLOBAL nParentHndl
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nParentHndl =
{
Gui +LastFound
nParentHndl := WinExist()
}
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_CreateChartFromFile(
ByVal nParentHndl (LONG),
ByVal nCtrlId (LONG),
ByVal nX (LONG),
ByVal nY (LONG),
ByVal nExportOnly (LONG),
ByRef sRMCFile (ASCIIZ)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_CREATECHARTFROMFILE"
, "UInt", nParentHndl
, "UInt", nCtrlId
, "UInt", nX
, "UInt", nY
, "UInt", nExportOnly
, "Str", sRMCFile)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_CreateChart(nParentHndl, nCtrlId, nX, nY, nWidth, nHeight, nBackColor="", nCtrlStyle="", nExportOnly="", sBgImage="", sFontName="", nToolTipWidth="", nBitmapBKColor="") {
{ ;GLOBALs
;GLOBAL nParentHndl
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nParentHndl =
{
Gui +LastFound
nParentHndl := WinExist()
}
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_CreateChart(
ByVal nParentHndl (LONG),
ByVal nCtrlId (LONG),
ByVal nX (LONG),
ByVal nY (LONG),
ByVal nWidth (LONG),
ByVal nHeight (LONG),
Optional ByVal nBackColor (LONG),
Optional ByVal nCtrlStyle (LONG),
Optional ByVal nExportOnly (LONG),
Optional ByRef sBgImage (ASCIIZ),
Optional ByRef sFontName (ASCIIZ),
Optional ByVal nToolTipWidth (LONG),
Optional ByVal nBitmapBKColor (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_CREATECHART"
, "UInt", nParentHndl
, "UInt", nCtrlId
, "UInt", nX
, "UInt", nY
, "UInt", nWidth
, "UInt", nHeight
, "UInt", nBackColor
, "UInt", nCtrlStyle
, "UInt", nExportOnly
, "Str", sBgImage
, "Str", sFontName
, "UInt", nToolTipWidth
, "UInt", nBitmapBKColor)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_AddRegion(nCtrlId, nLeft="", nTop="", nWidth="", nHeight="", sFooter="", nShowBorder="") {
{ ;GLOBALs
;GLOBAL nParentHndl
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_AddRegion(
ByVal nCtrlId (LONG),
Optional ByVal nLeft (LONG),
Optional ByVal nTop (LONG),
Optional ByVal nWidth (LONG),
Optional ByVal nHeight (LONG),
Optional ByRef sFooter (ASCIIZ),
Optional ByVal nShowBorder (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_ADDREGION"
, "UInt", nCtrlId
, "UInt", nLeft
, "UInt", nTop
, "UInt", nWidth
, "UInt", nHeight
, "Str", sFooter
, "UInt", nShowBorder)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_AddCaption(nCtrlId, nRegion, sCaption, nBackColor="", nTextColor="", nFontsize="", nFontbold="") {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nRegion =
nRegion = 1
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_AddCaption(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
ByRef sCaption (ASCIIZ),
Optional ByVal nBackColor (LONG),
Optional ByVal nTextColor (LONG),
Optional ByVal nFontsize (LONG),
Optional ByVal nFontbold (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_ADDCAPTION"
, "UInt", nCtrlId
, "UInt", nRegion
, "Str", sCaption
, "UInt", nBackColor
, "UInt", nTextColor
, "UInt", nFontsize
, "UInt", nFontbold)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_AddLegend(nCtrlId, nRegion, sLegendtext, nAlignment="", nBackColor="", nStyle="", nTextColor="", nFontsize="", nFontbold="") {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nRegion =
nRegion = 1
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_AddLegend(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
ByRef sLegendtext (ASCIIZ),
Optional ByVal nAlignment (LONG),
Optional ByVal nBackColor (LONG),
Optional ByVal nStyle (LONG),
Optional ByVal nTextColor (LONG),
Optional ByVal nFontsize (LONG),
Optional ByVal nFontbold (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_ADDCAPTION"
, "UInt", nCtrlId
, "UInt", nRegion
, "Str", sLegendtext
, "UInt", nAlignment
, "UInt", nBackColor
, "UInt", nStyle
, "UInt", nTextColor
, "UInt", nFontsize
, "UInt", nFontbold)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_AddGrid(nCtrlId, nRegion, nBackColor="", nAsGradient="", nLeft="", nTop="", nWidth="", nHeight="", nBiColor="") {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nRegion =
nRegion = 1
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_AddGrid(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
Optional ByVal nBackColor (LONG),
Optional ByVal nAsGradient (LONG),
Optional ByVal nLeft (LONG),
Optional ByVal nTop (LONG),
Optional ByVal nWidth (LONG),
Optional ByVal nHeight (LONG),
Optional ByVal nBiColor (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_ADDGRID"
, "UInt", nCtrlId
, "UInt", nRegion
, "UInt", nBackColor
, "UInt", nAsGradient
, "UInt", nLeft
, "UInt", nTop
, "UInt", nWidth
, "UInt", nHeight
, "UInt", nBiColor)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_AddLabelAxis(nCtrlId, nRegion, sLabels, nAxisCount="", nTickcount="", nAlignment="", nFontsize="", nTextcolor="", nTextalignment="", nLinecolor="", nLinestyle="", sText="") {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nRegion =
nRegion = 1
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_AddLabelAxis(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
ByRef sLabels (ASCIIZ),
Optional ByVal nAxisCount (LONG),
Optional ByVal nTickcount (LONG),
Optional ByVal nAlignment (LONG),
Optional ByVal nFontsize (LONG),
Optional ByVal nTextcolor (LONG),
Optional ByVal nTextalignment (LONG),
Optional ByVal nLinecolor (LONG),
Optional ByVal nLinestyle (LONG),
Optional ByRef sText (ASCIIZ)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_ADDLABELAXIS"
, "UInt", nCtrlId
, "UInt", nRegion
, "Str", sLabels
, "UInt", nAxisCount
, "UInt", nTickcount
, "UInt", nAlignment
, "UInt", nFontsize
, "UInt", nTextcolor
, "UInt", nTextalignment
, "UInt", nLinecolor
, "UInt", nLinestyle
, "Str", sText)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_AddDataAxis(nCtrlId, nRegion, nAlignment="", nMinvalue="", nMaxvalue="", nTickcount="", nFontsize="", nTextcolor="", nLinecolor="", nLinestyle="", nDecimalDigits="", sUnit="", sText="", sLabels="", nLabelAlignment="") {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nRegion =
nRegion = 1
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_AddDataAxis(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
Optional ByVal nAlignment (LONG),
Optional ByVal nMinvalue (DOUBLE),
Optional ByVal nMaxvalue (DOUBLE),
Optional ByVal nTickco (ASCCIZ),
Optional ByRef nLabelAlignment (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_ADDDATAAXIS"
, "UInt", nCtrlId
, "UInt", nRegion
, "UInt", nAlignment
, "UInt", nMinvalue
, "UInt", nMaxvalue
, "UInt", nTickcount
, "UInt", nFontsize
, "UInt", nTextcolor
, "UInt", nLinecolor
, "UInt", nLinestyle
, "UInt", nDecimalDigits
, "Str", sUnit
, "Str", sText
, "Str", sLabels
, "UInt", nLabelAlignment)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_AddLineSeries(nCtrlId, nRegion, nFirstDataValue="", nDataValuesCount="", nFirstPPCValue="", nPPCValuesCount="", nType="", nStyle="", nLineStyle="", nIsLucent="", nColor="", nSymbol="", nWhichDataAxis="", nValueLabelOn="", nHatchMode="") {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nRegion =
nRegion = 1
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult& = RMC_AddLineSeries(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
Optional ByRef nFirstDataValue (DOUBLE),
Optional ByVal nDataValuesCount (LONG),
Optional ByRef nFirstPPCValue (LONG),
Optional ByVal nPPCValuesCount (LONG),
Optional ByVal nType (LONG),
Optional ByVal nStyle (LONG),
Optional ByVal nLineStyle (LONG),
Optional ByVal nIsLucent (LONG),
Optional ByVal nColor (LONG),
Optional ByVal nSymbol (LONG),
Optional ByVal nWhichDataAxis (LONG),
Optional ByVal nValueLabelOn (LONG),
Optional ByVal nHatchMode (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_ADDLINESERIES"
, "UInt", nCtrlId
, "UInt", nRegion
, "UInt", nFirstDataValue
, "UInt", nDataValuesCount
, "UInt", nFirstPPCValue
, "UInt", nPPCValuesCount
, "UInt", nType
, "UInt", nStyle
, "UInt", nLineStyle
, "UInt", nIsLucent
, "UInt", nColor
, "UInt", nSymbol
, "UInt", nWhichDataAxis
, "UInt", nValueLabelOn
, "UInt", nHatchMode)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_SetSeriesData(nCtrlId, nRegion, nSeries, nFirstDataValue, nDataValuesCount, nYData="") {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
If nRegion =
nRegion = 1
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_SetSeriesData(
ByVal nCtrlId (LONG),
ByVal nRegion (LONG),
ByVal nSeries (LONG),
ByRef nFirstDataValue (DOUBLE),
ByVal nDataValuesCount (LONG),
Optional ByVal nYData (LONG)
)
*/
}
{ ;CALL DLL
nResult := DllCall("rmchart.dll\RMC_SETSERIESDATA"
, "UInt", nCtrlId
, "UInt", nRegion
, "UInt", nSeries
, "UInt", nFirstDataValue
, "UInt", nDataValuesCount
, "UInt", nYData)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_Draw(nCtrlId) {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_Draw(
ByVal nCtrlId (LONG)
)
*/
}
{ ;CALL DLL
nresult := DllCall("rmchart.dll\RMC_DRAW"
, "UInt", nCtrlId)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
AHK_RMC_WriteRMCFile(nCtrlId, sRMCFile) {
{ ;GLOBALs
;GLOBAL
;STATIC
}
{ ;DEFAULTs
If nCtrlId =
nCtrlId = 1001
}
{ ;LOAD LIBRARY
hModule := DllCall("LoadLibrary", "str", "rmchart.dll")
}
{ ;SYNTAX
/*
nResult (LONG) = RMC_WriteRMCFile(
ByVal nCtrlId (LONG),
ByRef sRMCFile (ASCIIZ)
)
*/
}
{ ;CALL DLL
nresult := DllCall("rmchart.dll\RMC_WRITERMCFILE"
, "UInt", nCtrlId
, "Str", sRMCFile)
}
{ ;ERROR
If nResult <> 0
MsgBox, 0, Error RMChart - Line %A_LineNumber%, %nResult%
}
}
Use F8 and F9 to create the chart.
I strongly recommend Notepad++ to use functions
The code of the file 4 regions.rmc is (altogether in one line):
Code:
00003700|00004500|000054|000061|000071|00008-984833|00009221|00011Tahoma
|100011|100032|100042|10005348|10006248|1000910|100101|100111|100181|100200|10021100
|1002211|100238|100331|100341|100355|100378|100481|100491|10051-984833|10052-16777216
|10053-657956|100541|100558|10056-16777216|10057-16777216|10060-16777216|10061-16777216
|10187Label 1*Label 2*Label 3*Label 4*Label 5|110011|110021|110031
|110046|110056|11006-1|110091|110131|11014-1|110171|1102111|110221|110235|1105330*40*70*60*20
|200011|20003352|200042|20005-2|20006248|2000910|200101|200111|200181|200200|20021100|2002211
|200238|200331|200341|200355|200378|200484|200491|20051-984833|20052-16777216|20053-657956
|200544|200555|20056-16777216|20057-16777216|20060-16777216|20061-16777216|20187Label 1*Label 2*Label 3*Label 4*Label 5
|210011|210023|210033|210045|210055|21006-1|210091|210101|210131|21014-1|210171|2102111|210221
|210235|2105320*10*15*25*30|220011|220023|220033|220045|220055|22006-1|220091|220101|220131
|22014-1|220171|2202111|220221|220235|2205325*30*10*20*15|230011|230023|230033|230045|230055
|23006-1|230091|230101|230131|23014-1|230171|2302111|230221|230235|2305310*20*40*20*30|240011
|240023|240033|240045|240055|24006-1|240091|240101|240131|24014-1|240171|2402111|240221|240235
|2405340*30*20*30*20|300011|300032|30004252|30005348|30006-2|3000910|300101|300181|300481
|300491|30051-984833|30052-16777216|30053-657956|310011|3100251|310031|3100454|310054|310071
|310091|310121|310151|310161|310171|310182|310211|310221|310235|3105330*50*20*40*60|400011
|40003352|40004252|40005-2|40006-2|4000910|400101|400111|400131|400181|40020100|40021250
|4002211|400238|400281|400292|400300|400310|400322|400331|400341|4003510|400378|400482
|400492|40051-984833|40052-16777216|40053-984833|400541|400558|40056-16776961|40057-16777216
|400592|40060-16777216|40061-16777216|40183$ |40185 %|410011
|410021|410031|410043|410053|41006-1|4100950|410131|41014-1|410171|41019-10496|4102111|410221
|4102310|41053240*230*220*180*170*160*145*130*125*115|420011|4200221|420035|4200422|420052
|420061|420071|4200963|420111|420121|420131|420171|42019-16744448|4202115|420221|4202310
|420261|420538.1*6.2*4.3*2.2*1.2*3.1*5.2*11.4*7.3*4.2
[Moderator's note - This codeblock was edited to make it not crazy wide - all of those numbers should be in one line]