注册了这个博客,自己却很少些写东西。也许自己变得有些惰吧!不说这么多了,反正自己也想开始养成写博客的习惯。虽然我写程序的历史也不长,但多少也算是写了些小程序。先把我用Flex 3.0写的一个小系统供初学者参考一下吧!希望对大家有所帮助.
先贴出打印模块:

MXML文件PrintConfig.mxml
ActionScript:PrintConfig.as
打印是用的是PrintDataGrid,以下是打印的页面:
FormPrintHeader.mxml
FormPrintFooter.mxml
FormPrintView.mxml
嘿嘿!今天先贴这个打印,也许这个看起来有点乱。以后我会尽量会写一些详细注释的。
- <?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>