![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringGrid [D5, WinME]
KB © (2002-03-19 13:45:00)Помогите, плиз
как в StringGrid сделать чтоб ячейки автоматически увеличивались или уменьшалсиь, типи autosize.
Song (2002-03-19 14:18:00) [1]Кстати, в моём примере Cells[ACol,ARow] везде можно в лёгкую заменить на Value.
Song (2002-03-19 14:17:00) [2]:))
2Сергей Иванов, а чего Вы испугались?
Мы такие страшные?
Сергей Иванов (2002-03-19 14:14:00) [3]PS. Извини, uses с перепугу поставил пустой :(
uses Windows, Sysutils
Song (2002-03-19 14:13:00) [4]procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
Var Rect:TRect;
begin
With TStringGrid(Sender) Do
Begin
Rect:=CellRect(ACol,ARow);
With Canvas Do
IF TextWidth(Cells[ACol,ARow])>Rect.Right-Rect.Left then
ColWidths[ACol]:=ColWidths[ACol]+TextWidth(Cells[ACol,ARow][Length(Cells[ACol,ARow])]);
End;
end;
Написать-написал, но на работспособность не проверил. Посмотри, чего получиться.
Сергей Иванов (2002-03-19 14:11:00) [5]uses
procedure WriteToCell(Sender :TStringGrid; ACol, ARow :integer; Value :variant);
var
Len: TSize;
begin
with Sender do begin
if Value<>null then Cells[ACol, ARow] := value else Cells[ACol, ARow] := "";
Win32Check(GetTextExtentPoint32(Canvas.Handle, Pchar(Cells[ACol, ARow]),
Length(Cells[ACol, ARow]), Len));
if Len.cx > ColWidths[ACol] then ColWidths[ACol] := Len.cx+6;
if Len.cy > RowHeights[ARow] then RowHeights[ARow] := Len.cy+2;
end;
end;
KB (2002-03-19 14:09:00) [6]может кинете отрывок кода проги небольшой
Виктор Щербаков (2002-03-19 14:04:00) [7]Если известен DC, то можно узнать средний размер буквы выбранного шрифта с помощью GetTextMetrics.
Но проще TCanvas.TextWidth
KB (2002-03-19 14:01:00) [8]как узнать размер вводимой буквы?
Song (2002-03-19 13:56:00) [9]Ну, например, можно обрабатывать onSetEditText и проверять, что если размер вводимого текста превышает ширину столбца, то увеличивать ширину столбца на размер вводимой буквы, изменяя ColWidths