Главная страница
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.008 c
2-1264703807
Jimmy
2010-01-28 21:36
2010.03.28
Задержка


2-1264497065
Starraider
2010-01-26 12:11
2010.03.28
StringGrid vs Enter


3-1220515408
DVM
2008-09-04 12:03
2010.03.28
ID последней добавленной записи


11-1215025564
Сашик
2008-07-02 23:06
2010.03.28
Запись в ресурсы DLL


13-1124643641
cherrex
2005-08-21 21:00
2010.03.28
Excel и .NET