CLOSE TABLES ALL USE _samples+"data\orders" ORDER cust_id IN 0 USE _samples+"data\orditems" ORDER order_id IN 0
CLOSE TABLES ALL
WITH THIS .CLEAR * Zadáme hlavičku : všimněte si, že "Firma" a "Kč" se zadávají 2×! .ADDITEM(""+CHR(9)+'Firma'+CHR(9)+'Zboží'+CHR(9)+'Množství'+CHR(9)+'Kč',0) .ADDITEM(""+CHR(9)+'Firma'+CHR(9)+'Objednávka'+CHR(9)+'Datum'+CHR(9)+'Kč',0) i = 1 SELECT orders * Vybereme všechny velké objednávky SCAN FOR order_amt > $6000 i = i+1 * Generujeme řádky za objednávky .ADDITEM("(+)"+CHR(9)+to_name+CHR(9)+"Obj. "+TRAN(order_id)+CHR(9)+; TRAN(order_date)+CHR(9)+ALLTRIM(STR(order_net,10,2)),i) .ROW = i .COL = 0 .CellBackColor =RGB(197,243,245) SELECT orditems SCAN FOR order_id+STR(line_no,5,0)= orders.order_id i = i+1 * Generujeme detailní řádky za položky objednávek .ADDITEM(""+CHR(9)+TRAN(orders.to_name)+CHR(9)+" Zboží "+; ALLTRIM(TRAN(product_id))+CHR(9)+TRAN(quantity)+ ; CHR(9)+ALLTRIM(STR(unit_price,10,2)),i) .ROW = i * druhý sloupec položky odlišíme barvou a nastavíme zarovnání zprava .COL = 2 .CellAlignment = 7 .CellBackColor = RGB(127,127,127) * a tyto detailí řádky ihned schováme !!! .ROWHEIGHT(i) = 0 ENDSCAN SELECT orders ENDSCAN * Nastavíme spojování buněk .MergeCells = 3 .MergeCol(0) = .T. .MergeCol(1) = .T. .MergeCol(4) = .T. * Nastavíme pevné řádky a sloupce .FixedRows = 2 .FixedCols = 2 * Nastavíme šířku sloupců .ColWidth(0) = 350 .ColWidth(1) = 3500 .ColWidth(2) = 1500 .ColWidth(3) = 1500 .ColWidth(4) = 1500 * Dovolíme měnit šířku sloupců .AllowUserResizing = 3 ENDWITH
LOCAL lnRows, llExpand WITH THIS * Zjistíme, na jakém řádku jsme lnRows = .mouserow * Ignorujeme hlavičku IF lnRows < 2 RETURN ENDIF * Hledáme objednávku: vracíme se nahoru tak dlouho, pokud jsme na položce DO WHILE lnRows > 0.AND.EMPTY(.textarray(lnRows * .cols)) lnRows=lnRows-1 ENDDO * Rozhodneme se podle +/- llExpand = (.textarray(lnRows*.cols) = '(+)') .textarray(lnRows * .cols) = IIF(llExpand, '(-)', '(+)') * Zobrazíme/schováme příslušné položky lnRows = lnRows + 1 DO WHILE EMPTY(.textarray(lnRows * .cols)) .ROWHEIGHT(lnRows) = IIF(llExpand, -1, 0) lnRows = lnRows + 1 IF lnRows >= .ROWS EXIT ENDIF ENDDO ENDWITH
A to je vše. Mějte se krásně
Milan Kosina, kosina@vol.cz