DELPHI基础_StringGrid行列的增加和删除 下载本文

内容发布更新时间 : 2025/1/6 19:17:24星期一 下面是文章的全部内容请认真阅读。

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