




已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
delphi中cxGrid使用匯總(一)2011-10-27 23:26:16|分類:delphi xe2|字號訂閱1. 去掉cxGrid中臺頭的Box解決:在tableview1的ptionsview的groupbybox=false;*2統(tǒng)計功能解決:(1) tableviewtableview1的optionsviewfooter=ture然后在cxGRid1的customize.中的summary 的footer.add需要合計的列kind= skSum在Footer的第一列顯示合計:加一個Summary項,Column設為Grid的第一列,Kind設為skNone在該Summary項的OnGetText事件中,輸入:procedure TFormExpense.tvExpenseTcxGridDBDataControllerTcxDataSummaryFooterSummaryItems2GetText( Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: String);begin AText := 合計:;end; (2) 按條件匯總:在TableView的DataController-Summary-FooterSummary-OnSummary事件中,輸入:procedure TFormExpense.tvExpenseDataControllerSummaryFooterSummaryItemsSummary( ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments; var OutArguments: TcxSummaryEventOutArguments);begin /得到字段名 TcxDBDataSummaryItem(Arguments.SummaryItem).FieldName; if (ASender.DataController.ValuesArguments.RecordIndex, tvExpenseLevel.Index 1) /只統(tǒng)計Level列=1的值 and (TcxDBDataSummaryItem(Arguments.SummaryItem).Kind = skSum) then OutArguments.Value := 0; /Level 1的統(tǒng)計值設為0end;OptionView中屬性GroupFooters設為gfAlwaysVisible并設置需要求和的列,在summary.default for Groups 下add加入需要合計的字段,column下顯示fieldname 為統(tǒng)計字段,format為格式,kind為統(tǒng)計方法,position 為位子 spfooter 在分組的下面,spgroup 在分組的上面或用cxGridPopupMenu1,在運行時可對任意數(shù)字類型列求和,方法是只需設置cxGridPopupMenu1的屬性Grid為cxGrid1DBTableView1的cxGrid,*3去掉cxgrid 中的過濾下拉箭頭解決: 選擇tableview1.optionscustomize.columnfiltering=fasle;*4讓“Drag a column here to group by that column”不顯示 解決:在cxGrid1DBTableView1-optionsview-groupbybox:=false即可*5GroupPanel上面的英文Drag a column header to group by that column怎么可以改成中文解決:最簡單的方法是 TcxGridTableView.OnCustomDrawPartBackground,也可用 OnCustomDrawGroupCell:procedure TForm1.cxGrid1DBTableView1CustomDrawPartBackground(Sender: TcxGridTableView; ACanvas: TcxCanvas;AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);beginAViewInfo.Text:=動態(tài)設置 GroupBox 的顯示內容;ACanvas.FillRect(AViewInfo.Bounds);end;注:改成中文后將字段拖上去中文還是會顯示,最好是設置空值*6如何實現(xiàn)如下功能:+財務部+原材料倉庫+成品庫+沖壓車間+軟件開發(fā)部這個是部門的名稱,點擊加號就可以將本部門的人員情況顯示出來。解決:其實這是一個主從表關系,1:填好主表的keyfieldnames2:填好從表的keyfieldnames3:填好從表的detaikeyfieldNames與masterkeyfieldnames4: 從表的數(shù)據(jù)源一定要按與主表關聯(lián)的字段排序注:其它地方設置了主從表結構那樣就顯示不出來,比如設置了從表的Table或者Query的mastersource和asterfield就會不能顯示數(shù)據(jù)!如果是兩個cxGrid的主從關系,這樣設置就很OK了。*7類似PageControl顯示解決:增加一個Level,將cxGrid1-RootLevelOptions-DetailTabsPosition設為dtpTop,然后相應的設置cxGrid1Level1,和cxGrid1Level2的Caption值。*8如何設定左邊幾列,不能滾動解決:使用DB Banded Table才可以實現(xiàn),在cxGrid1DBBandedTableView里建立Band0,Band1Band0的Fixed=tfLeftBand1的Fixed=tfnone設置要鎖定的字段的BandIndex=0,其它為1,就OK了。*9. 怎樣實現(xiàn)如EXCEL一樣的,當前格=G14+G15+G16 這樣的功能解決: 舉一個簡單的例子:label1.Caption := cxGrid1DBTableView1.DataController.Values2,3+cxGrid1DBTableView2.DataController.Values1, 1+cxGrid1DBTableView3.DataController.Values1, 1;所以不同cxGrid1DBTableView中的數(shù)據(jù)都可以給當前格,這樣就做到了EXCEL中的當前格=G14+G15+G16 類似的功能。*10. 鼠標右擊cxGrid1DBBandedTableView1菜單里的Edit Layout什么用,怎么使用?解決:可以拖動字段,并列的可以拖成有層次感(一層層), 拖動時會顯示箭頭的,就是說可以拖一個字段放*11怎樣將cxGrid里的數(shù)據(jù)導入到EXCEL,HTML,XML和TEXT解決:usescxExportGrid4Link; ( cxExportGrid6Link)procedure TForm1.Button1Click(Sender: TObject);beginExportGrid4ToEXCEL(d:/wang.xsl,cxGrid1,True,True);ExportGrid4ToTEXT(d:/wang.txt,cxGrid1,True,True);ExportGrid4ToXML(d:/wang.xml,cxGrid1,True,True);ExportGrid4ToHTML(d:/wang.html,cxGrid1,True,True);end;*12. 如何使?jié)M足條件的數(shù)據(jù)顯示不同的顏色?解決:varAYellowStyle: TcxStyle;procedure TForm1.FormCreate(Sender: TObject);begin/行顏色AYellowStyle := TcxStyle.Create(Self);AYellowStyle.Color := $0080FFFF;AYellowStyle.TextColor := clMaroon;end;procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);beginif ARecord.ValuescxGrid1DBBandedTableView1Lengthcm.Index 81 thenAStyle := AYellowStyle;end;這里cxGrid1DBBandedTableView1Lengthcm.Index小于81時就顯示黃色*13. 如何從外邊的TXT文件導入到cxGrid?解決:procedure CustomizeColumns;procedure LoadData;procedure TForm1.CustomizeColumns;constcDistance = 1;cRadius = 5;cPeriod = 4;cPstring = 0;varI: Integer;beginDecimalSeparator := .;with cxGrid1TableView2 dofor I := 0 to ColumnCount - 1 doif I in cDistance, cRadius thenColumnsI.DataBinding.ValueTypeClass := TcxIntegerValueType/1,5列為Integerelseif I in cPstring,cPeriod thenColumnsI.DataBinding.ValueTypeClass := TcxStringValueType/0,4列為StringelseColumnsI.DataBinding.ValueTypeClass := TcxFloatValueType;/其他為Floatend;procedure TForm1.LoadData;constAFileName = 資產(chǎn)負債表.txt;AHeaderLineCount = 2;varARecords, AValues: TStringList;I: Integer;procedure InitRecord(const Str: string);varJ: Integer;V: Variant;beginAValues.CommaText := Str;for J := 0 to AValues.Count - 1 doif AValues.StringsJ - thenbeginV := AValues.StringsJ;if not VarIsNull(V) thencxGrid1TableView2.DataController.ValuesI, J := V;end;end;beginif not FileExists(AFileName) thenraise Exception.Create(Data file not found);ARecords := TStringList.Create;AValues := TStringList.Create;with ARecords dotryLoadFromFile(AFileName);cxGrid1TableView2.BeginUpdate;cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount;for I := 0 to Count - (AHeaderLineCount + 1) doInitRecord(StringsI + AHeaderLineCount);finallycxGrid1TableView2.EndUpdate;ARecords.Free;AValues.Free;end;end;procedure TForm1.FormCreate(Sender: TObject);beginCustomizeColumns;LoadData_Zcfz;end;*14 如何改變列的顏色?解決:varAFirstColumnStyle: TcxStyle;procedure TForm1.FormCreate(Sender: TObject);begin/列顏色AFirstColumnStyle := TcxStyle.Create(Self);AFirstColumnStyle.Color := clAqua;AFirstColumnStyle.TextColor := clBlue;cxGrid1TableView1.Columns1.Styles.Content := AFirstColumnStyle;end;*15 Set as default的用法?解決:Set as default的用法是為了解決設置參數(shù)的方便而做的,比如:連好數(shù)據(jù)庫以后,更改cxGrid1DBBandedTableView1-OptionsCustomize- ColumnFiltering 設為False。(這個設置可以將字段名的下拉單給去掉)更改cxGrid1DBBandedTableView1-OptionsView- Navigator 設置為True。然后右擊cxGrid1DBBandedTableView1,在彈出的菜單欄里面點擊Set as default。OK,下次你再產(chǎn)生一個新的cxGrid1DBBandedTableView1時這些設置和剛才的一樣了。如果需要設置的參數(shù)很多的時候,這個Set as default很有用!*16. 怎樣使鼠標移動時,相應的單元里的文字變色?解決:varFTrackItem: TcxCustomGridTableItem;FTrackRec: TcxCustomGridRecord;procedure TForm1.cxGrid1DBTableView1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);beginif (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) thenbeginACanvas.Font.Color := clred; /紅色字體ACanvas.Font.Style := fsUnderline;/帶下劃線end;end;procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer);varAHitTest: TcxCustomGridHitTest;ATrackItem: TcxCustomGridTableItem;ATrackRec: TcxCustomGridRecord;beginATrackItem := FTrackItem;ATrackRec := FTrackRec;AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);if AHitTest is TcxGridRecordCellHitTest thenbeginFTrackItem := TcxGridRecordCellHitTest(AHitTest).Item;FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord;endelsebeginFTrackItem := nil;FTrackRec := nil;end;if (ATrackItem FTrackItem) or (ATrackRec FTrackRec) thenbegin/ Invalidate old cellif ATrackRec nil thenATrackRec.Invalidate(ATrackItem);/ Invalidate new cellif FTrackRec nil thenFTrackRec.Invalidate(FTrackItem);end;end;*zj注:17-27轉載自/shuaihj/article/details/613101117. 怎樣設計多表頭的cxGrid?解決:cxGrid可以解決如下的表頭:-| 說明1 | 說明2 |-| 字段1 | 字段2 | 字段3 | 字段4 | 字段5 | 字段6 | 字段7 | 字段8 | 字段9 |實現(xiàn)這個很簡單,你可以直接在上面拖動字段名,拖動時會顯示箭頭的,放入你想顯示的位置就OK了?;蛘咴谑髽擞覔鬰xGrid1DBBandedTableView1菜單里的Edit Layout里也可以拖放。但是cxGrid不能實現(xiàn)如下的多表頭形式:-| 說明1 | 說明2 |-| 說明3 | 說明4 | 說明5 | 說明6 | 字段1 | 字段2 | 字段3 | 字段4 | 字段5 |不知道有誰能實現(xiàn)這樣的多表頭?*18. 在主從表結構時,當點開“+”時怎樣將焦點聚在相應主表的記錄上?解決:varHitTest: TcxCustomGridHitTest;procedure TColumnsShareDemoMainForm.tvProjectsMouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin/ Note that the Sender parameter is a SiteHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);/ The point belongs to the +/- button areaif HitTest is TcxGridExpandButtonHitTest then/ Move focus to the recordTcxGridExpandButtonHitTest(HitTest).GridRecord.Focused := True;end;*19 CXGrid4如何展開全部節(jié)點解決:GridDBTableView1.DataController.Groups.FullExpand;*20. cxGrid如何動態(tài)創(chuàng)建Items的Editor的項?解決:cxGrid的列有一個屬性,它的編輯框可以指定combobox,spinedit等.在設計時,可以為combobox的items添加項目.請問是否可以動態(tài)創(chuàng)建?(run-time時由程序加入)varA:TDataSource:B:TcxlookupcomboboxProperties;beginA:=TDataSource.create(self);B:=tcxlookupcomboboxproperties.create(self);A.Dataset:=Dic_ry_xb;/此處指定數(shù)據(jù)源。b.listdource:=a;/此處指明字段的listsource屬性。b.keyfieldnames:=a; /此處指明字段的關鍵字段b.listfieldnames:=b; /此處指明字段的返回值。b.listcolumns.items0.caption:=x; /此處默認是會建立一個字段,但是顯示的表頭是name,所以此處讓它顯示為自己想要的中午顯示。cxGrid1DBTableView1c1_sex_code.Properties:=b; /此處指明是那個字段。end; /這個是初始化的代碼*21. 拷貝文件時有進度顯示解決:procedure TForm1.mycopyfile(sourcef,targetf:string);varFromF, ToF: file;NumRead, NumWritten: Integer;Buf: array1.2048 of Char;n:integer;begin AssignFile(FromF, sourcef); Reset(FromF, 1); Record size = 1 AssignFile(ToF,targetf); Open output file Rewrite(ToF, 1); Record size = 1 n:=0; repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); form1.label1.caption:=IntToStr(sizeof(buf)*n*100 div FileSize(FromF)+100%; application.ProcessMessages; /顯示進度 BlockWrite(ToF, Buf, NumRead, NumWritten); inc(n); until (NumRead = 0) or (NumWritten NumRead); form1.Label1.Caption:=100%; CloseFile(FromF); CloseFile(ToF);end;procedure TForm1.Button1Click(Sender: TObject);beginmycopyfile(e:/components/tv2k-w2k.zip,c:/a.zip);end;*22. cxGrid 設置斑馬線解決:在TcxGridDBBandedTableView.Styles屬性中有 ContentEven(奇數(shù)行風格) ContentOdd (偶數(shù)行風格) ,設定一下風格就好了。*23 根據(jù)記錄內容更改字體顏色解決:參考范例CustomDrawTableViewDemo,主要在TcxGridDBBandedTableView.OnCustomDrawCell事件中實現(xiàn)。如下代碼:if (Pos(-,AViewInfo.GridRecord.DisplayTextscolOrderProductCount.Index) 0) thenbegin /標識負數(shù)記錄 /ACanvas.Canvas.Brush.Color:= clMoneyGreen; ACanvas.Canvas.Font.Color:= clRed;/clActiveCaptionend;其中colOrderProductCount是“產(chǎn)品訂數(shù)”列。還要有一步就是要刷新顯示TcxGridDBBandedTableView.LayoutChanged();/tvCars.LayoutChanged(False);TcxGridDBBandedTableView.Painter.Invalidate;*24 用代碼展開/收縮主從結構解決: Self.tvDepartment.ViewData.Expand(True); Self.tvDepartment.ViewData.Collaspe(True);注:tvDepartment為主表對應的TableView*25 在內置右鍵菜單的后面增加菜單項解決:首先應在Form上加一個cxGridPopupMenu控件 以啟用右鍵菜單UseBuildInPopupMenus設為Trueprocedure TFormItemList.FormCreate(Sender: TObject);var AMenu: TComponent; FMenuItem, FSubMenuItem: TMenuItem;begin AMenu := nil; if cxGridPopupMenu.BuiltInPopupMenus.Count = 0 then Exit; AMenu := cxGridPopupMenu.BuiltInPopupMenus0.PopupMenu; /第一個內置右鍵菜單(表頭菜單) if Assigned(AMenu) and AMenu.InheritsFrom(TPopupMenu) then begin TPopupMenu(AMenu).AutoHotkeys := maManual; /手動熱鍵 /- FMenuItem := TMenuItem.Create(Self); FMenuItem.Caption := -; FMenuItem.Name := miLineForGroup; TPopupMenu(AMenu).Items.Add(FMenuItem); /展開所有組 FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := miExpandAllGroup; FMenuItem.Caption := 展開所有組(&X); FMenuItem.OnClick := miExpandAllGroupClick; TPopupMenu(AMenu).Items.Add(FMenuItem); /收縮所有組 FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := miCollapseAllGroup; FMenuItem.Caption := 收縮所有組(&O); FMenuItem.OnClick := miCollapseAllGroupClick; TPopupMenu(AMenu).Items.Add(FMenuItem); /- FMenuItem := TMenuItem.Create(Self); FMenuItem.Caption := -; TPopupMenu(AMenu).Items.Add(FMenuItem); /過濾面板 FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := miFilterPanel; FMenuItem.Caption := 過濾面板(&P); /自動顯示 FSubMenuItem := TMenuItem.Create(Self); FSubMenuItem.Name := miFilterPanelAuto; FSubMenuItem.Caption := 自動(&A); FSubMenuItem.RadioItem := True; FSubMenuItem.GroupIndex := 5; /指定同一組 FSubMenuItem.Checked := True; FSubMenuItem.OnClick := miFilterPanelClick; FMenuItem.Add(FSubMenuItem); /加入二級子菜單 /總是顯示 FSubMenuItem := TMenuItem.Create(Self); FSubMenuItem.Name := miFilterPanelAlways; FSubMenuItem.Caption := 總是顯示(&W); FSubMenuItem.RadioItem := True; FSubMenuItem.GroupIndex := 5; FSubMenuItem.OnClick := miFilterPanelClick; FMenuItem.Add(FSubMenuItem); /從不顯示 FSubMenuItem := TMenuItem.Create(Self); FSubMenuItem.Name := miFilterPanelNerver; FSubMenuItem.Caption := 從不顯示(&N); FSubMenuItem.RadioItem := True; FSubMenuItem.GroupIndex := 5; FSubMenuItem.OnClick := miFilterPanelClick; FMenuItem.Add(FSubMenuItem); TPopupMenu(AMenu).Items.Add(FMenuItem); /自定義過濾 FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := miCustomFilter; FMenuItem.Caption := 自定義過濾(&M); FMenuItem.OnClick := miCustomFilterClick; TPopupMenu(AMenu).Items.Add(FMenuItem); /過濾管理器 FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := miFilterBuilder; TPopupMenu(AMenu).Images.AddImage(FormMain.ImageListExtend, 44); /添加圖標圖像 FMenuItem.ImageIndex := TPopupMenu(AMenu).Images.Count - 1; /指定圖標序號 FMenuItem.Caption := 過濾管理器; FMenuItem.OnClick := Self.miFilterBuilderClick; TPopupMenu(AMenu).Items.Add(FMenuItem); /- FMenuItem := TMenuItem.Create(Self); FMenuItem.Caption := -; TPopupMenu(AMenu).Items.Add(FMenuItem); /導出 FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := miExport; TPopupMenu(AMenu).Images.AddImage(FormMain.ImageListExtend, 37); FMenuItem.ImageIndex := TPopupMenu(AMenu).Images.Count - 1; FMenuItem.Caption := 導出(&E); FMenuItem.OnClick := Self.miExportClick; TPopupMenu(AMenu).Items.Add(FMenuItem); /打印 FMenuItem := TMenuItem.Create(Self); FMenuItem.Name := miPrint; FMenuItem.Caption := 打印(&P); TPopupMenu(AMenu).Images.AddImage(FormMain.ImageL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學年九江市九江縣數(shù)學三上期末試題含解析
- 2025-2026學年揭陽市揭東縣數(shù)學三年級第一學期期末達標測試試題含解析
- 2025-2026學年江蘇省鹽城市亭湖區(qū)建軍路小學數(shù)學三年級第一學期期末教學質量檢測模擬試題含解析
- 2024年延安市寶塔區(qū)三年級數(shù)學第一學期期末綜合測試模擬試題含解析
- 衛(wèi)生資格考試在線試題及答案獲取
- 行政管理操作流程的試題及答案
- 2025年主管護師考試分數(shù)提升試題與答案
- 行政法責任的類型劃分試題及答案
- 行政法學課堂重點試題及答案
- 專業(yè)術語辨析試題及答案
- 清華附中考試試題及答案
- 《通過鼻口腔吸痰技術》教育培訓課件
- 北京政法職業(yè)學院招聘筆試真題2024
- 小學三年級英語家長會省課賽課獲獎課件市賽課一等獎課件
- 農(nóng)村小學教師信息技術應用能力提升策略研究:數(shù)字化教學資源與實踐應用
- 第6課 我國國家機構(教學設計)2023-2024學年八年級道德與法治下冊同步教學(河北專版)
- 人工智能設計倫理知到智慧樹章節(jié)測試課后答案2024年秋浙江大學
- 新中考考試平臺-考生端V2.0使用手冊
- 診所備案申請表格(衛(wèi)健委備案)
- 王澤鑒教授:請求權基礎、法學方法與民法發(fā)展(修改版20141028)
- 痰標本的采集方法PPT課件
評論
0/150
提交評論