DELPHI基础StringGrid控件Word格式.docx
- 文档编号:22909968
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:45
- 大小:27.47KB
DELPHI基础StringGrid控件Word格式.docx
《DELPHI基础StringGrid控件Word格式.docx》由会员分享,可在线阅读,更多相关《DELPHI基础StringGrid控件Word格式.docx(45页珍藏版)》请在冰豆网上搜索。
KeyDown和KeyUp通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)
2.KeyPress只能捕获单个字符
KeyDown和KeyUp可以捕获组合键。
3.KeyPress可以捕获单个字符的大小写
4.KeyDown和KeyUp对于单个字符捕获的KeyValue都是一个值,也就是不能判断单个字符的大小写。
5.KeyPress不区分小键盘和主键盘的数字字符。
KeyDown和KeyUp区分小键盘和主键盘的数字字符。
6.其中PrScrn按键KeyPress、KeyDown和KeyUp都不能捕获。
type
TExCell=class(TStringGrid)
public
procedureDeleteRow(ARow:
Longint);
procedureDeleteColumn(ACol:
procedureInsertRow(ARow:
LongInt);
procedureInsertColumn(ACol:
end;
procedureTExCell.InsertColumn(ACol:
Integer);
begin
ColCount:
=ColCount+1;
MoveColumn(ColCount-1,ACol);
procedureTExCell.InsertRow(ARow:
RowCount:
=RowCount+1;
MoveRow(RowCount-1,ARow);
procedureTExCell.DeleteColumn(ACol:
MoveColumn(ACol,ColCount-1);
=ColCount-1;
procedureTExCell.DeleteRow(ARow:
MoveRow(ARow,RowCount-1);
=RowCount-1;
如何编写使StringGrid中的一列具有Check功能,和
CheckBox效果一样
unitUnit1;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,
Controls,Forms,Dialogs,Grids;
TForm1=class(TForm)
grid:
TStringGrid;
procedureFormCreate(Sender:
TObject);
proceduregridDrawCell(Sender:
TObject;
ACol,ARow:
Integer;
Rect:
TRect;
State:
TGridDrawState);
proceduregridClick(Sender:
private
{Privatedeclarations}
public
{Publicdeclarations}
var
Form1:
TForm1;
fcheck,fnocheck:
tbitmap;
implementation
{$R*.DFM}
procedureTForm1.FormCreate(Sender:
i:
SmallInt;
bmp:
TBitmap;
FCheck:
=TBitmap.Create;
FNoCheck:
=TBitmap.create;
try
bmp.handle:
=LoadBitmap(0,PChar
(OBM_CHECKBOXES));
WithFNoCheckDoBegin
width:
=bmp.widthdiv4;
height:
=bmp.heightdiv3;
canvas.copyrect(canvas.cliprect,bmp.canvas,
canvas.cliprect);
End;
WithFCheckDoBegin
canvas.copyrect(canvas.cliprect,bmp.canvas,rect(
width,0,2*width,height));
finally
bmp.free
end;
procedureTForm1.gridDrawCell(Sender:
ACol,
ARow:
Integer;
ifnot(gdFixedinState)then
withTStringGrid(Sender).Canvasdo
begin
brush.Color:
=clWindow;
FillRect(Rect);
ifGrid.Cells[ACol,ARow]='
yes'
then
Draw((rect.right+rect.left-FCheck.width)div2,
(rect.bottom+rect.top-FCheck.height)div2,FCheck)
else
(rect.bottom+rect.top-FCheck.height)div2,
FNoCheck);
procedureTForm1.gridClick(Sender:
ifgrid.Cells[grid.col,grid.row]='
grid.Cells[grid.col,grid.row]:
='
no'
;
end.
2003-11-1716:
23:
23StringGrid组件Cells内容分行显
示在Tstringgrid.ondrawcell事件中:
DrawText(StringGrid1.Canvas.Handle,pchar
(StringGrid1.Cells[Acol,Arow]),Length(StringGrid1.Cells
[Acol,Arow]),Rect,DT_WORDBREAKorDT_LEFT);
可以实现文字换行!
24:
04在StringGrid怎样制作只读的列
在OnSelectCell事件处理程序中,加入:
(所有的列均设成
可修改的)
ifColmod2=0then
grd.Options:
=grd.Options+[goEditing]
=grd.Options-[goEditing];
25:
07stringgrid从文本读入的问题
(Save/LoadaTStringGridto/fromafile?
)stringgrid从
文本读入的问题(Save/LoadaTStringGridto/froma
file?
)
//SaveaTStringGridtoafile
procedureSaveStringGrid(StringGrid:
const
FileName:
TFileName);
f:
TextFile;
i,k:
AssignFile(f,FileName);
Rewrite(f);
withStringGriddo
//WritenumberofColumns/Rows
Writeln(f,ColCount);
Writeln(f,RowCount);
//loopthroughcells
fori:
=0toColCount-1do
fork:
=0toRowCount-1do
Writeln(F,Cells[i,k]);
CloseFile(F);
//LoadaTStringGridfromafile
procedureLoadStringGrid(StringGrid:
iTmp,i,k:
strTemp:
String;
Reset(f);
//Getnumberofcolumns
Readln(f,iTmp);
=iTmp;
//Getnumberofrows
//loopthroughcells&
fillinvalues
Readln(f,strTemp);
Cells[i,k]:
=strTemp;
CloseFile(f);
//SaveStringGrid1to'
c:
.txt'
:
procedureTForm1.Button1Click(Sender:
SaveStringGrid(StringGrid1,'
);
//LoadStringGrid1from'
procedureTForm1.Button2Click(Sender:
LoadStringGrid(StringGrid1,'
*******************************************
打开一个已有的文本文件,并将内容放到stringgrid中,文本
行与stringgrid行一致;
在文本中遇到空格则放入下一cells.
搞定!
注意,我只写了一个空格间隔的,你自己修改一
下splitstring可以用多个空格分隔!
aa,bb:
tstringlist;
integer;
aa:
=tstringlist.Create;
bb:
aa.LoadFromFile('
fori:
=0toaa.Count-1do
=SplitString(aa.Strings[i],'
'
stringgrid1.Rows[i]:
=bb;
aa.Free;
bb.Free;
其中splitstring为:
functionSplitString(constsource,ch:
string):
temp:
string;
result:
=source;
=pos(ch,source);
whilei<
>
0do
result.Add(copy(temp,0,i-1));
delete(temp,1,i);
=pos(ch,temp);
result.Add(temp);
在StringGrid的DrawCell事件中添加类似的代码就可以了
:
VAR
vCol,vRow:
LongInt;
vCol:
=ACol;
vRow:
=ARow;
WITHSenderASTStringGrid,CanvasDO
IFvCol=2THENBEGIN///对于第2列设置为右对齐
SetTextAlign(Handle,TA_RIGHT);
TextRect(Rect,Rect.RIGHT-2,Rect.Top+2,Cells
[vCol,vRow]);
END;
28:
41当我将StringGird的options属性
中包含goRowSelect项时每当我选中StringGrid中一行,
则选中行用深蓝色显示,我想将深蓝色改为其他颜色应
怎样该?
当我将StringGird的options属性中包含
goRowSelect项时每当我选中StringGrid中一行,则选中
行用深蓝色显示,我想将深蓝色改为其他颜色应怎样该
?
procedureTForm1.StringGrid1DrawCell(Sender:
TObject;
Rect:
WithStringGrid1do
If(ARow=Krow)andnot(acol=0)then
Canvas.Brush.Color:
=clYellow;
//ClBlue;
Canvas.FillRect(Rect);
Canvas.font.color:
=ClBlack;
Canvas.TextOut(rect.left,rect.top,cells[acol,arow]);
procedureTForm1.StringGrid1SelectCell(Sender:
ACol,
ARow:
varCanSelect:
Boolean);
krow:
=Arow;
//*
kcol:
=Acol;
注意:
必须把变量KROW的值初始为1或其他不为0的值
,否则如果锁定第一行的话,第一行的颜色将被自设颜
色取代,而锁定行不会被重画。
32:
44怎么改变StringGrid控件某一列
的背景和某一列的只读属性,StringGrid控件标题栏的对齐
.怎么改变StringGrid控件某一列的背景和某一列的只读属
性,StringGrid控件标题栏的对齐.
请参考以下代码:
在OnDrawCell事件中处理背景色。
程序如下:
//将第二列背景变为红色。
ifnot((acol=1)and(arow>
=stringgrid1.fixedrows))then
exit;
withstringgrid1do
canvas.Brush.color:
=clRed;
canvas.FillRect(Rect);
canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow])
//加入如下代码,那么StringGrid的第四列就只读了.其他列
非只读
withStringGrid1dobegin
ifACol=4then
Options:
=Options-[goEditing]
elseOptions:
=Options+[goEditing];
TGridDrawState);
dx,dy:
byte;
if(acol=4)andnot(arow=0)then
canvas.Brush.color:
=clYellow;
canvas.font.color:
=clblue;
dx:
=2;
//调整此值,控制字在网格中显示的水平位置
dy:
//调整此值,控制字在网格中显示的垂直位置
canvas.TextOut(rect.left+dx,rect.top+dy,cells[acol,
arow]);
//控制标题栏的对齐
if(arow=0)then
=clbtnface;
dx:
=12;
//调整此值,控制字在网格中显示的水平位
置
dy:
=5;
//调整此值,控制字在网格中显示的垂直位置
canvas.TextOut(rect.left+dx,rect.top+dy,cells
[acol,arow]);
37:
15在stringGrid中使用回车键模拟
TAB键切换单元格的功能实现......
procedureTForm1.StringGrid1KeyPress(Sender:
varKey:
Char);
label
nexttab;
ifkey=#13then
key:
=#0;
nexttab:
if(stringgrid1.Col<
stringgrid1.ColCount-1)then
stringgrid1.Col:
=stringgrid1.Col+1;
end
ifstringgrid1.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DELPHI 基础 StringGrid 控件