精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>控件开发和使用>>表格控件>>怎样使用StringGrid取得Cell的坐标?

主题:怎样使用StringGrid取得Cell的坐标?
发信人: teleme()
整理人: teleme(2000-12-05 19:11:55), 站内信件



//新建一个工程,在窗体上加一个StringGrid,
//下面是unit1.pas


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dia
logs,
  Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DblClick(Sender: TObject);
    procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButt
on;
      Shift: TShiftState; X, Y: Integer);
    procedure StringGrid1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

const
WeekDayName :Array[1..7] of String=('星期一','星期二','星期三','星期四
','星期五','星期六','星期日');


var
X_Pos,Y_Pos:integer;//鼠标在窗体的位置
Col_Pos,Row_Pos:integer;//单元位置



{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

var
i:integer;
begin
Application.HintPause:=100;
Font.Size :=10;
Caption:='StringGrid演示程序';

StringGrid1.ShowHint :=True;
StringGrid1.ColCount :=8;
StringGrid1.RowCount :=12;
StringGrid1.Cells[0,0]:='第18周';
for i:=1 to StringGrid1.ColCount -1  do
StringGrid1.Cells[i,0]:=WeekDayName[i];
for i:=1 to StringGrid1.RowCount -1 do
 StringGrid1.Cells[0,i]:=InttoStr(i+7)+':00';
 StringGrid1.Options :=StringGrid1.Options+[goTabs,goROwSizing,goColSi
zing]-[goEditing];

end;


procedure TForm1.StringGrid1DblClick(Sender: TObject);
var
SchemeItem:String;
begin
StringGrid1.MouseToCell(X_Pos,Y_Pos,Col_Pos,Row_Pos) ;  //转换到单位位


if (Col_Pos<0 )or (Row_Pos<0 ) then
Exit;

if (StringGrid1.Cells[Col_Pos,Row_Pos]<>''  ) then //取消计划概要
 begin

 StringGrid1.Cells[Col_Pos,Row_Pos]:='';
 Exit;

 end;

 SchemeItem:=InputBox('提示','请输入计划概要:','会议');
 StringGrid1.Cells[Col_Pos,Row_Pos]:=SchemeItem;

 End;



procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
X_Pos:=x;
Y_Pos:=y;
end;

procedure TForm1.StringGrid1Click(Sender: TObject);
begin
    StringGrid1.MouseToCell(X_Pos,Y_Pos,Col_Pos,Row_Pos);//转化到单元位

    StringGrid1.Hint :=StringGrid1.Cells[Col_Pos,Row_Pos];//暂时借用该
特性显示工作计划
     
end;

end.

[关闭][返回]