Código: Selecionar todos
#include "minigui.ch"
**************************************
FUNCTION main
**************************************
SELE 0
USE RELAT ALIAS RELAT EXCLUSIVE
DBGOTOP()
SELE 0
USE RELAT1 ALIAS RELAT1 EXCLUSIVE
DBGOTOP()
nUmrEgs := 0
WHILE !EOF()
FLOCK()
relat1->valor_c := TRANSF(valor,'999,999.99')
DBUNLOCK()
SKIP
nUmrEgs := nUmrEgs +1
END
*** limitado a 30 produtos, senão o gráfico fica horrivel....
IF nUmrEgs > 30
nUmrEgs := 30
END
INDEX ON DESCEND(valor_c) TO ind1
SET INDEX TO ind1
SUM valor to tOtMvgraf
tOtMvgraf := ALLTRIM(TRANS(tOtMvgraf,'999,999.99'))
nUmCampo := 1
DBGOTOP()
WHILE !EOF()
SELE relat
vArSbs_v := 'v' + ALLTRIM(STR(nUmCampo))
vArSbs_d := 'd' + ALLTRIM(STR(nUmCampo))
FLOCK()
relat->&vArSbs_v. := relat1->valor
relat->&vArSbs_d. := relat1->desc
DBUNLOCK()
nUmCampo ++
SELE relat1; SKIP
END
SELE relat; DBGOTOP()
**** SERIES
mAin_nUmrEgs := nUmrEgs
vArdnUm := 1
vArdvAlor := 'relat->'
WHILE mAin_nUmrEgs > 1
IF mAin_nUmrEgs == 2
vArdvAlor := vArdvAlor + 'v' + ALLTRIM(STR(vArdnUm))
ELSE
vArdvAlor := vArdvAlor + 'v' + ALLTRIM(STR(vArdnUm)) + ', '
END
IF mAin_nUmrEgs # 2
vArdvAlor := vArdvAlor + 'relat->'
END
mAin_nUmrEgs --
vArdnUm ++
END
**** SERIESNAMES
mAin_nUmrEgs := nUmrEgs
vArdnUm := 1
vArddEscr := 'relat->'
WHILE mAin_nUmrEgs > 1
IF mAin_nUmrEgs == 2
vArddEscr := vArddEscr + 'd' + ALLTRIM(STR(vArdnUm))
ELSE
vArddEscr := vArddEscr + 'd' + ALLTRIM(STR(vArdnUm)) + ', '
END
IF mAin_nUmrEgs # 2
vArddEscr := vArddEscr + 'relat->'
END
mAin_nUmrEgs --
vArdnUm ++
END
define window m at 0,0 width 920 height 800 main ;
Title 'VENDAS';
backcolor {204,204,204}
cOrGraf := ''
geracor()
showpie()
end window
m.center
m.activate
CLOSE DATABASE
RETURN NIL
**************************************
FUNCTION showpie()
**************************************
ERASE WINDOW m
DRAW GRAPH IN WINDOW m AT 5,5;
TO 750,550 ;
TITLE "VENDAS NO PERIODO " + tOtMvgraf;
TYPE PIE;
SERIES {&vArdvAlor.};
DEPTH 25;
SERIENAMES {&vArddEscr.};
COLORS {&cOrGraf.};
3DVIEW;
SHOWXVALUES;
SHOWLEGENDS DATAMASK "99,999"
RETURN NIL
***************************************
FUNCTION geracor()
***************************************
IF nUmrEgs == 1
cOrGraf := '{255,000,000}'
ELSEIF nUmrEgs == 2
cOrGraf := '{255,000,000},{000,255,255}'
ELSEIF nUmrEgs == 3
cOrGraf := '{255,000,000},{000,255,255},{127,255,212}'
ELSEIF nUmrEgs == 4
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255}'
ELSEIF nUmrEgs == 5
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226}'
ELSEIF nUmrEgs == 6
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042}'
ELSEIF nUmrEgs == 7
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000}'
ELSEIF nUmrEgs == 8
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030}'
ELSEIF nUmrEgs == 9
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237}'
ELSEIF nUmrEgs == 10
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160}'
ELSEIF nUmrEgs == 11
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060}'
ELSEIF nUmrEgs == 12
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139}'
ELSEIF nUmrEgs == 13
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000}'
ELSEIF nUmrEgs == 14
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000}'
ELSEIF nUmrEgs == 15
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000}'
ELSEIF nUmrEgs == 16
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079}'
ELSEIF nUmrEgs == 17
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105}'
ELSEIF nUmrEgs == 18
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034}'
ELSEIF nUmrEgs == 19
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220}'
ELSEIF nUmrEgs == 20
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047}'
ELSEIF nUmrEgs == 21
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092}'
ELSEIF nUmrEgs == 22
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130}'
ELSEIF nUmrEgs == 23
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140}'
ELSEIF nUmrEgs == 24
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140},{230,230,250}'
ELSEIF nUmrEgs == 25
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140},{230,230,250},{032,178,170}'
ELSEIF nUmrEgs == 26
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140},{230,230,250},{032,178,170},{119,186,153}'
ELSEIF nUmrEgs == 27
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140},{230,230,250},{032,178,170},{119,186,153},{128,000,000}'
ELSEIF nUmrEgs == 28
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140},{230,230,250},{032,178,170},{119,186,153},{128,000,000},{250,250,112}'
ELSEIF nUmrEgs == 29
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140},{230,230,250},{032,178,170},{119,186,153},{128,000,000},{250,250,112},{255,150,112}'
ELSEIF nUmrEgs == 30
cOrGraf := '{255,000,000},{000,255,255},{127,255,212},{000,000,255},{138,043,226},{165,042,042},{127,255,000},{210,105,030},{100,149,237},{095,158,160},{220,020,060},{000,000,139},{000,100,000},{255,140,000},{139,000,000},{047,079,079},{105,105,105},{034,139,034},{220,220,220},{173,255,047},{205,092,092},{075,000,130},{240,230,140},{230,230,250},{032,178,170},{119,186,153},{128,000,000},{250,250,112},{255,150,112},{102,102,000}'
END
#ifndef __XHARBOUR__
#pragma BEGINDUMP
#include "hbapi.h"
#pragma ENDDUMP
#endif
O esquema de cores acho que teria como melhorar, alguma idéia seria bem vinda !