云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Fiddler是一個微軟開發的Http代理,可以用于跟蹤調試客戶端與服務器之間的Http信息,Fiddler監控所有的Http往來,可以設置斷點,竄改出入數據。


          posted @ 2006-10-10 17:28 云自無心水自閑 閱讀(4386) | 評論 (3)編輯 收藏

          在ActionScript3.0中是不支持函數重載的.
          最近, 想了個辦法來模擬.
          public?function?add(obj1?:?Object?=?null,?obj2:?Object?=?null)?:?void?{
          ????
          if?(obj1?==?null?&&?obj2?==?null?)?{
          ?????????
          //?調用無參數Add函數
          ?????????AddNoArgument();
          ????}
          ????
          else?if?(?typeof(obj1).toString().toLowerCase()?==?"string")?&&?obj2?==?null?)?{
          ?????????
          //?調用String參數的Add函數
          ?????????AddString(obj1.toString());
          ????}
          }
          當然這個方法也會有一些問題.
          第二種方法
          public?function?add(?args)?:?void?{
          ????
          if?(args.length?==?0)?{
          ?????????
          //?調用無參數Add函數
          ?????????AddNoArgument();
          ????}
          ????
          else?if?(?args.length?==?1?&&?typeof(args[0])?==?"int")?)?{
          ?????????
          //?調用String參數的Add函數
          ?????????AddString(args[0].toString());
          ????}
          }

          其中addString是add函數的String類型的重載函數.
          如果大家有什么更好的解決方案, 請不吝賜教.

          posted @ 2006-09-28 10:28 云自無心水自閑 閱讀(972) | 評論 (0)編輯 收藏

          XtraReports的設計器可以作為給終端用戶使用的獨立的報表設計器, 也就是說用戶可以自己編輯,預覽,甚至創建報表. 這個設計器和Visual Studio的集成開發環境很象, 可以定制外觀, 滿足用戶的需要. 甚至, 你可以自己創建報表設計器, 因為在XtraReport中設計器是一個分開獨立的控件.
          ??? 先介紹一下設計器的組成元件. 報表設計器主要是用于使用戶可以編輯報表. 標準的設計器是使用XRDesignFormEx類來展示的, 這個類提供了編輯和創建報表的主要功能.
          ??? 下圖是一個標準的報表設計器:


          ??? 這個Form里包含了不同的元件: 報表在XRDesignPanel對象中被編輯, 其他工具欄和停靠面板由XRDesignBarManager和XRDesignDockManager控制. 所有的這些控件都可以通過設計Form的XRDesignFormExBase.DesignPanel, XRDesignFormEx.DesignBarManager和XRDesignFormEx.DesignDockManager屬性來操作.
          ??? 下面列舉了設計器中使用的元件接口.

          Element

          Description

          Design Panel這是報表設計器的主要元件. 它展示了一個面板用于創建一個新的報表或者編輯原有的報表. 它顯示報表帶并控制報表帶中控件的歸屬, 并可以移動, 縮放, 復制, 粘貼這些控件, 另外還可以在控件上綁定數據, 或者進行其他的操作.? 而且可以預覽報表效果.
          Main Menu展示報表設計器的主菜單. 包含了一系列的項目和子項目, 用于為用戶提供相關操作. 通常, 它復制所有的ToolBar按鈕, 格式化按鈕以及布局按鈕.
          Main Toolbar展示報表設計器的ToolBar. 包含創建報表, 保存裝載報表布局, 剪裁,復制,粘貼等按鈕, 以及撤銷, 重做等操作.
          Formatting Toolbar展示報表設計器的格式化Toolbar. 包含一些缺省的操作文本的按鈕.
          Layout Toolbar展示報表設計器的布局Toolbar. 包含縮放, 移動一組控件位置的按鈕.
          Status Bar

          在報表設計器底部展示StatusBar. 通常用于顯示報表編輯操作過程中的特殊信息.
          Toolbox展示報表設計器的控件工具箱. 包含所有報表控件, 可以拖放新的控件到報表區中. 可以添加自定義控件到工具箱中.
          Report Explorer展示報表設計器的Explorer. 它顯示了報表樹狀結構, 使用它可以很方便地瀏覽整個報表.
          Field List展示了報表設計器的樹狀字段列表. 顯示了數據源的樹狀結構. 用于將數據綁定到報表.
          Property Grid展示報表設計器的屬性容器. 可以修改報表元件的屬性.

          ??? 激活報表設計器: 盡管報表設計器是XRDesignFromEx的實例, 但一般不需要手工創建此對象. 通常使用以下代碼:
          //?Create?a?new?report.
          XtraReport1?report?=?new?XtraReport1();

          //?Invoke?the?End-User?Designer?and?load?the?report?into?it.
          report.ShowDesigner();

          //?Invoke?the?End-User?Designer?and?load?the?report?into?it,?modally.
          report.ShowDesignerDialog();

          posted @ 2006-09-26 16:53 云自無心水自閑 閱讀(3926) | 評論 (0)編輯 收藏

          在此介紹創建報表過程中使用到的XtraReports的控件. 所有的控件都可以在設計時,運行時,或者通過設計器添加到報表中, 本文介紹的是一些最基本的信息.

          報表控件概覽

          XtraReports中的所有報表對象都通過在Bands中的控件來表現. 在設計時, 報表控件可以從工具箱添加到報表中, 只有點擊工具箱中需要的控件, 然后放到報表帶中即可. 另一種方式是使用字段列舉窗口添加控件, 這種情況下, 控件將和數據字段綁定.

          如果要在運行時添加報表控件, 你只需要簡單地創建一個相應類型的變量, 并通過XRControlCollection.Add方法添加到報表帶中即可

          所有的報表控件包括bands都是繼承自XRControl. 其中部分控件可以還作為容器, 這種情況下控件集合可以通過XRControl.Controls來獲得. 如果要獲取控件的容器, 可使用XRControl.Parent屬性.

          下面列舉了XtraReports中的標準報表控件.

          Class Description
          Subreport 用于在報表中添加子報表. 被添加的報表需要被包含在項目中, 并設置SubReport的ReportSource屬性. 子報表可用于合并報表和創建主從表.
          WinControlContainer 用于添加Windows Forms或者第三方的控件. 此對實際上是添加的控件的封裝, 并提供對Drawing方法的支持
          XRBarCode 用于在報表中顯示條形碼. 使用XRBarCode.Symbology和XRBarCode.SymbologyId來設置條形碼的類型
          XRChart 在報表中顯示圖形, 使用此控件來根據一個或多個SeriesViewTypes來展示不同的數據.
          XRCheckBox 用于在報表中展示復選框.
          XRLabel 標簽. 可以是單行的, 也可以是多行的.
          XRLine 線條. 使用這個控件來畫線.
          XRPageBreak 換頁. 如果是Band中需要換頁, 那么使用控件的Band.PageBreak屬性比較好.
          XRPageInfo 顯示報表頁面的附加信息. 可以顯示頁碼, 日期或者其他信息.
          XRPanel 用于包含其他控件的控件. 可以使用此控件來進行控件的分組.
          XRPictureBox 在報表中顯示一個圖片
          XRRichText 顯示一個控件, 用于顯示,輸入,修改格式化的文本. 可以用XRRichText.LoadFile從文件中加載文本.
          XRTable 表格
          XRTableCell 表格單元. 與XRControl.Text綁定
          XRTableRow 表格中的行. 通過不需要用到此控件, 直接操作表格單元更普遍.
          XRZipCode 郵政編碼


          posted @ 2006-09-25 11:55 云自無心水自閑 閱讀(11812) | 評論 (5)編輯 收藏

          一個普通的XtraReport報表一般包含數個包含報表控件的帶. 在這里介紹一個XtraReports中的幾種不同類型的帶, 他們都有一些什么用途, 又是如何添加,編輯,刪除.

          Report Bands

          在把報表添加到應用之后, 缺省的樣子如下圖所示. 可以看到, 報表被初始化分為3個基本的帶(頁頭, 明細, 和頁腳), 這些帶中可以添加不同的報表控件.

          每一種帶指明了控件在報表中是怎樣定位和被打印的, 即確定了打印的順序和次數. 注意, 有些<band strips>包含了帶是如何被打印的信息, 比如: PageHeader和PageFooter就說明了是每一頁都有這一帶的.

          在創建報表時, 可以添加或者刪除任意的帶. 在XtraReports中有很多不同類型的帶, 每一個都是<Band>的子類. 列舉如下:

          Bands類 描述
          TopMarginBand 用于放置出現在報表每頁頁頭最上面的控件
          ReportHeaderBand 用于放置出現在報表開頭的控件
          PageHeaderBand 用于放置出現在報表頁上面, 僅次于TopMarginBand位置的控件. 主要是用于放置需要分頁的表格的頭,
          GroupHeaderBand 用于放置明細帶中分組記錄的頭部控件.?
          DetailBand 用于顯示綁定數據的每條記錄
          DetailReportBand 用于創建主從報表. 主從關系由從報表的XtraReportsBase.DataMember屬性指定
          GroupFooterBand 用于放置明細帶中分組記錄下方的控件
          PageFooterBand 用于放置報表頁下方的控件
          ReportFooterBand 用于放置報表結束的控件
          BottomMarginBand 用于放置報表每頁最下方的控件

          下圖顯示了不同類型的帶的相對位置:

          TopMarginBand and BottomMarginBand

          ReportHeaderBand and ReportFooterBand

          PageHeaderBand and PageFooterBand

          GroupHeaderBand and GroupFooterBand

          DetailBand

          報表的預覽顯示的不是帶本身, 而是<PrintingSystem>的輸出. PageHeaderBand, PageFooterBand, TopMarginBand和BottomMarginBand在報表預覽的每一頁都有輸出. ReportHeaderBand和ReportFooterBand類只顯示一次. GroupHeaderBand和GroupFooterBand出現在每個記錄組中.



          posted @ 2006-09-22 11:05 云自無心水自閑 閱讀(8067) | 評論 (0)編輯 收藏

          在XtraReport中, 每一個報表都是XtraReport或者其子類. 打個比方說, XtraReport就好象Windows Forms. 同樣的道理, 所有的form都Form類的子類.

          ? XtraReport中的報表類可以與數據綁定也可以不綁定. 如果要創建一個綁定數據的報表, 需要查看<數據綁定>和<綁定數據控件>這兩個主題的幫助.
          ? 在創建一個報表時, 可以從已有的報表中加載樣式和布局, 樣式中包含了報表控件外觀的屬性值, 而布局包含了報表的結構信息. 另外, 還可以從其他報表系統中導入報表, 比如: Access, 水晶報表等等, 如果要詳細了解XtraReport的導入功能, 請參閱<Importing Overview>主題.
          ? 報表類(XtraReport的子類)創建后, 就可以生成其實例. 需要注意的是, XtraReport對象可以在Windows Forms中使用也可以在Asp.net中使用. 在Windows應用中使用報表, 通常需要維護報表的<Printing System>, 這個對象提供了報表的輸出功能.

          ? 創建報表有兩種方式, 一種是簡單地添加一個"模板"報表, 一種是通過報表向導來創建報表. 在報表添加到項目后, 報表設計器提供了大量的設計時元素來加快簡化報表的創建. XtraReport工具箱包含了所有的控件, Report Navigator可以瀏覽整個報表, Feild List可以拖放數據字段來創建與數據綁定的報表控件.
          ?? XtraReport的所有報表都是由<Report Band>和<Report Control>組成的.
          public?class?XtraReport1?:?DevExpress.XtraReports.UI.XtraReport
          {
          ???
          private?DevExpress.XtraReports.UI.DetailBand?Detail;
          ???
          private?DevExpress.XtraReports.UI.PageHeaderBand?PageHeader;
          ???
          private?DevExpress.XtraReports.UI.PageFooterBand?PageFooter;
          ???
          private?DevExpress.XtraReports.UI.XRLabel?xrLabel1;
          ???
          private?DevExpress.XtraReports.UI.XRLabel?xrLabel2;

          ???
          private?System.ComponentModel.Container?components?=?null;

          ???
          public?XtraReport1()
          ???{
          ??????InitializeComponent();
          ???}

          ???
          protected?override?void?Dispose(?bool?disposing?)
          ???{
          ??????
          if(?disposing?)
          ??????{
          ?????????
          if(components?!=?null)
          ?????????{
          ????????????components.Dispose();
          ?????????}
          ??????}
          ??????
          base.Dispose(?disposing?);
          ???}
          ??
          ???
          //?.
          ?
          ? 然后開始創建報表的結構, 首先在XtraReportBase.Bands屬性中添加Bands, 然后在相應的Bands的XRControl.Controls屬性中添加控件. 報表帶和控件的添加方法一般是這樣的
          //?Add?Detail,?PageHeader?and?PageFooter?bands?to?the?report's?collection?of?bands.
          this.Bands.AddRange(new?DevExpress.XtraReports.UI.Band[]?{this.Detail,?this.PageHeader,?this.PageFooter});

          //?Add?two?XRLabel?controls?to?the?Detail?band.
          this.Detail.Controls.AddRange(new?DevExpress.XtraReports.UI.XRControl[]?{this.xrLabel1,?this.xrLabel2});

          最后創建好的報表可以輸出給用戶看了
          //?Create?a?report.
          XtraReport1?report?=?new?XtraReport1();

          //?Create?the?report's?document?so?it?can?then?be?previewed,?printed?or?exported.
          //?NOTE:?Usually?you?don't?need?to?call?this?method?as?it's?automatically?called?by?all?of?the?following?methods.
          //?See?the?corresponding?member?topic?to?find?out?when?it?needs?to?be?called.
          report.CreateDocument();

          //?Show?the?form?with?the?report's?print?preview.
          report.ShowPreview();

          //?Print?the?report?in?a?dialog?and?"silent"?mode.
          report.PrintDialog();
          report.Print();

          //?Open?the?report?in?the?End-User?designer
          report.RunDesigner();

          //?Export?the?report.
          report.CreateHtmlDocument("report.html");
          report.CreatePdfDocument(
          "report.pdf");
          report.CreateImage(
          "report.jpg",?System.Drawing.Imaging.ImageFormat.Gif);

          附: XtraReport的類結構層次圖:

          posted @ 2006-09-22 10:20 云自無心水自閑 閱讀(14544) | 評論 (1)編輯 收藏

          1. 我從未創建過一個不使用Cairngorm的RIA應用, 甚至是連一個Mini項目我也使用了Cairngorm.
          使用Cairngorm放大或者說是加劇了學習曲線, 大多數第一次使用Flex的開發者是從創建小的應用開始逐步了解Flex的思想和概念. 所以最好先從使用容器和組件,創建動態界面,使用WebService/HTTP Service,綁定其返回結果這樣的步驟開始.
          然后嘗試更新后臺的持久數據,使用ColdFunsion/Java/C#/PHP等等.這是Flex開發者學習道路上的一個里程碑.
          接下來,可以去理解風格/狀態/效果這樣的Flex功能, 在Mxml中寫一些ActionScript.
          以上的這些步驟都不涉及到Cairngorm,直到你能熟練地使用Flex后, 可以去閱讀Cairngorm的系列文章(http://www.adobe.com/devnet/flex/articles/cairngorm_pt1.html)
          2. 你的應用與用戶的交互非常少,只有一兩個
          這主要是用于衡量應用的復雜性,如果你的應用中的用戶用例(Use-Case)比較多,那么Cairngorm對你將會非常有價值.
          相反,如果用例比較少,那么你完全可以不使用Cairngorm來完成應用.
          最好的解決方案不是無物可加,而是無物可舍!
          the best solution is not when there is nothing left to add, but when there is nothing left to take away!
          3. 你是應用的唯一開發者
          Cairngorm的優點是可控性/可維護性/伸縮性, 在別人的工作基礎添加功能變得非常非常容易.
          而如果只有你一個開發者,那么不使用Cairngorm將會一種簡潔的做法.
          4. 你發現了Cairngorm的Bug
          如果你發現了Bug,那么就不適合在重要的項目中使用Cairngorm.
          Cairngorm并不是完全沒有Bug,在早期的Beta版中,和其他軟件產品一樣,我們忽略了一些偶爾出現的Bug.

          posted @ 2006-09-12 13:41 云自無心水自閑 閱讀(1149) | 評論 (0)編輯 收藏

          Cairngorm的組成:
          1. Model Locator:保存應用的ValueObject(數據)和共享變量,與HttpSession類似,只不過是保存在客戶端而不是在服務器端而已
          2. View:一個或者多個Flex組件(按鈕、Panel、下拉框等等)組合在成一個被命名的單元。綁定Model Locator中的數據,根據用戶動作(點擊、滾動、拖放)產生自定義的Cairngorm事件。
          3. Front Controller:接收Cairngorm事件,并映射到對應的Cairngorm命令。
          4. Command:處理業務邏輯,調用Cairngorm的代理或者其他命令,更新Model Locator中的Value Object和變量值。
          5. Delegate:在命令中創建,初始化一個遠程調用(Http, WebService等等),并將返回結果傳遞給Command。
          6. Service:定義遠程調用連接遠程的數據存儲。
          Cairngorm的工作方式:
          1. 客戶端界面由各個View組成,View通過綁定Model Locator的成員來顯示數據。View根據用戶操作生成事件。這些事件由Front Controller廣播并接收,然后映射到相應的命令。命令包含業務邏輯、創建代理來完成操作,處理代理返回的結果,并更新Model Locator的數據。因為View是與Model Locator中的數據綁定的,因此Model Locator中數據更新后,View自動反應出數據的變化。由代理調用服務并返回處理結果不是必須的,但是這是推薦做法。

          posted @ 2006-08-31 09:36 云自無心水自閑 閱讀(4220) | 評論 (4)編輯 收藏

          在Flex2中VideoDisplay取代了1.5中的MediaPlay,提供播放Flv視頻的功能.
          而且對于此組件的控制都需要自己編寫.
          最近遇到一個問題,就是想通過設置PlayheadTime來實現視頻播放時間的跳轉時,發現有時會出現失靈的情況.
          經研究后發現主要是因為組件加載視頻不完整的原因.
          經過測試,如果是在本地的開發環境中,視頻的加載非常快,100M的Flv幾乎是瞬間加載完畢.
          但是如果將編譯生成的SWF文件上傳到服務器,然后加載Flv文件,速度非常慢,主要是需要通過互聯網傳送.
          所以會出現在本地開發時,視頻的跳轉一切正常.但是在服務器上卻屢屢出錯.

          解決方法: 可以在視頻加載過程Progress事件中添加代碼,強制在全部加載完成后啟動播放.

          ??? if ( videoPlayer.bytesLoaded / videoPlayer.bytesTotal > 0.99 )
          ??? ??? videoPlayer.play();

          posted @ 2006-08-21 08:42 云自無心水自閑 閱讀(1818) | 評論 (4)編輯 收藏

          開源項目fluorine(Flex與.net的AMF0網關、WebORB的替代者)使用注意事項
          網站鏈接:http://fluorine.thesilentgroup.com/fluorine/index.html

          Fluorine是與AmfPHP、OpenAmf類似的但是用于.net平臺的開源AMF網關。可以應用在Flex2與.net(1.1與2.0)中。
          通過使用Fluorine可以在Flex中直接調用.net程序中類的相應方法,并且完成了Class Mapping。也就是說可以傳遞一個復雜對象作為參數。
          通過我的試驗發現,.net返回的DataTable可以被正確地解析為AS3中的Array

          下面是我在使用的發現的一些注意事項:
          Flex端:
          1. 在VO的構造函數中需要調用flash.net.registerClassAlias("com.ariaware.pizza.vo.OrderVO", OrderVO);
          其中第一個參數是VO在.net端的Assemble全稱,即NameSpace+類名,第二個參數是ActionScript中的VO類

          2. GateWayURL需要書寫正確,一般的形式是:var gatewayURL:String = "http://localhost/FluorinePizzaService/Gateway.aspx";

          3. 在指定.net端類名和方法名的時候,注意大小寫一致 var pizzaService:AMF0Service = new AMF0Service ( gatewayURL, "pizzaService", null );

          .net端
          1. 注意VO中的字段名稱與Flex端VO類中的名稱一定要完全對應,否則就取不到對應的值。

          2. 需要在Web.config中添加下面幾行,緊跟在<system.web>后面就行了
          ?? ?<httpModules>
          ?? ??? ?<add name="FluorineGateway" type="com.TheSilentGroup.Fluorine.FluorineGateway, com.TheSilentGroup.Fluorine" />
          ? </httpModules>
          ?
          3. 項目中需要引用com.TheSilentGroup.Fluorine這個Dll

          4. 需要在項目中添加Gateway.aspx這樣一個空的Web窗體

          使用時:
          1. 需要注意清除一下本地的Cookie,如果有一個名為.ASPXAUTH的Cookie如果不為空,會造成FormsAuthentication.Decrypt的錯誤。



          posted @ 2006-08-03 17:34 云自無心水自閑 閱讀(2640) | 評論 (4)編輯 收藏

          僅列出標題
          共29頁: First 上一頁 21 22 23 24 25 26 27 28 29 下一頁 
          主站蜘蛛池模板: 嫩江县| 孟连| 中方县| 新河县| 长治县| 班玛县| 临城县| 偃师市| 锡林郭勒盟| 赤水市| 颍上县| 梧州市| 广灵县| 贵州省| 安福县| 阜平县| 临武县| 砚山县| 吉隆县| 盐津县| 梁河县| 二连浩特市| 曲阳县| 禄劝| 石阡县| 淅川县| 泗阳县| 新巴尔虎左旗| 长岭县| 宕昌县| 庆阳市| 郴州市| 承德县| 潮州市| 沈阳市| 旺苍县| 太保市| 平潭县| 镇坪县| 麻阳| 普兰店市|