Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

Ширина и высота ячеек stringgrid вручную   Найти похожие ветки 

 
timekiller ©   (2010-01-22 16:20) [0]

Подскажите такую вещь:
как изменять вручную ширину столбцов или высоту строк когда в таблице Stringgrid отсутствуют фиксированные столбцы и фиксированные строки?


 
{RASkov} ©   (2010-01-22 16:35) [1]

> [0] timekiller ©   (22.01.10 16:20)
> как изменять вручную

что значит "в ручную"?


 
timekiller ©   (2010-01-22 16:42) [2]

ну мышкой двигать


 
Сергей М. ©   (2010-01-22 16:47) [3]


> ну мышкой двигать


Ну так у грида как и у любого контрола есть мышиные события - Down/Up/Move

Лови их и расчитывай все что тебе нужно на основании мышиных координат, передаваемых в обработчики этих событий отн-но клиентской области грида


 
timekiller ©   (2010-01-22 16:49) [4]

...кажется именно [3] и попробую, спасиб


 
timekiller ©   (2010-01-23 14:37) [5]

немного поэксперементировал:

[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, поправьте если где перезаморочено?



Страницы: 1 вся ветка

Текущий архив: 2010.03.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1263159025
Юрий
2010-01-11 00:30
2010.03.28
С днем рождения ! 11 января 2010 понедельник


2-1264603718
d.l.
2010-01-27 17:48
2010.03.28
try..finally


2-1264056255
Elafor
2010-01-21 09:44
2010.03.28
СНОВА INSERT


2-1264422307
Anonim
2010-01-25 15:25
2010.03.28
доступ к списку Tlist


1-1245208033
uniken1
2009-06-17 07:07
2010.03.28
Смена обоев рабочего стола