又是tstringgrid!!!咳。。。

e_shark 2003-04-07 11:53:40
请问各位大侠,如何限定TSTRINGGRID中单元格的文字格式,比如右对齐等,还有在输入
单元格内容的时候,如何限制文字的长度,请教了。。。急。。。在线。。。。
...全文
56 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_shark 2003-05-16
  • 打赏
  • 举报
回复
已经解决,不过不是用stringgrid,还是要谢谢各位,给分!!
e_shark 2003-04-13
  • 打赏
  • 举报
回复
就是啊,没人回答吗?
FrameSniper 2003-04-12
  • 打赏
  • 举报
回复
楼上的各位,我现在需要将格式设置为XXXXXXXXXXXXXXXX.XX这样的金融格式

有什么办法呢?
yu98041154 2003-04-12
  • 打赏
  • 举报
回复
关注
hanzq 2003-04-11
  • 打赏
  • 举报
回复
格式问题:
在onGetEditMask事件中可以设置格式
procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Longint; var Value: string);

begin

Value := '!\(999\)000-0000;1';
end;
e_shark 2003-04-08
  • 打赏
  • 举报
回复
限制长度的问题已经解决,就是格式问题还没有搞明白,还请各位多多指教。搞定了马上结。
lining_1977 2003-04-07
  • 打赏
  • 举报
回复
在onSetEditText事件里 判断value的长度,
e_shark 2003-04-07
  • 打赏
  • 举报
回复
试试看,还有如何限制输入的长度呢?
boz 2003-04-07
  • 打赏
  • 举报
回复
想要使字符串网格的第一行字符居中对齐,其他行右对齐,可以通过StringGrid.OnDrawCell事件处理来完成。

procedure WriteText(ACanvas: TCanvas; const ARect: TRect; DX, DY: Integer;
const Text: string; Format: Word);
var
S: array[0..255] of Char;
B, R: TRect;

begin
with ACanvas, ARect do
begin
case Format of
DT_LEFT : ExtTextOut(Handle, Left + DX, Top + DY, ETO_OPAQUE or
ETO_CLIPPED, @ARect, StrPCopy(S, Text),
length(Text), nil);

DT_RIGHT : ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,
ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), nil);

DT_CENTER : ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2, Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,
StrPCopy(S, Text), Length(Text), nil);
end;
end;
end;


procedure TBEFStringGrid.DrawCell(Col, Row: Longint; Rect: TRect; State: TGridDrawState);
var

procedure Display(const S: string; Alignment: TAlignment);
const
Formats: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
begin
WriteText(Canvas, Rect, 2, 2, S, Formats[Alignment]);
end;

begin
case Row of
0 : { 居中对齐第一行 }
if (Col < ColCount) then
Display(Cells[Col,Row], taCenter)
else
{ 右对齐其他行 }
Display(Cells[Col,Row], taRight);
end;

end;
boz 2003-04-07
  • 打赏
  • 举报
回复
//KeyPress事件
procedure TFrm.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if length(StringGrid1.cells[StringGrid1.Col,StringGrid1.row])>somelength then
Key:=#0;
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧