计算机二级Delphi基础辅导:StringGrid行列的增加和删除
来源:优易学  2011-6-2 21:01:44   【优易学:中国教育考试门户网】   资料下载   IT书店

  type
  TExCell = class(TStringGrid)
  public
  procedure DeleteRow(ARow: Longint);
  procedure DeleteColumn(ACol: Longint);
  procedure InsertRow(ARow: LongInt);
  procedure InsertColumn(ACol: LongInt);
  end;
  procedure TExCell.InsertColumn(ACol: Integer);
  begin
  ColCount :=ColCount +1;
  MoveColumn(ColCount-1, ACol);
  end;
  procedure TExCell.InsertRow(ARow: Integer);
  begin
  RowCount :=RowCount +1;
  MoveRow(RowCount-1, ARow);
  end;
  procedure TExCell.DeleteColumn(ACol: Longint);
  begin
  MoveColumn(ACol, ColCount -1);
  ColCount := ColCount - 1;
  end;
  procedure TExCell.DeleteRow(ARow: Longint);
  begin
  MoveRow(ARow, RowCount - 1);
  RowCount := RowCount - 1;
  end;
  如何编写使StringGrid中的一列具有Check功能,和CheckBox效果一样
  unit Unit1;
  interface
  uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids;
  type
  TForm1 = class(TForm)
  grid: TStringGrid;
  procedure FormCreate(Sender: TObject);
  procedure gridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
  procedure gridClick(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;
  var
  Form1: TForm1;
  fcheck,fnocheck:tbitmap;
  implementation
  {$R *.DFM}
  procedure TForm1.FormCreate(Sender: TObject);
  var
  i:SmallInt;
  bmp:TBitmap;
  begin
  FCheck:= TBitmap.Create;
  FNoCheck:= TBitmap.Create;
  bmp:= TBitmap.create;
  try
  bmp.handle := LoadBitmap( 0, PChar(OBM_CHECKBOXES ));
  With FNoCheck Do Begin
  width := bmp.width div 4;
  height := bmp.height div 3;
  canvas.copyrect( canvas.cliprect, bmp.canvas, canvas.cliprect );
  End;
  With FCheck Do Begin
  width := bmp.width div 4;
  height := bmp.height div 3;
  canvas.copyrect(canvas.cliprect, bmp.canvas, rect( width, 0, 2*width, height ));
  End;
  finally
  bmp.free
  end;
  end;
  procedure TForm1.gridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
  begin
  if not (gdFixed in State) then
  with TStringGrid(Sender).Canvas do
  begin
  brush.Color:=clWindow;
  FillRect(Rect);
  if Grid.Cells[ACol,ARow]=’yes’ then
  Draw( (rect.right + rect.left - FCheck.width) div 2, (rect.bottom + rect.top - FCheck.height) div 2, FCheck )
  else
  Draw( (rect.right + rect.left - FCheck.width) div 2, (rect.bottom + rect.top - FCheck.height) div 2, FNoCheck );
  end;
  end;
  procedure TForm1.gridClick(Sender: TObject);
  begin
  if grid.Cells[grid.col,grid.row]=’yes’ then
  grid.Cells[grid.col,grid.row]:=’no’
  else
  grid.Cells[grid.col,grid.row]:=’yes’;
  end;
  end.
  StringGrid组件Cells内容分行显示在Tstringgrid.ondrawcell事件中
  DrawText(StringGrid1.Canvas.Handle,pchar(StringGrid1.Cells[Acol,Arow]),Length(StringGrid1.Cells[Acol,Arow]),Rect,DT_WORDBREAK or DT_LEFT);
  可以实现文字换行!
  在StringGrid怎样制作只读的列在 OnSelectCell事件处理程序中,加入: (所有的列均设成可修改的)
  if Col mod 2 = 0 then
  grd.Options := grd.Options + [goEditing]
  else
  grd.Options := grd.Options - [goEditing];
  stringgrid从文本读入的问题(Save/Load a TStringGrid to/from a file?)stringgrid从文本读入的问题
  // Save a TStringGrid to a file
  procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
  var
  f: TextFile;
  i, k: Integer;
  begin
  AssignFile(f, FileName);
  Rewrite(f);
  with StringGrid do
  begin
  // Write number of Columns/Rows
  Writeln(f, ColCount);
  Writeln(f, RowCount);
  // loop through cells
  for i := 0 to ColCount - 1 do
  for k := 0 to RowCount - 1 do
  Writeln(F, Cells[i, k]);
  end;
  CloseFile(F);
  end;
  // Load a TStringGrid from a file
  procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
  var
  f: TextFile;
  iTmp, i, k: Integer;
  strTemp: String;
  begin

[1] [2] [3] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训