Текущий архив: 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.45 MB
Время: 0.036 c