- <?xml version="1.0" encoding="utf-8"?>
- <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" close="closeWin();"
- layout="absolute" width="800" height="486" creationComplete="initWin();"
- showCloseButton="true" title="打印設置" fontSize="12">
- <mx:Script source="../model/PrintConfig.as"/>
- <mx:Tile id="chkContent" paddingLeft="15" paddingTop="10" borderStyle="solid"
- right="10" bottom="47" height="131" left="10">
- <mx:CheckBox click="chkBox(1,event);" label="姓名" selected="true"/>
- <mx:CheckBox click="chkBox(2,event);" label="工作單位" selected="true"/>
- <mx:CheckBox click="chkBox(3,event);" label="部門" selected="true"/>
- <mx:CheckBox click="chkBox(4,event);" label="職務" selected="true"/>
- <mx:CheckBox click="chkBox(6,event);" label="單位電話" selected="true"/>
- <mx:CheckBox click="chkBox(7,event);" label="單位地址" selected="true"/>
- <mx:CheckBox click="chkBox(8,event);" label="郵編" selected="true"/>
- <mx:CheckBox click="chkBox(9,event);" label="傳真號碼"/>
- <mx:CheckBox click="chkBox(10,event);" label="移動電話"/>
- <mx:CheckBox click="chkBox(11,event);" label="郵箱" />
- </mx:Tile>
- <mx:DataGrid dropEnabled="true"
- dragMoveEnabled="true"
- dragOver="dragOverHandler(event);"
- dragDrop="dragDropHandler(event);"
- id="printgrid" right="10" left="10" top="10" bottom="186" toolTip="您可以將要打印的內容拖放在這裏,默認爲移動拖放,按Ctrl爲複製拖放">
- </mx:DataGrid>
- <mx:Button label="打印" click="doPrint();" icon="@Embed(source='../icons/print.png')" right="86" bottom="10"/>
- <mx:Button label="刪除" click="deleteItem();" left="10" bottom="10" icon="@Embed(source='../icons/Delete.png')"/>
- <mx:Button x="90" y="410" label="全部添加" icon="@Embed(source='../icons/Package.png')" click="fillAllRecord();"/>
- <mx:NumericStepper left="263" bottom="10" minimum="6" maximum="36" value="12" id="printFontSize"/>
- <mx:Button label="關閉" click="closeWin();" right="10" bottom="10"/>
- <mx:Label text="字體大小:" left="197" bottom="10"/>
- </mx:TitleWindow>
- import flash.events.Event;
- import mx.collections.ArrayCollection;
- import mx.controls.dataGridClasses.DataGridColumn;
- import mx.events.DragEvent;
- import mx.managers.DragManager;
- import mx.managers.PopUpManager;
- import mx.printing.*;
- import mx.controls.Alert;
- import mycontrols.FormPrintView;
- [Bindable]
- public var dgProvider:ArrayCollection;
- public var footerHeight:Number = 20;
- public var prodIndex:Number;
- public var prodTotal:Number = 0;
- public var headercls:Array = [
- { headerText:"姓名",dataField:"Client_NameCol",visu:true},
- { headerText:"工作單位",dataField:"Client_CorpCol",visu:true},
- { headerText:"部門",dataField:"Client_DeptCol",visu:true},
- { headerText:"職務",dataField:"Client_JobCol",visu:true},
- { headerText:"單位電話",dataField:"Office_TelCol",visu:true},
- { headerText:"單位地址",dataField:"Office_AddrCol",visu:true},
- { headerText:"郵編",dataField:"Post_CodeCol",visu:true},
- { headerText:"傳真號碼",dataField:"Office_FaxCol",visu:false},
- { headerText:"移動電話",dataField:"MobileCol",visu:false},
- { headerText:"郵箱",dataField:"EmailCol",visu:false}
- ];
- //初始化窗口
- private function initWin():void
- {
- var temp:Array =[];
- for(var i:Number=0;i<headercls.length;i++) //初始化DataGrid控件的Header
- {
- if(headercls[i].visu){
- var cols:DataGridColumn = new DataGridColumn();
- cols.headerText = headercls[i].headerText;
- cols.dataField = headercls[i].dataField;
- temp.push(cols);
- }else{
- continue;
- }
- }
- printgrid.columns = temp;
- }
- //關閉彈出窗口,PopUpManager管理彈出窗口類
- public function closeWin():void
- {
- PopUpManager.removePopUp(this);
- }
- public function chkBox(i:Number,e:Event):void
- {
- headercls[i].visu = e.currentTarget.selected;
- var temp:Array =[];
- for(var i:Number=0;i<headercls.length;i++)
- {
- if(headercls[i].visu){
- var cols:DataGridColumn = new DataGridColumn();
- cols.headerText = headercls[i].headerText;
- cols.dataField = headercls[i].dataField;
- temp.push(cols);
- }else{
- continue;
- }
- }
- printgrid.columns = temp;
- //printgrid.initialize();
- }
- //發送數據至打印表格進行打印
- public function doPrint():void {
- var printJob:FlexPrintJob = new FlexPrintJob();
- if (printJob.start()) {
- var thePrintView:FormPrintView = new FormPrintView();
- thePrintView.setStyle("fontSize",printFontSize.value);
- this.addChild(thePrintView);
- thePrintView.myDataGrid.columns = printgrid.columns;
- thePrintView.width=printJob.pageWidth;
- thePrintView.height=printJob.pageHeight;
- thePrintView.prodTotal = prodTotal;
- thePrintView.myDataGrid.dataProvider = printgrid.dataProvider;
- thePrintView.showPage("single");
- if(!thePrintView.myDataGrid.validNextPage)
- {
- printJob.addObject(thePrintView);
- }
- else
- {
- thePrintView.showPage("first");
- printJob.addObject(thePrintView);
- thePrintView.pageNumber++;
- while(true)
- {
- thePrintView.myDataGrid.nextPage();
- thePrintView.showPage("last");
- if(!thePrintView.myDataGrid.validNextPage)
- {
- printJob.addObject(thePrintView);
- break;
- }
- else
- {
- thePrintView.showPage("middle");
- printJob.addObject(thePrintView);
- thePrintView.pageNumber++;
- }
- }
- }
- this.removeChild(thePrintView);
- }
- printJob.send();
- }
- //拖放數據至列表中處理
- private function dragOverHandler(event:DragEvent):void {
- event.preventDefault();
- event.currentTarget.hideDropFeedback(event);
- if (event.dragSource.hasFormat("items"))
- {
- event.currentTarget.setStyle('borderColor', 'green');
- if (event.ctrlKey) {
- var itemsArray1:Array =
- event.dragSource.dataForFormat('items') as Array;
- var tempItem1:Object =
- { label: itemsArray[0].Client_Name,
- data: itemsArray[0].Client_ID,
- date: itemsArray[0].Client_Corp
- };
- DragManager.showFeedback(DragManager.COPY);
- return;
- }
- else {
- var itemsArray:Array =
- event.dragSource.dataForFormat('items') as Array;
- var tempItem:Object =
- { label: itemsArray[0].Client_Name,
- data: itemsArray[0].Client_ID,
- date: itemsArray[0].Client_Corp
- };
- DragManager.showFeedback(DragManager.MOVE);
- return;
- }
- }
- DragManager.showFeedback(DragManager.NONE);
- }
- private function dragDropHandler(event:DragEvent):void {
- }
- //刪除列表中某一條記錄
- private function deleteItem():void
- {
- if(printgrid.selectedIndex>=0){
- printgrid.dataProvider.removeItemAt(printgrid.selectedIndex);
- }else{
- Alert.show("請選擇記錄!");
- }
- }
- //添加外部數據源dgProvider:ArrayCollection全部數據
- private function fillAllRecord():void
- {
- printgrid.dataProvider = dgProvider;
- }
FormPrintHeader.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="60%"
- horizontalAlign="right" >
- <mx:Script>
- <![CDATA[
- [Bindable]
- public var printHeader:String = "客戶信息列表";
- ]]>
- </mx:Script>
- <mx:Label text="{printHeader}"/>
- </mx:VBox>
- <?xml version="1.0" encoding="utf-8"?>
- <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="60%"
- horizontalAlign="right" >
- <mx:Script>
- <![CDATA[
- [Bindable]
- public var pTotal:Number = 0;
- [Bindable]
- public var pCount:Number = 0;
- ]]>
- </mx:Script>
- <mx:Label text="記錄總數:{pTotal}"/>
- </mx:VBox>
- <?xml version="1.0" encoding="utf-8"?>
- <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mycontrols="mycontrols.*" backgroundColor="#FFFFFF"
- paddingTop="50" paddingBottom="50" paddingLeft="50" width="100%" height="100%">
- <mx:Script>
- <![CDATA[
- import mx.core.*
- [Bindable]
- public var pageNumber:Number = 1;
- [Bindable]
- public var prodTotal:Number = 0;
- public function showPage(pageType:String):void {
- if(pageType == "first" || pageType == "middle") {
- footer.includeInLayout=false;
- footer.visible = false;
- }
- if(pageType == "middle" || pageType == "last") {
- header.includeInLayout=false;
- header.visible = false;
- }
- if(pageType == "last") {
- footer.includeInLayout=true;
- footer.visible = true;
- }
- validateNow();
- }
- ]]>
- </mx:Script>
- <mx:VBox width="766" horizontalAlign="left">
- <mx:Label text="-- {pageNumber}--"/>
- </mx:VBox>
- <mycontrols:FormPrintHeader id="header" width="766"/>
- <mx:PrintDataGrid id="myDataGrid" width="764" height="100%" fontSize="12">
- </mx:PrintDataGrid>
- <mycontrols:FormPrintFooter id="footer" pTotal="{prodTotal}" width="765"/>
- </mx:VBox>