Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.125.7] |
|
Сообщ.
#1
,
|
|
|
Подскажите такую вещь:
как изменять вручную ширину столбцов или высоту строк когда в таблице Stringgrid отсутствуют фиксированные столбцы и фиксированные строки? |
Сообщ.
#2
,
|
|
|
Включить в Options goColSizing и goRowSizing и двигать мышью?
|
Сообщ.
#3
,
|
|
|
без фиксированных строк и без фиксированных столбцов...
|
Сообщ.
#4
,
|
|
|
Цитата 095 @ ез фиксированных строк и без фиксированных столбцов... а о чем это говорит напомни мне, среды нет под рукой |
Сообщ.
#5
,
|
|
|
тут функциональность как и у экселя - потянуть можно только за фиксированные ячейки - A,B,C,D ...ZZZZ и тд
если их нет - тянуть незачто... Добавлено проде поэксперементировал сам .. : 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 //сделать проверку на заползание в другие ячейки {!} 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; вроде работает)) подскажите plz может если где перезаморочено? |
Сообщ.
#6
,
|
|
|
type TStringGrid = class(Grids.TStringGrid) procedure CalcSizingState(X, Y: Integer; var State: TGridState; var Index: Longint; var SizingPos, SizingOfs: Integer; var FixedInfo: TGridDrawInfo);override; end; procedure TStringGrid.CalcSizingState; procedure CalcAxisState(const AxisInfo: TGridAxisDrawInfo; Pos: Integer;NewState: TGridState); begin // скопировано из Grids end; begin inherited; CalcAxisState(FixedInfo.Horz, X, gsColSizing); CalcAxisState(FixedInfo.Vert, Y, gsRowSizing); end; |