Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение границы столбца в stringgride [D7, Win2k]


r9000 ©   (2005-09-03 09:24:00) 

Добрый день!

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


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

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


ssk   (2005-09-03 14:16:00) [2]

>>r9000  

используй ListView


TUser   (2005-09-03 13:36:00) [3]

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;


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

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


Nalexey   (2005-09-03 09:51:00) [5]

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


r9000   (2005-09-03 09:47:00) [6]

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


TUser   (2005-09-03 09:37:00) [7]

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо