StringGrid编辑状态如何让文字换行 直接打回车就变成编辑完成了,还请指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、如果楼主的意图是“在某一格里输入回车键,则退出编辑状态”:只需把StringGrid的Options设置为[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing]即可注意,仅是比默认设置多了一个goEditing---------------------------------------------------------------------2、如果楼主的意图是“在某一格里输入回车键,则该格文本换行继续输入”:procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);begin with TStringGrid(Sender) do if Key=#13 then begin Cells[Col,Row] := Cells[Col,Row]+#13+#10; Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect]; Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing,goAlwaysShowEditor]; end;end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);var //DrawCell代码参考自 老冯 的一个例子 HCell: Integer; HRow: Integer; SCell: string;begin with TStringGrid(Sender) do begin SCell := Cells[ACol, ARow]; HRow := RowHeights[ARow]; Canvas.FillRect(Rect); HCell := DrawText(Canvas.Handle, PChar(SCell), Length(SCell), Rect, 0 ); if HCell > HRow then RowHeights[ARow] := HCell; end;end;procedure TForm1.FormCreate(Sender: TObject);begin StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing,goAlwaysShowEditor];end;//楼主可以在某一格里输入一行文本,然后打回车再输入一行,然后把焦点移至其他格子看一下 可能没表述清楚单元格已有文字,我只是想在编辑状态,可以在文字段光标位置输入回车Cells[Col,Row] := Cells[Col,Row]+#13+#10;只是在文字末位回车,如何获得光标所在位置? 解决了,散分procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);varH:Hwnd;BufferSize:Longint;P: Pchar;S:string;beginif Key=#13 thenbegin H:=GetFocus; BufferSize:=SendMessage(h,WM_GETTEXTLENGTH,0,0); P:=StrAlloc(BufferSize); SendMessage(h,WM_GETTEXT,BufferSize+1,LPARAM(P)); S:=StrPas(P); Insert(#$D+#$A,S,HIWord(SendMessage(h, EM_GETSEL,0,0))+1); SendMessage(h,WM_SETTEXT,0,LPARAM(Pchar(S))); Key := #0;end;end; Delphi程序员 用登陆窗口进去之后调用主窗口,然后主窗口再调用另一个窗口Show ado +mssql的问题! 如何得到某一个菜单项的caption值? 对象释放的问题,有些奇怪。 请教 如果我动态创建了一个控件,比如button,如何获得它的onclick事件 我发布的Delphi程序安装不上怎么办? 请使用专属别名,不要使用这个设备 请问:如何自定义快捷键? 问个idHTTP的提交问题 两个 tstrings.create 出错
begin
with TStringGrid(Sender) do
if Key=#13 then
begin
Cells[Col,Row] := Cells[Col,Row]+#13+#10;
Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect];
Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing,goAlwaysShowEditor];
end;
end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var //DrawCell代码参考自 老冯 的一个例子
HCell: Integer;
HRow: Integer;
SCell: string;
begin
with TStringGrid(Sender) do
begin
SCell := Cells[ACol, ARow];
HRow := RowHeights[ARow];
Canvas.FillRect(Rect);
HCell := DrawText(Canvas.Handle, PChar(SCell), Length(SCell), Rect, 0 );
if HCell > HRow then RowHeights[ARow] := HCell;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goEditing,goAlwaysShowEditor];
end;
//楼主可以在某一格里输入一行文本,然后打回车再输入一行,然后把焦点移至其他格子看一下
单元格已有文字,我只是想在编辑状态,可以在文字段光标位置输入回车
Cells[Col,Row] := Cells[Col,Row]+#13+#10;
只是在文字末位回车,如何获得光标所在位置?
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
H:Hwnd;
BufferSize:Longint;
P: Pchar;
S:string;
begin
if Key=#13 then
begin
H:=GetFocus;
BufferSize:=SendMessage(h,WM_GETTEXTLENGTH,0,0);
P:=StrAlloc(BufferSize);
SendMessage(h,WM_GETTEXT,BufferSize+1,LPARAM(P));
S:=StrPas(P);
Insert(#$D+#$A,S,HIWord(SendMessage(h, EM_GETSEL,0,0))+1);
SendMessage(h,WM_SETTEXT,0,LPARAM(Pchar(S)));
Key := #0;
end;
end;