一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

CXGRID問(wèn)題大薈萃-轉(zhuǎn)

 一歲兩枯榮 2013-12-19

CXGRID問(wèn)題大薈萃---收藏轉(zhuǎn)貼 轉(zhuǎn)自:http://blog.csdn.net/henreash/article/details/3454259

分類(lèi): Delphi 831人閱讀 評(píng)論(0) 收藏 舉報(bào)

 公司目前這個(gè)項(xiàng)目要大量的用CxGrid,以前我從未用過(guò),所以被逼得焦頭爛額.加之我用的這電腦系統(tǒng)貌似有問(wèn)題(老出些莫明其妙的事兒,如:突然不能編譯出exe,上班開(kāi)機(jī)突然丟失大堆的DLL文件,F9執(zhí)行后關(guān)掉EXE Delphi就死掉了...)有時(shí)候做得想罵娘.
現(xiàn)在特將收集的一些文章與大家分享,也希望大家不要重蹈我的覆轍.
  http://www./keylife/iblog_show.asp?xid=19911大富翁論壇-富翁筆記-cxgrid (數(shù)據(jù)庫(kù)控件)控件的使用
  http://www./infoView/Article_722.html『Delphi園地』-分享一下ExpressQuantumGrid4的cxGrid的一些使用方法和經(jīng)驗(yàn)
  http://www./delphibbs/dispq.asp?lid=2843325CxGrid顯示數(shù)據(jù)時(shí)有多少條記錄就畫(huà)多表格線,其它地方為空,有沒(méi)有辦法可以像DbGrid一樣畫(huà)滿
  http://www./keylife/iblog_show.asp?xid=16001大富翁論壇-富翁筆記-ExpressQuantumGrid中如何將滿足條件的記錄用不同顏色顯示?
  http://soft./topicView.aspx?Id=35970 開(kāi)個(gè)貼子,專(zhuān)門(mén)討論一下cxGrid,用過(guò)的進(jìn)來(lái)看看 
  http://blog.csdn.net/nhconch/archive/2007/03/02/1519254.aspx讓cxGrid像Excel那樣高亮顯示選區(qū)的行號(hào)列標(biāo)
  http://community.csdn.net/Expert/topic/5642/5642196.xml?temp=.5949365關(guān)于手動(dòng)向Cxgrid里面添加內(nèi)容的問(wèn)題。
  http://download.csdn.net/source/15030DevExpress QuantumGrid4.5 教程
歡迎大家在此帖中提問(wèn)和解答,在此先謝謝大家!

 

 

 

分享一下ExpressQuantumGrid4的cxGrid的一些使用方法和經(jīng)驗(yàn)
日期:2006年2月6日 作者:wangxian11 人氣: 8659 查看:[大字體 中字體 小字體]
使用cxGrid有一些時(shí)間了,在這里總結(jié)一下使用cxGrid的一些方法,希望給剛開(kāi)始接觸cxGrid的人一些幫助。

1.簡(jiǎn)單介紹:cxGrid右下方的cxGrid1Level1是表示Grid表的層,cxGrid可以有多層,這相當(dāng)于集合了PageControl的

功能,而cxGrid1Level1右邊的cxGrid1DBTableView1相當(dāng)于DBGrid一樣。右擊cxGrid1可以添加cxGrid1Level2,右擊

cxGrid1Level2,可以選擇Create View , Add level 或者Delete Level。Add level可以增加子Level,Create View

里面可以選擇很多不同總類(lèi)的View。其中
   1)DB Table可以和數(shù)據(jù)庫(kù)連接的View,更一般的DBGrid類(lèi)似,它比DBGrid多了比如鼠標(biāo)中鍵可以用,可以統(tǒng)計(jì),

查詢,等等功能;
   2)DB Banded Table 則可以實(shí)現(xiàn)比如:
                     ---------------------------------
                     |     說(shuō)明1     |     說(shuō)明2     |
                     ---------------------------------
                     | 字段1 | 字段2 | 字段3 | 字段4 |
等類(lèi)似的功能;
   3)DB Card View 則提供了卡片方式的顯示數(shù)據(jù)的功能,這個(gè)用在比如人事檔案管理比較不錯(cuò);
   4)其它不一一贅述。
 
2.一些使用方法:
   1)有圖片和MEMO的例子:
     拖入一個(gè)cxGrid1,Table1,DataSource1。 Table1的DatabaseName設(shè)為DBDEMOS,TableName設(shè)為biolife.db,

    Active設(shè)為T(mén)rue;DataSource1的DataSet設(shè)為T(mén)able1;cxGrid1DBTableView1的DataController中的DataSource  

    設(shè)為DataSource1;右擊cxGrid1DBTableView1選擇Create All Columns;雙擊cxGrid1,在彈出的窗口中找到    

   cxGrid1DBTableView1Notes和cxGrid1DBTableView1Graphic,將它們的Properties屬性設(shè)為BlobEdit;運(yùn)行看看  

   結(jié)果。再將cxGrid1DBTableView1Graphic的Properties屬性設(shè)為Image,再將Properties下的Stretch設(shè)為T(mén)rue,  

   將cxGrid1DBTableView1->optionsview->CellAutoHeight 設(shè)為T(mén)rue,看看結(jié)果。


   2)如何讓“Drag a column here to group by that column”不顯示
     解決:點(diǎn)擊cxGrid1上的cxGrid1DBTableView1
     在cxGrid1DBTableView1->optionsview->groupbybox:=false即可  
     注:OptionsView里面有很多屬性可能經(jīng)常要用,比如:ColumnAutoWith,Navigator等等,慢慢琢磨吧:)
     
   3)GroupPanel上面的英文[Drag a column header to group by that column]怎么可以改成中文?
     解決:最簡(jiǎn)單的方法是 TcxGridTableView.OnCustomDrawPartBackground ,也可用 OnCustomDrawGroupCell:

     procedure TForm1.cxGrid1DBTableView1CustomDrawPartBackground(
                Sender: TcxGridTableView; ACanvas: TcxCanvas;
               AViewInfo: TcxCustomGridCellViewInfo; var ADone: Boolean);
     begin
       AViewInfo.Text:='動(dòng)態(tài)設(shè)置 GroupBox 的顯示內(nèi)容';
       ACanvas.FillRect(AViewInfo.Bounds);
     end;

   4)如何實(shí)現(xiàn)如下功能:
            +財(cái)務(wù)部
            +原材料倉(cāng)庫(kù)
            +成品庫(kù)
            +沖壓車(chē)間
            +軟件開(kāi)發(fā)部
     這個(gè)是部門(mén)的名稱,點(diǎn)擊加號(hào)就可以將本部門(mén)的人員情況顯示出來(lái)。
     解決:其實(shí)這是一個(gè)主從表關(guān)系,1:填好主表的keyfieldnames
                                   2:填好從表的keyfieldnames
                                   3:填好從表的 detaikeyfieldNames與masterkeyfieldnames
                                   4: 從表的數(shù)據(jù)源一定要按與主表關(guān)聯(lián)的字段排序
    注:其它地方設(shè)置了主從表結(jié)構(gòu)那樣就顯示不出來(lái),比如設(shè)置了從表的Table或者Query的mastersource和
    asterfield就會(huì)不能顯示數(shù)據(jù)!如果是兩個(gè)cxGrid的主從關(guān)系,這樣設(shè)置就很OK了。

   
  5)統(tǒng)計(jì)功能
    解決:cxGrid1DBTableView1->optionsview->Footer 設(shè)為T(mén)rue
          cxGrid1DBTableView1->DataController->Summary設(shè)置FooterSummaryItems即可  

  6)類(lèi)似PageControl顯示
    解決:增加一個(gè)Level,將cxGrid1->RootLevelOptions->DetailTabsPosition設(shè)為dtpTop,然后相應(yīng)的設(shè)置cxGrid1Level1,和cxGrid1Level2的Caption值。

   未完待續(xù)。。。。。。。。。

   以上是在用cxGrid時(shí)候碰到的一些問(wèn)題,我總結(jié)了一部分,還有很多問(wèn)題等待解決。在這里我希望用過(guò)cxGrid的人幫著一起總結(jié)一下,讓后學(xué)者可以少走點(diǎn)彎路! 


   7)如何設(shè)定左邊幾列,不能滾動(dòng)?
    解決:使用DB Banded Table才可以實(shí)現(xiàn),
          在cxGrid1DBBandedTableView里建立Band0,Band1
          Band0的Fixed=tfLeft
          Band1的Fixed=tfnone
          設(shè)置要鎖定的字段的BandIndex=0,其它為1,就OK了。  
 
  8)怎樣實(shí)現(xiàn)如EXCEL一樣的,當(dāng)前格=G14+G15+G16 這樣的功能
    解決:舉一個(gè)簡(jiǎn)單的例子:label1.Caption := cxGrid1DBTableView1.DataController.Values[2,

3]+cxGrid1DBTableView2.DataController.Values[1, 1]+cxGrid1DBTableView3.DataController.Values[1, 1];
所以不同cxGrid1DBTableView中的數(shù)據(jù)都可以給當(dāng)前格,這樣就做到了EXCEL中的當(dāng)前格=G14+G15+G16 類(lèi)似的功能。
 
  9)鼠標(biāo)右擊cxGrid1DBBandedTableView1菜單里的Edit Layout什么用,怎么使用?
    解決:可以拖動(dòng)字段,并列的可以拖成有層次感(一層層), 拖動(dòng)時(shí)會(huì)顯示箭頭的,就是說(shuō)可以拖一個(gè)字段放

到最上面,就可以使記錄按此字段進(jìn)行分組。點(diǎn)擊其中一個(gè)字段,上面還會(huì)出現(xiàn)一個(gè)上升或者下降的小三角形,這個(gè)

小三角形的作用是在運(yùn)行階段,數(shù)據(jù)就會(huì)按照這個(gè)字段上升或者下降排序。
     還有一個(gè)Set as Default的作用是保持當(dāng)前TableView的參數(shù),下此產(chǎn)生新的TableView的時(shí)候就會(huì)可以和上次保持的參數(shù)一樣。
10)怎樣將cxGrid里的數(shù)據(jù)導(dǎo)入到EXCEL,HTML,XML和TEXT
  解決:這個(gè)問(wèn)題在用了cxGrid以后變得異常簡(jiǎn)單,
uses
 cxExportGrid4Link;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ExportGrid4ToEXCEL('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;
11)如何使?jié)M足條件的數(shù)據(jù)顯示不同的顏色?
 解決:
var
  AYellowStyle: 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);
begin
  if ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index] < 81 then
    AStyle := AYellowStyle;
end;

這里cxGrid1DBBandedTableView1Lengthcm.Index小于81時(shí)就顯示黃色
  

問(wèn)題12)如何從外邊的TXT文件導(dǎo)入到cxGrid?
解決:    procedure CustomizeColumns;
          procedure LoadData;

procedure TForm1.CustomizeColumns;
const
 cDistance = 1;
 cRadius = 5;
 cPeriod = 4;
 cPstring = 0;
var
 I: Integer;
begin
 DecimalSeparator := '.';
 with cxGrid1TableView2 do
 for I := 0 to ColumnCount - 1 do
   if I in [cDistance, cRadius] then
     Columns[I].DataBinding.ValueTypeClass := TcxIntegerValueType//1,5列為Integer
   else
     if I in [cPstring,cPeriod] then
     Columns[I].DataBinding.ValueTypeClass := TcxStringValueType//0,4列為String
     else
      Columns[I].DataBinding.ValueTypeClass := TcxFloatValueType;//其他為Float
end;

procedure TForm1.LoadData;
const
 AFileName = '資產(chǎn)負(fù)債表.txt';
 AHeaderLineCount = 2;

var
 ARecords, AValues: TStringList;
 I: Integer;

 procedure InitRecord(const Str: string);
 var
   J: Integer;
   V: Variant;
 begin
   AValues.CommaText := Str;
   for J := 0 to AValues.Count - 1 do
    if AValues.Strings[J] <> '-' then
    begin
     V := AValues.Strings[J];
     if not VarIsNull(V) then
       cxGrid1TableView2.DataController.Values[I, J] := V;
    end;
 end;

begin
 if not FileExists(AFileName) then
   raise Exception.Create('Data file not found');

 ARecords := TStringList.Create;
 AValues := TStringList.Create;

 with ARecords do
 try
   LoadFromFile(AFileName);
   cxGrid1TableView2.BeginUpdate;
   cxGrid1TableView2.DataController.RecordCount := Count - AHeaderLineCount;
   for I := 0 to Count - (AHeaderLineCount + 1) do
     InitRecord(Strings[I + AHeaderLineCount]);
 finally
   cxGrid1TableView2.EndUpdate;
   ARecords.Free;
   AValues.Free;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 CustomizeColumns;
 LoadData_Zcfz;
end;

其中“資產(chǎn)負(fù)債表.txt”中的數(shù)據(jù)如下:

資        產(chǎn)  行次  年  初  數(shù)  期  末  數(shù)  負(fù)債及所有者權(quán)益  行次  年  初  數(shù)  期  末  數(shù)
---------       ----    -----           --------        ----------             ----     --------        ---------
流動(dòng)資產(chǎn):  1  0.00          0.00          流動(dòng)負(fù)債:          2  0.00          0.00  

 
13)如何改變列的顏色?
var
 AFirstColumnStyle: TcxStyle;

procedure TForm1.FormCreate(Sender: TObject);
begin
 //列顏色
 AFirstColumnStyle := TcxStyle.Create(Self);
 AFirstColumnStyle.Color := clAqua;
 AFirstColumnStyle.TextColor := clBlue;
 cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle;
end;
14)Set as default的用法?
 解決:Set as default的用法是為了解決設(shè)置參數(shù)的方便而做的,比如:
       連好數(shù)據(jù)庫(kù)以后,更改cxGrid1DBBandedTableView1->OptionsCustomize->ColumnFiltering 設(shè)為False。(這個(gè)設(shè)置可以將字段名的下拉單給去掉)更改cxGrid1DBBandedTableView1->OptionsView->Navigator 設(shè)置為T(mén)rue。然后右擊cxGrid1DBBandedTableView1,在彈出的菜單欄里面點(diǎn)擊Set as default。
  OK,下次你再產(chǎn)生一個(gè)新的cxGrid1DBBandedTableView1時(shí)這些設(shè)置和剛才的一樣了。如果需要設(shè)置的參數(shù)很多的時(shí)候,這個(gè)Set as default很有用!

15)怎樣使鼠標(biāo)移動(dòng)時(shí),相應(yīng)的單元格里的文字變色?
  解決:
var
 FTrackItem: TcxCustomGridTableItem;
 FTrackRec: TcxCustomGridRecord;

procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
 Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
 AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
 if (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) then
 begin
   ACanvas.Font.Color := clred;   //紅色字體
   ACanvas.Font.Style := [fsUnderline];//帶下劃線
 end;
end;

procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;
 Shift: TShiftState; X, Y: Integer);
var
 AHitTest: TcxCustomGridHitTest;
 ATrackItem: TcxCustomGridTableItem;
 ATrackRec: TcxCustomGridRecord;
begin
 ATrackItem := FTrackItem;
 ATrackRec := FTrackRec;

 AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
 if AHitTest is TcxGridRecordCellHitTest then
 begin
   FTrackItem := TcxGridRecordCellHitTest(AHitTest).Item;
   FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord;
 end
 else
 begin
   FTrackItem := nil;
   FTrackRec := nil;
 end;

 if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) then
 begin
   // Invalidate old cell
   if ATrackRec <> nil then
     ATrackRec.Invalidate(ATrackItem);
   // Invalidate new cell
   if FTrackRec <> nil then
     FTrackRec.Invalidate(FTrackItem);
 end;
end; 

   
16)怎樣設(shè)計(jì)多表頭的cxGrid?
  解決:cxGrid可以解決如下的表頭:
                   ---------------------------------
                   |     說(shuō)明1     |     說(shuō)明2     |
                   ---------------------------------
                   | 字段1 | 字段2 | 字段3 | 字段4 |
                   |      字段5    |     字段6     |
                   |      字段7    | 字段8 | 字段9 |
實(shí)現(xiàn)這個(gè)很簡(jiǎn)單,你可以直接在上面拖動(dòng)字段名,拖動(dòng)時(shí)會(huì)顯示箭頭的,放入你想顯示的位置就OK了。或者在鼠標(biāo)右擊cxGrid1DBBandedTableView1菜單里的Edit Layout里也可以拖放。

但是cxGrid不能實(shí)現(xiàn)如下的多表頭形式:
                   ---------------------------------
                   |     說(shuō)明1     |     說(shuō)明2     |
                   ---------------------------------
                   | 說(shuō)明3 | 說(shuō)明4 | 說(shuō)明5 | 說(shuō)明6 |
                   |      字段1    |     字段2     |
                   |      字段3    | 字段4 | 字段5 |
不知道有誰(shuí)能實(shí)現(xiàn)這樣的多表頭?   

17)在主從表結(jié)構(gòu)時(shí),當(dāng)點(diǎn)開(kāi)“+”時(shí)怎樣將焦點(diǎn)聚在相應(yīng)主表的記錄上?
解決:
var
 HitTest: TcxCustomGridHitTest;

procedure TColumnsShareDemoMainForm.tvProjectsMouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 // Note that the Sender parameter is a Site
 HitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
 // The point belongs to the [+]/[-] button area
 if HitTest is TcxGridExpandButtonHitTest then
   // Move focus to the record
   TcxGridExpandButtonHitTest(HitTest).GridRecord.Focused := True;
end;   
//點(diǎn)擊空白處添加新記錄
procedure TFrmAssignProduceTask.cxGrid1DBTableView1MouseDown(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
var
  AHitTest: TcxCustomGridHitTest;
begin
  with cxGrid1DBTableView1   do
    AHitTest:= ViewInfo.GetHitTest(X, Y);
  if (AHitTest.HitTestCode=0) and (Button= mbLeft) then   //左鍵點(diǎn)擊了grid的空白
  begin
    cdsMain.Append;
  end;
end;

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多

    黄色日韩欧美在线观看| 麻豆蜜桃星空传媒在线观看| 亚洲最大福利在线观看| 人妻内射在线二区一区| 国产亚洲欧美日韩国亚语| 一区二区三区国产日韩| 国产欧美一区二区三区精品视| 中文字幕日韩无套内射| 亚洲熟女精品一区二区成人| 精品老司机视频在线观看| 亚洲综合色婷婷七月丁香| 最近日韩在线免费黄片| 不卡视频在线一区二区三区| 精品人妻少妇二区三区| av免费视屏在线观看| 91人人妻人人爽人人狠狠| 国产一区二区三区丝袜不卡 | 黄片免费观看一区二区| 开心五月激情综合婷婷色| 日本av在线不卡一区| 精品少妇一区二区三区四区| 欧美亚洲美女资源国产| 丰满少妇被粗大猛烈进出视频| 中文字幕一二区在线观看| 亚洲国产成人一区二区在线观看| 国产免费一区二区三区av大片| 国产成人精品99在线观看| 午夜福利92在线观看| 日本成人中文字幕一区| 亚洲国产精品无遮挡羞羞| 久久精品亚洲欧美日韩| 国产肥妇一区二区熟女精品| 粗暴蹂躏中文一区二区三区| 国产免费观看一区二区| 一区二区日本一区二区欧美| 国产精品内射婷婷一级二级| 午夜久久久精品国产精品| 最近最新中文字幕免费| 久久91精品国产亚洲| 亚洲精品蜜桃在线观看| 天堂av一区一区一区|