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

Вниз

Определение границы столбца в stringgride   Найти похожие ветки 

 
r9000   (2005-09-03 09:24) [0]

Добрый день!

Пытаюсь сделать то же что и в проводнике windows, т.е. при подведении курсора к границе заголовка столбца, и щелчке мыши идет выравнивание ширины столбца по максимальному размеру текста в нем. С помощью ф-ции StringGrid1.MouseToCell(X, Y, C, R) я добился что принажатии на столбец происходит выравнивание ширины столбца по тексту,  а вот как это сделать, чтобы это происходило только на границе данного столбца например когда курсор превращается crHSplit или вблизи нее, как в проводнике? Если можно на конкретном примере.
Заранее спасибо.


 
TUser ©   (2005-09-03 09:37) [1]

> например когда курсор превращается crHSplit

Анализируй Screen.Cursor


 
r9000   (2005-09-03 09:47) [2]

попытался в событии MouseDown да и в других он почему-то не делает например это if StringGrid1.Cursor=crHSplit then s1:=s2;


 
Nalexey ©   (2005-09-03 09:51) [3]

>TUser ©   (03.09.05 09:37) [1]
Да ну наверное не обязательно на мой взгляд. Можно перехватывать WM_MOUSEMOVE, и вызывать GetGridInfo если мне не изменяет память, потом анализировать возвращаяемые параметры и узнавать, что курсор находится на границе столбца, и какого столбца. К сожалению нет под рукой Delphi, не могу написать пример.


 
r9000   (2005-09-03 10:16) [4]

координаты х,у курсора, какой столбец я и так определил, а вот как определить на границе я нахожусь или нет непонятно? GetGridInfo -нет такого.


 
TUser ©   (2005-09-03 13:36) [5]

procedure TForm1.StringGrid1DblClick(Sender: TObject);
var P: TPoint;
   C, R: integer;
   RT: TRect;
begin
 P:=StringGrid1.ScreenToClient(Mouse.CursorPos);
 StringGrid1.MouseToCell(P.X,P.Y,C,R);
 if (R = 0) and (C <> -1) then begin
   Rt:=StringGrid1.CellRect(C,R);
   if P.X = Rt.Right then
     SetColumnWidth (C); // это твой код, который у тебя уже есть
   end
end;


 
ssk ©   (2005-09-03 14:16) [6]

>>r9000  

используй ListView


 
r9000   (2005-09-06 08:04) [7]

Спасибо TUser тоько я взял не if P.X = Rt.Right then, а диапазон
if (X > Rt.Right-20) and (X <= Rt.Right) then, чтобы понадежнее отрабатывала.



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

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

Наверх




Память: 0.48 MB
Время: 0.073 c
14-1125310284
Kerk
2005-08-29 14:11
2005.09.25
По какому календарю сегодня 1 апреля?


1-1125809637
NikNet
2005-09-04 08:53
2005.09.25
Как запустить ф-цию с параметрами строки в ASM


9-1115386078
Grell
2005-05-06 17:27
2005.09.25
Lines


8-1115890225
Grim
2005-05-12 13:30
2005.09.25
OpenGL - получение указателя на текстуру


1-1125917246
DesWind
2005-09-05 14:47
2005.09.25
Обясните смылсл данных действий.