![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ширина и высота ячеек stringgrid вручную [D6, D7, XP]
timekiller © (2010-01-22 16:20:00)Подскажите такую вещь:
как изменять вручную ширину столбцов или высоту строк когда в таблице Stringgrid отсутствуют фиксированные столбцы и фиксированные строки?
timekiller (2010-01-23 14:37:00) [1]немного поэксперементировал:
[code]
procedure TMainFRM.StringGrid3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var glc,i:integer;
begin
StringGrid3.Cursor:=crDefault;
Panel2.Caption:=IntToStr(X)+','+inttostr(Y);
//надо менять курсор на разделительных линиях в гриде
if StringGrid3.GridLineWidth>0 then
begin
glc:=0; //координата gridline;
for i:=0 to StringGrid3.ColCount-2 do
begin
glc:=glc+StringGrid3.ColWidths[i]+StringGrid3.GridLineWidth;
if (X>glc-1) and (X<glc+1) then
begin
StringGrid3.Cursor:=crHSplit;
//коррекция по 0 в минус и в плюс
GridCorr:=X;
//зафиксить тек ширину столбца его номер (глобальные перем)
GridColW1:=StringGrid3.ColWidths[i];
GridColW2:=StringGrid3.ColWidths[i+1];
GridCol1:=i;
GridCol2:=i+1;
end;
end;
{на будущее для строк
glc:=0; //координата gridline;
for i:=0 to StringGrid3.RowCount-2 do
begin
glc:=glc+StringGrid3.RowHeights[i]+StringGrid3.GridLineWidth;
if (Y>glc-1) and (Y<glc+1) then StringGrid3.Cursor:=crVSplit;
end;
}
end;
//пытаемся отобразить смещение от 0
//сделать проверку на заползание в другие ячейки {!}
//Panel5.Caption:=IntToStr(X-GridCorr);
//Panel6.Caption:=IntToStr(GridColW1)+','+IntToStr(GridColW2)+','+IntToStr(GridCol1)+','+IntToStr(GridCol2)+'|'+Panel5.Caption;
if Panel2.Color=clBlue then
begin
StringGrid3.ColWidths[GridCol1]:=GridColW1+(X-GridCorr);
StringGrid3.ColWidths[GridCol2]:=GridColW2-(X-GridCorr);
end;
if Panel2.Color=clRed then Panel2.Color:=clBlue;
end;
[/code]
вроде работает . .. plz, поправьте если где перезаморочено?
timekiller (2010-01-22 16:49:00) [2]...кажется именно [3] и попробую, спасиб
Сергей М. (2010-01-22 16:47:00) [3]
> ну мышкой двигать
Ну так у грида как и у любого контрола есть мышиные события - Down/Up/Move
Лови их и расчитывай все что тебе нужно на основании мышиных координат, передаваемых в обработчики этих событий отн-но клиентской области грида
timekiller (2010-01-22 16:42:00) [4]ну мышкой двигать
{RASkov} (2010-01-22 16:35:00) [5]> [0] timekiller © (22.01.10 16:20)
> как изменять вручную
что значит "в ручную"?