[轉載] Delphi StringGrid常用屬性和常用操作

來源:互聯網
上載者:User

標籤:select   滑鼠   需要   沒有   儲存格   水平   指定   click   sage   

StringGrid組件用於建立顯示字串的網格,與試算表相似。它可使表格中的字串和相關對象操作簡單化。StringGrid組件提供了許多可控制網格外觀念的屬性,以及利用表格的結構響應使用者操作的事件和方法。StringGrid具有關聯對象與網格中的每個字串的作用,這些對象為使用者封裝了字串表示的資訊或行為。

 

一、Delphi StringGrid控制項的屬性及使用說明

1、固定行及固定列:  (沒有固定行列的時候,不能在運行時調節各個儲存格的寬度和高度)

  StringGrid.FixedCols := 固定行數;

  StringGrid.FixedRows := 固定列數;  

  StringGrid.FixedColor := 固定行列的顏色;  

  StringGrid.Color := 未固定行列的顏色(資料區); 

 

2、資料區行列的寬度和高度: 

  StringGrid.DefaultColWidth := 內定全部的寬度;  

  StringGrid.DefaultRowHeight := 內定全部的高度;  

  StringGrid.ColWidths[Index:Longint]:=某一行整行的寬度;    

  StringGrid.RowHeights[Index:Longint]:=某一列整列之高度;  

   

3、資料區(CELL)指定(將某一行列停在資料區最左上方)

  StringGrid.LeftCol:=某一行號;  

  StringGrid.TopRow:=某一列號;  

 

4、焦點移動到某一儲存格內:    

  StringGrid.Row:=?;  

  StringGrid.Col:=?;  

 

5、設定資料區行數和列數:(包含固定行、列亦算在內)    

  StringGrid.RowCount:=?;  

  StringGrid.ColCount:=?;  

 

6、給某一個儲存格賦值(從0開始):  

  StringGrid.Cells[Col值   ,   Row值]:=字串;  

 

7、判斷滑鼠處於哪一個儲存格中  

  在StringGrid的Mouse事件中(UP,DOWN或MOVE)下:  

  VAR   C   ,   R   :   Longint;  

  StringGrid.MouseToCell(X,Y,C,R);   {X,Y由MOUSE事件傳入}  

  {取回   C   ,   R   即為目前之Col   ,   Row值   }        

   

8、StringGrid之Options屬性:  

  若要在執行中開啟合租關閉Options某一功能如   ‘goTABS’,則可以如下:  

  開啟:  StringGrid.Options:=   StringGrid.Options   +   [goTABS];  

  關閉:  StringGrid.Options:=   StringGrid.Options   -   [goTABS];  

 

  goFixedHorzLine   固定列之間的水平分割線 

  goFixedVertLine    固定行之間的垂直分割線  

  goHorzLine        可滾動列之間的水平分割線    

  goVertLine         可滾動行之間的垂直分割線 

  goRangeSelect      可多重選取單元,如果包含goEditing,則忽略goRangeSelect。

  goDrawFocusSelected   用滑鼠多重選取時,第一個選擇的單元反白  

  goRowSizing        用滑鼠可改變列高  

  goColSizing         用滑鼠可改變行寬  

  goRowMoving       用滑鼠可移動可滾動行  

  goColMoving        用滑鼠可移動可滾動列 

  goEditing           可編輯單元的內容  

  goAlwaysShowEditor   表格總是編輯模式,不需要F2或ENTER即有等待輸入的遊標。如果Options不包含goEditing或包含goRowSelect,則goAlwaysShowEditor無效。

  goTabs              用TAB及Shift+TAB可切換表格單元

  goRowSelect   用滑鼠點一下可選取整列(亦與滑鼠可多重選擇互斥)  

  goThumbTracking   捲軸動時GRID跟著動,否則捲軸動完放開,GRID才動    

 

一、Delphi StringGrid控制項的常用作業碼

// 初始化StirngGrid的首行和首列

procedure TReferContentForm.SetSGridTitle(SGrid: TSuiStringGrid);

var

  ColIndex, RowIndex: integer;

begin

  //畫第一行(標題列)

  for colIndex := 1 to SGrid.ColCount do

  begin

    SGrid.Cells[colIndex, 0] := ‘列名‘ + Chr(ord(‘A‘) - 1 + colIndex);

  end;

 

  //畫第一列(數字欄)

  SGrid.ColWidths[0] := 30;

  SGrid.Cells[0, 0] := ‘序列‘;

  for RowIndex := 1 to SGrid.RowCount - 1 do

  begin

    SGrid.Cells[0, RowIndex] := IntToStr(RowIndex);

  end;

end;

 

// 清楚StirngGrid,指定行數和列數

procedure TReferContentForm.ClearSGrid(SGrid: TSuiStringGrid; aRow, aCol: integer);

var

  i: integer;

begin

  SGrid.RowCount := aRow;

  SGrid.ColCount := aCol;

  for i := 0 to SGrid.RowCount - 1 do //如果不清表頭則從1開始

    SGrid.Rows[i].Clear;

  setSGridTitle(SGrid);

end;

 

// 添加一行

procedure TReferContentForm.mmiN1Click(Sender: TObject);

var

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    SGrid.RowCount := SGrid.RowCount + 1;

    SetSGridTitle(SGrid);

  end;

end;

 

// 插入一行

procedure TReferContentForm.mmiN2Click(Sender: TObject);

var

  i, curRow: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    curRow := SGrid.Row; //記錄當前選定行的位置

    SGrid.rowcount := SGrid.rowcount + 1;

    for i := SGrid.rowcount - 1 downto curRow + 1 do

      SGrid.Rows[i] := SGrid.Rows[i - 1];

    SGrid.Rows[curRow].Clear;

    SetSGridTitle(SGrid);

  end;

end;

 

// 刪除當前一行

procedure TReferContentForm.mmiN3Click(Sender: TObject);

var

  i: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    for i := SGrid.row to SGrid.RowCount - 1 do

      SGrid.Rows[i] := SGrid.Rows[i + 1];

    SGrid.RowCount := SGrid.RowCount - 1; //刪除

    SetSGridTitle(SGrid);

  end;

end;

 

// 添加一列

procedure TReferContentForm.mmiN5Click(Sender: TObject);

var

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

    SGrid.ColCount := SGrid.ColCount + 1;

  SetSGridTitle(SGrid);

end;

 

// 插入一列

procedure TReferContentForm.mmiN6Click(Sender: TObject);

var

  i, CurCol: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    CurCol := SGrid.Col; //記錄當前選定行的位置

    SGrid.ColCount := SGrid.ColCount + 1;

    for i := SGrid.ColCount - 1 downto CurCol + 1 do

      SGrid.Cols[i] := SGrid.Cols[i - 1];

    SGrid.Cols[CurCol].Clear;

  end;

  SetSGridTitle(SGrid);

end;

 

// 刪除一列

procedure TReferContentForm.mmiN7Click(Sender: TObject);

var

  i: integer;

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    for i := SGrid.Col to SGrid.ColCount - 1 do

      SGrid.Cols[i] := SGrid.Cols[i + 1];

    SGrid.ColCount := SGrid.ColCount - 1; //刪除

  end;

  SetSGridTitle(SGrid);

end;

 

// 清空

procedure TReferContentForm.mmiN9Click(Sender: TObject);

var

  SGrid: TsuiStringGrid;

begin

  SGrid := TsuiStringGrid(suiPMSGrid.PopupComponent);

  if SGrid <> nil then

  begin

    ClearSGrid(SGrid, 5, 5)

  end;

  SetSGridTitle(SGrid);

end;

 

 // 右擊選擇儲存格

procedure TReferContentForm.suiStringGridContentMouseDown(Sender: TObject;

  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

  if (Button = mbRight) then

  begin

    SendMessage(SGridContent.Handle, WM_LBUTTONDOWN, 0, MAKELONG(x, y));

    SendMessage(SGridContent.Handle, WM_LBUTTONUP, 0, MAKELONG(x, y));

  end;

end;

 

procedure TReferContentForm.FormShow(Sender: TObject);

begin

  SetSGridTitle(SGridContent);

end;

 

// 把標題列和數字列中是內容,置中顯現

procedure TReferContentForm.SGridContentDrawCell(Sender: TObject; ACol,

  ARow: Integer; Rect: TRect; State: TGridDrawState);

var

  s: string;

  r: TRect;

begin

  if (ACol = 0) or (ARow = 0) then

  begin

    with TSuiStringGrid(Sender) do

    begin

      Canvas.Brush.Color := $00F0DDCE;

      Canvas.FillRect(Rect);

      s := Cells[ACol, ARow];

      r := Rect;

      DrawText(Canvas.Handle, PChar(s), Length(s), r, DT_CENTER or DT_SINGLELINE or DT_VCENTER);

    end

  end

end;

[轉載] Delphi StringGrid常用屬性和常用操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.