如何在StringGrid的Cell上显示及编辑多行文本?行数不可变(50分)

  • 主题发起人 主题发起人 iwinyee
  • 开始时间 开始时间
setwindowlong(stringgrid.inplaceeditor.handle, GWL_STYLE,
getwindowlong(stringgrid.inplaceeditor.handle, GWL_STYLE)
or ES_MULTILINE or ES_WANTRETURN
or ES_AUTOHSCROLL or ES_AUTOVSCROLL);
 
可否讲详细点?TStringGrid没有inplaceeditor对象只在TCustomGrid中才有它,
另外代码置于何处?
 
TStringGrid继承于TCustomGrid,把TStringGrid按TCustomGrid访问就有TInplaceEditor.
 
能不能找个这样功能的控件呢
 
呵呵, eyes用setwindowlong回答了若干问题了:-)
请详述一下setwindowlong的用法?
 
还是不行!
我用 (StringGrid1 as TCustomGrid).inplaceeditor... 或
with StringGrid1 as TCustomGrid do...
均返回编译错误。
代码应置于何处? 我放在FormActivate中。
 
Look at ......
 
Teikini :
你说的是看什么啊?
 
hi:
我找到了这个控件:AdvStringGrid,它有一个Multilinecells属性,设为true
就可以显示多行数据了。至于编辑嘛,可能需要自己动手了。
 
Another_eYes:
怎么样?SetWindowLong不行,返回错误:Control has no parent!
我用TEdit做过试验,但不起作用!
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState);
var
TheGrid : TStringGrid;
A : String;
begin
TheGrid := Sender as TStringGrid;
if (Row < TheGrid.FixedRows) or (Col < TheGrid.FixedCols) then
TheGrid.Canvas.Brush.Color := clBtnFace
else
TheGrid.Canvas.Brush.Color := clWhite;
TheGrid.Canvas.FillRect(Rect);
A := TheGrid.Cells[Col,Row];
DrawText( TheGrid.Canvas.Handle,PChar(A),StrLen(PChar(A)),Rect,DT_WORDBREAK);
end;

编辑也差不多吧,
这个行数是随着长度的变化而变的,要不动态的判断,再改宽度??
试一试吧。

 
接受答案了.
 
后退
顶部