![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Определение границы столбца в 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