控件帮助(20分)

  • 主题发起人 主题发起人 zjz
  • 开始时间 开始时间
Z

zjz

Unregistered / Unconfirmed
GUEST, unregistred user!
本人需1控件
请各位帮忙一下
Tstringgrid 组件
要求一个 cells 格内可显示多行文字
(带源代码)
多谢各位
请寄到我email
beauty2000@263.net
thank you very much!
who first who get twenty
 
TjvStringGrid 是改良版的 TStringGrid 构件,能够依据格子内文字的内容,自动决定格子宽度与高度 ( 附源码 ),作者 : Jan Verhoeven。
只有1650字节
 
只要将TStringGrid中的OnDraw事件重写即可,没有必要非用控件。
下面是一段代码:
procedure TForm1.grid1DrawCell(Sender: TObject;
Col, Row: Longint;
Rect: TRect;
State: TGridDrawState);
var l_oldalign : word;
l_YPos,l_XPos,i : integer;
s,s1 : string;
l_col,l_row :longint;
begin
l_col := col;
l_row := row;
with sender as tstringgriddo
begin
if (l_row=0) then
canvas.font.style:=canvas.font.style+[fsbold];
if l_row=0 then
begin
l_oldalign:=settextalign(canvas.handle,ta_center);
l_XPos:=rect.left + (rect.right - rect.left) div 2;
s:=cells[l_col,l_row];
while s<>''do
begin
if pos(#13,s)<>0 then
begin
if pos(#13,s)=1 then
s1:=''
else
begin
s1:=trim(copy(s,1,pred(pos(#13,s))));
delete(s,1,pred(pos(#13,s)));
end;
delete(s,1,2);
end
else
begin
s1:=trim(s);
s:='';
end;
l_YPos:=rect.top+2;
canvas.textrect(rect,l_Xpos,l_YPos,s1);
inc(rect.top,rowheights[l_row] div 3);
end;
settextalign(canvas.handle,l_oldalign);
end
else
begin
canvas.textrect(rect,rect.left+2,rect.top+2,cells[l_col,l_row]);
end;

canvas.font.style:=canvas.font.style-[fsbold];
end;
end;
 
现成的控件(无源码):
D3:<a href="http://vcl.vclxx.com/DELPHI/D32FREE/FIXSLGD3.ZIP">down</a>
D4:<a href="http://vcl.vclxx.com/DELPHI/D32FREE/FIXSLGD4.ZIP">down</a>
请看说明:
加强版 TStringGrid 构件,提供多列文字编辑能力等多项新功能
( 1.4 版,无源码 Delphi 4.0 版适用 )
作者 : Vasily Kholopov。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部