Главная страница
    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.036 c
1-1125816959
Dibroff
2005-09-04 10:55
2005.09.25
Как правильно нарисовать вне формы и поверх остальных форм


2-1124113351
Novice
2005-08-15 17:42
2005.09.25
Вопрос по TreeView


8-1115819412
sashok
2005-05-11 17:50
2005.09.25
Спектрограмма звука


14-1125743451
lookin
2005-09-03 14:30
2005.09.25
Печень просит подаянья....


3-1123934333
Marser
2005-08-13 15:58
2005.09.25
ADO. Отслеживание изменения БД.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский