Главная страница
    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.45 MB
Время: 0.046 c
14-1125157557
Piter
2005-08-27 19:45
2005.09.25
Конвертирование файлов FLV


14-1124922608
TG
2005-08-25 02:30
2005.09.25
Delphi или Microsoft Visual C++,


14-1125978782
Ozone
2005-09-06 07:53
2005.09.25
VideoAssm Home Edition :) (зацените)


1-1125398415
kyn66
2005-08-30 14:40
2005.09.25
Поиск в ListBox не работает из-за цифр?


3-1123748480
topmoz
2005-08-11 12:21
2005.09.25
Запрос на запись в таблицу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский