>#Define TESTDATALOC _samples+'data\testdata.DBC' > >Public oForm >oForm = Createobject('myForm') >oForm.Show > >Define Class myform As Form > Top = 0 > Left = 0 > Height = 480 > Width = 750 > DoCreate = .T. > Caption = "Flex Grid Sort Sample - Drag a column to left to group by it" > > Add Object hflex As OleControl With ; > Top = 0, ; > Left = 0, ; > Height = 420, ; > Width = 750, ; > Name = "Hflex", ; > OleClass = 'MSHierarchicalFlexGridLib.MSHFlexGrid' > > Add Object cmdFun As CommandButton ; > with Top = 425, Caption='Show some other features', AutoSize = .T. > > Procedure dosort > Lparameters toObject > With toObject > .Col = 0 > .ColSel = .Cols - 1 > .Sort = 1 && Generic Ascending > Endwith > Endproc > > Procedure hflex.MouseDown > *** ActiveX Control Event *** > Lparameters Button, Shift, x, Y > With This > .Tag = "" > If .MouseRow = 0 > .Tag = Str(.MouseCol) > .Drag( 1 ) > Endif > Endwith > Endproc > > Procedure hflex.DragDrop > Lparameters oSource, nXCoord, nYCoord > If !Empty(This.Tag) > With This > .Redraw = .F. > .ColPosition(Val(.Tag)) = .MouseCol > Thisform.dosort(This) > .Redraw = .T. > Endwith > Endif > Endproc > > Procedure Init > > Local oRecordset,oConnection, strCn, strShp > > strCn = [Provider=MSDataShape;Persist Security Info=False;]+; > [Data Source=]+TESTDATALOC+[;Data Provider=VFPOLEDB] > strShp = [SHAPE { select customer.cust_id, Company, ]+; > [ orders.order_id, order_date, order_net, shipped_on, ]+; > [ line_no, prod_name ] +; > [ From customer ]+; > [ Left Outer Join orders ]+ ; > [ On customer.cust_id = orders.cust_id ] +; > [ inner Join orditems ]+ ; > [ On orditems.order_id = orders.order_id ] +; > [ inner Join products ]+ ; > [ On orditems.product_id = products.product_id } ] > > > oRecordset = Createobject("adodb.recordset") > oConnection = Createobject("adodb.connection") > > With oConnection > .Provider = "MSDataShape" > .ConnectionString = strCn > .Open > Endwith > > With oRecordset > .ActiveConnection = oConnection > .Source = strShp > .Open > Endwith > > > With Thisform.hflex > .Datasource = oRecordset > For ix = 1 To .Cols - 1 > .MergeCol(ix) = .T. > Endfor > .MergeCells = 3 > > Endwith > Thisform.dosort(Thisform.hflex) > Endproc > > Procedure cmdFun.Click > With Thisform.hflex > .FixedRows=1 && Number of rows fixed at top > .FixedCols=1 && Number of Cols Fixed at Left > > .FillStyle = 1 && Repeat > .WordWrap = .T. > > * First Column > .Row = 1 > .Col = 0 > .Rowsel = .Rows-1 > .ColSel = 0 > .CellBackcolor = 0xFF0000 && Set all to blue backcolor > .CellForeColor = 0xFFFFFF && Set all to white forecolor > .CellAlignment = 9 && General - strings Left,Center > .CellFontName = 'Arial' > .CellFontBold = .T. > .CellFontItalic = .F. > .CellFontSize = 9 > > * First Row > .Row = 0 > .Col = 1 > .Rowsel = 0 > .ColSel = .Cols-1 > .CellBackcolor = 0xFF0000 && Set all to blue backcolor > .CellForeColor = 0xFFFFFF && Set all to white forecolor > .CellAlignment = 9 && General - strings Left,Center > .CellFontName = 'Arial' > .CellFontBold = .T. > .CellFontItalic = .F. > .CellFontSize = 9 > > *Initial coloring of data cells > .Col = 1 > .Row = 1 > .ColSel = .Cols-1 > .Rowsel = .Rows-1 > .CellAlignment = 9 && General - strings Left,Center > .CellBackcolor=0x00FFFF && Set all to yellow > > * Enter some manual text on row 4,7 on lefmost fixed col > .TextMatrix(4,0)="Manual 4" > .TextMatrix(7,0)="Manual 7" > > * Enter text manually in left topmost corner cell > .TextMatrix(0,0)="VFP:)" > > * Change color for a group of cells > .Row = 4 && rectangle top row > .Col = 5 && rectangle left col > .Rowsel = 5 && rectangle row end (not 5 rows, end row is 5) > .ColSel = 7 && rectangle right col > .CellBackcolor = 0xFFFF00 && Set all to cyan backcolor > .CellForeColor = 0xFF0000 && Set all to blue forecolor > Endwith > Endproc >Enddefine >>
>#Define TESTDATALOC _samples+"data\testdata.DBC" > >Public oForm >oForm = Createobject('myForm') >oForm.Show > > >Define Class myform As Form > Top = 0 > Left = 0 > Height = 450 > Width = 750 > DoCreate = .T. > Caption = "Form1" > Name = "Form1" > > Add Object command1 As CommandButton With ; > Autosize = .T., ; > Top = 0, ; > Left = 0, ; > Name = "Set1", ; > Caption = 'Sample 1' > > Add Object command2 As CommandButton With ; > Autosize = .T., ; > Top = 0, ; > Left = 0, ; > Name = "Set2", ; > Caption = 'Sample 2' > > Add Object hflex As OleControl With ; > Top = 0, ; > Left = 0, ; > Height = 420, ; > Width = 750, ; > Name = "Hflex", ; > OleClass = 'MSHierarchicalFlexGridLib.MSHFlexGrid' > > Procedure LoadSet > Lparameters tnSet > Local oRecordset,oConnection, strCn, strShp > > strCn = [Provider=MSDataShape;Persist Security Info=False;]+; > [Data Source=]+TESTDATALOC+[;Data Provider=VFPOLEDB] > > > lcSel1 = [ select customer.cust_id, ]+; > [ customer.Company,]+; > [ orders.order_id,]+; > [ orders.Order_date ]+; > [ From customer ]+; > [ inner Join orders On customer.cust_id = orders.cust_id ] > > lcSel2 = [ select od.order_id, od.line_no, ]+; > [ products.prod_name, ]+; > [ products.no_in_unit As 'Packaging', ]+; > [ od.unit_price, ]+; > [ od.Quantity, ]+; > [ od.unit_price * od.Quantity As ExtendedPrice ]+; > [ From orditems As od ]+; > [ inner Join products On od.product_id = products.product_id ] > > Do Case > Case tnSet = 1 > > strShp = [SHAPE { select Company, cust_id from customer } ]+; > [Append (( Shape { Select Distinct First_name, Last_name, a.emp_id + cust_id As "Emp_sel", cust_id From employee a inner Join orders b On a.emp_id = b.emp_id } ]+; > [Append (( Shape { Select Order_date, order_net, shipped_on, emp_id + cust_id As "Emp_sel",order_id From orders } ]+; > [Append ( { Select order_id, line_no, prod_name From orditems inner Join products On products.product_id = orditems.product_id } As rsOrditems ]+; > [Relate order_id To order_id )) As rsEmployee ]+; > [Relate emp_sel To emp_sel )) As rsOrders ]+; > [Relate cust_id To cust_id ) ] > Case tnSet = 2 > strShp = [ SHAPE ]+; > [(Shape {]+lcSel1+[ } as rs1 ]+; > [ Append ({]+lcSel2+[ } AS rsDetails RELATE order_id TO order_id), ]+; > [ Sum(rsDetails.ExtendedPrice) As OrderTotal, Any(rsDetails.order_id)) As rsOrders ]+; > [Compute rsOrders, ]+; > [Sum(rsOrders.OrderTotal) As CustTotal, ]+; > [Any(rsOrders.Company) As Cmpny ]+; > [ By cust_id ] > > Endcase > > oRecordset = Createobject("adodb.recordset") > oConnection = Createobject("adodb.connection") > > With oConnection > .Provider = "MSDataShape" > .ConnectionString = strCn > .Open > Endwith > With oRecordset > .ActiveConnection = oConnection > .Source = strShp > .Open > Endwith > > With This.hflex > .Datasource = oRecordset > .Mergecells = 3 > .GridColorBand(1) = Rgb(255,0,0) > .GridColorBand(2) = Rgb(0,0,255) > .GridColorBand(3) = Rgb(0,255,0) > .ColWidth(0,0) = 300 > .CollapseAll > Endwith > Endproc > > Procedure Init > With This > .Set2.Left = .Set1.Left + .Set1.Width + 5 > .hflex.Top = .Set1.Top + .Set1.Height + 5 > .hflex.Height = .Height - (.hflex.Top + 5) > .hflex.Left = 5 > .hflex.Width = .Width - 10 > .LoadSet(1) > Endwith > Endproc > Procedure Set1.Click > Thisform.LoadSet(1) > Endproc > Procedure Set2.Click > Thisform.LoadSet(2) > Endproc >Enddefine >>Cetin