Bonjour à tous.
J'ai pas beaucoup le temps de programmer en ce moment, mais je continue avec cette DLL dès que j'ai un moment.
Voici donc une nouvelle version avec 2 graphiques (2 régions) dans la même fenêtre. De plus lorsque vous appuyez sur le bouton gauche de la souris sur un point du graphique, cela ouvre une petite fenêtre qui renseigne sur le point cliqué. Cette fenêtre disparait dès qu'on relache le bouton.
Juste une petite question si quelqu'un peut me répondre. A quoi peut servir la fonction:
A colorier la fenêtre c'est certain. Mais le problème c'est qu'après avoir utiliser cette commande, les fonctions drawtext(), circle(), line() etc... ne fonctionnent plus.
Essayez d'enlever le commentaire de la ligne 165 et vous verrez.
Je fait peut être une erreur quelque part, ou bien faut-il utiliser le callback dans ce cas là ? Ou alors un bug de PureBasic ?
Code : Tout sélectionner
XIncludeFile "RMChart.pbi"
Global RMC_OldCallBack.l,IndexInfo.b
Global Dim Jsemaine$(6)
Global Dim Mesure$(3)
Global Dim Unite$(3)
Restore JourSemaine
For n=0 To 6
Read Jsemaine$(n)
Next n
Restore Mesures
For n=1 To 3
Read Mesure$(n)
Next n
Restore Unites
For n=1 To 3
Read Unite$(n)
Next n
If Not RMC_INIT()
MessageRequester("Error", "Can't initialized RMCHART.DLL", #MB_ICONERROR)
End
EndIf
#ChartID = 1
#RegionID = 1
#RegionID2 = 2
flags = #PB_Window_SystemMenu
flags | #PB_Window_SizeGadget
flags | #PB_Window_ScreenCentered
flags | #PB_Window_MinimizeGadget
flags | #PB_Window_MaximizeGadget
#LabelAxe="1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16*17*18*19*20*21*22*23*24*25*26*27*28*29*30*31"
tRegion.tRMC_REGION
tRegion\nLeft.l =5
tRegion\nTop.l =5
tRegion\nWidth.l =-5
tRegion\nHeight.l =400
PokeS(@tRegion\sFooter ,"Octobre 2005",200)
tRegion\nShowBorder.l =#True
tRegion2.tRMC_REGION
tRegion2\nLeft.l =5
tRegion2\nTop.l =410
tRegion2\nWidth.l =-5
tRegion2\nHeight.l =-5
PokeS(@tRegion2\sFooter ,"Octobre 2005",200)
tRegion2\nShowBorder.l =#True
tGrid.tRMC_GRID
tGrid\nGridBackColor = #ColorBeige
tGrid\nAsGradient = #True
tGrid\nBicolor = #RMC_BICOLOR_NONE
tGrid\nLeft = 0
tGrid\nTop = 0
tGrid\nWidth = 0
tGrid\nHeight = 0
tGrid2.tRMC_GRID
tGrid2\nGridBackColor = #ColorTan
tGrid2\nAsGradient = #True
tGrid2\nBicolor = #RMC_BICOLOR_NONE
tGrid2\nLeft = 0
tGrid2\nTop = 0
tGrid2\nWidth = 0
tGrid2\nHeight = 0
tLineSeries.tRMC_LINESERIES
tLineSeries\nType.l =#RMC_LINE
tLineSeries\nStyle.l =#RMC_LINE_CABLE_SHADOW
tLineSeries\nLineStyle.l =#RMC_LSTYLE_LINE_AREA
tLineSeries\nIsLucent.l =#False
tLineSeries\nColor.l =#ColorSpringGreen
tLineSeries\nSeriesSymbol.l =#RMC_SYMBOL_BULLET
tLineSeries\nWhichDataAxis.l =1
tLineSeries\nValueLabelOn.l =#RMC_VLABEL_NONE
tLineSeries\nHatchMode.l =#RMC_HATCHBRUSH_OFF
tLineSeries2.tRMC_LINESERIES
tLineSeries2\nType.l =#RMC_LINE
tLineSeries2\nStyle.l =#RMC_LINE_CABLE_SHADOW
tLineSeries2\nLineStyle.l =#RMC_LSTYLE_LINE
tLineSeries2\nIsLucent.l =#False
tLineSeries2\nColor.l =#ColorRed
tLineSeries2\nSeriesSymbol.l =#RMC_SYMBOL_BULLET
tLineSeries2\nWhichDataAxis.l =1
tLineSeries2\nValueLabelOn.l =#RMC_VLABEL_NONE
tLineSeries2\nHatchMode.l =#RMC_HATCHBRUSH_OFF
tLineSeries3.tRMC_LINESERIES
tLineSeries3\nType.l =#RMC_LINE
tLineSeries3\nStyle.l =#RMC_LINE_CABLE_SHADOW
tLineSeries3\nLineStyle.l =#RMC_LSTYLE_LINE
tLineSeries3\nIsLucent.l =#False
tLineSeries3\nColor.l =#ColorBananaYellow
tLineSeries3\nSeriesSymbol.l =#RMC_SYMBOL_BULLET
tLineSeries3\nWhichDataAxis.l =2
tLineSeries3\nValueLabelOn.l =#RMC_VLABEL_NONE
tLineSeries3\nHatchMode.l =#RMC_HATCHBRUSH_OFF
tBareSeries.tRMC_BARSERIES
tBareSeries\nType.l =#RMC_BARSINGLE
tBareSeries\nStyle.l =#RMC_BAR_FLAT
tBareSeries\nIsLucent.l =#False
tBareSeries\nColor.l =#ColorWhiteSmoke
tBareSeries\nIsHorizontal.l =#False
tBareSeries\nWhichDataAxis.l =1
tBareSeries\nValueLabelOn.l =#RMC_VLABEL_NONE
tBareSeries\nPointsPerColumn.l =1
tBareSeries\nHatchMode.l =#RMC_HATCHBRUSH_ON
Dim aData.d(30)
For n=0 To 30
aData(n)=Random(15)
Next n
Dim aData2.d(30)
For n=0 To 30
aData2(n)=Random(10)+20
Next n
Dim aData3.d(30)
For n=0 To 30
aData3(n)=Random(15)+60
Next n
Dim aData4.d(30)
For n=0 To 30
aData4(n)=Random(15)+1000
Next n
Procedure.l RMC_MyCallback(WindowID, message, wParam, lParam)
Protected Result.l = CallWindowProc_(RMC_OldCallBack, WindowID, message, wParam, lParam)
Select message
Case #WM_COMMAND
Select (wParam >> 16)
Case #RMC_LBUTTONDOWN
*TINFO.tRMC_INFO = lParam
If *TINFO
IndexInfo=*TINFO\nDataIndex
date$=Str(*TINFO\nDataIndex)+"/"+"10"+"/"+"2005"
Date=ParseDate("%dd/%mm/%yyyy",date$)
j$=Jsemaine$(DayOfWeek(Date))
If *TINFO\nRegionIndex=1 And *TINFO\nDataIndex<>0
OpenWindow(1,(WindowMouseX(0)+WindowX(0))+5,(WindowMouseY(0)+WindowY(0))-15,150,50,"",#PB_Window_BorderLess)
;SetWindowColor(1, $FFFDF)
StartDrawing(WindowOutput(1))
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor($FF0000)
DrawText(5,5,j$)
DrawText(5,17,date$)
DrawText(5,29,Mesure$(*TINFO\nSeriesIndex)+" "+ StrD(*TINFO\nData1,2)+Unite$(*TINFO\nSeriesIndex))
StopDrawing()
EndIf
If *TINFO\nRegionIndex=2 And *TINFO\nDataIndex<>0
OpenWindow(1,(WindowMouseX(0)+WindowX(0))+5,(WindowMouseY(0)+WindowY(0))-15,150,50,"",#PB_Window_BorderLess)
StartDrawing(WindowOutput(1))
DrawingMode(#PB_2DDrawing_Transparent)
FrontColor($FF0000)
DrawText(5,5,j$)
DrawText(5,17,date$)
DrawText(5,29,"Pression"+" "+StrD(*TINFO\nData1,0)+" "+"hPa")
StopDrawing()
EndIf
EndIf
Case #RMC_LBUTTONUP
If IndexInfo<>0
CloseWindow(1)
EndIf
Case #RMC_LBUTTONDBLCLK
Case #RMC_RBUTTONDOWN
Case #RMC_RBUTTONUP
Case #RMC_RBUTTONDBLCLK
Case #RMC_MBUTTONDOWN
Case #RMC_MBUTTONUP
Case #RMC_MBUTTONDBLCLK
Case #RMC_SHIFTLBUTTONDOWN
Case #RMC_SHIFTLBUTTONUP
Case #RMC_SHIFTLBUTTONDBLCLK
Case #RMC_SHIFTRBUTTONDOWN
Case #RMC_SHIFTRBUTTONUP
Case #RMC_SHIFTRBUTTONDBLCLK
Case #RMC_SHIFTMBUTTONDOWN
Case #RMC_SHIFTMBUTTONUP
Case #RMC_SHIFTMBUTTONDBLCLK
Case #RMC_CTRLLBUTTONDOWN
Case #RMC_CTRLLBUTTONUP
Case #RMC_CTRLLBUTTONDBLCLK
Case #RMC_CTRLRBUTTONDOWN
Case #RMC_CTRLRBUTTONUP
Case #RMC_CTRLRBUTTONDBLCLK
Case #RMC_CTRLMBUTTONDOWN
Case #RMC_CTRLMBUTTONUP
Case #RMC_CTRLMBUTTONDBLCLK
Case #RMC_MOUSEMOVE
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 650, 900,"Graphique températures", flags)
If RMC_CreateChart(WindowID(0), #ChartID, 0,0,650, 900,#ColorLavender , #RMC_CTRLSTYLEFLAT,#False,"", "Tahoma")=#RMC_NO_ERROR
RMC_AddRegionI(#RegionID,tRegion)
RMC_AddGridI(#ChartID, #RegionID,tGrid)
RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISLEFT,-15, 40, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "°", "Températures")
RMC_AddDataAxis(#ChartID, #RegionID,#RMC_DATAAXISRIGHT,0,100, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "%", "Humidité")
RMC_AddLabelAxis(#ChartID, #RegionID,#LabelAxe,1, 31,#RMC_LABELAXISBOTTOM, 8,0,#RMC_TEXTUPWARD,0,#RMC_LINESTYLESOLID,"Jours Mois")
RMC_Addlegend(#ChartID, #RegionID,"T° Matin*T° Après Midi*% Humidité",#RMC_LEGEND_CUSTOM_LL,#ColorLightYellow,#RMC_LEGENDRECT,#ColorDesertBlue,8,#False)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData.d(0),31,@aData.d(0),1,tLineSeries)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData2.d(0),31,@aData2.d(0),1,tLineSeries2)
RMC_AddLineSeriesI(#ChartID, #RegionID,@aData3.d(0),31,@aData3.d(0),1,tLineSeries3)
RMC_AddRegionI(#RegionID,tRegion2)
RMC_AddGridI(#ChartID,#RegionID2,tGrid2)
RMC_AddDataAxis(#ChartID, #RegionID2,#RMC_DATAAXISLEFT,995, 1030, 11, 8,0,0, #RMC_LINESTYLESOLID, 0, "", "Pression")
RMC_AddLabelAxis(#ChartID, #RegionID2,#LabelAxe,1, 31,#RMC_LABELAXISBOTTOM, 8,0,#RMC_TEXTUPWARD,0,#RMC_LINESTYLESOLID,"Jours Mois")
RMC_AddBarSeriesI(#ChartID, #RegionID2,@aData4.d(0),31,tBareSeries)
RMC_Draw(#ChartID)
RMC_OldCallBack = SetWindowLong_(WindowID(0),#GWL_WNDPROC, @RMC_MyCallback())
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
DataSection
JourSemaine:
Data.s "Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"
Mesures:
Data.s "T° Matin","T° Après Midi","Humidité"
Unites:
Data.s "°","°","%"
EndDataSection
End
André.