Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.16;
Скачать: CL | DM;

Вниз

Разбираем ListView   Найти похожие ветки 

 
Cash ©   (2004-01-05 13:53) [0]

А возможно ли узнать, внутри какого столбца был произведен клик мыши (при выделении итема)?
Главное как это узнать.


 
[lamer]Barmaglot ©   (2004-01-05 13:59) [1]

ListView_HitTest?


 
Cash ©   (2004-01-05 14:10) [2]

[lamer]Barmaglot © (05.01.04 13:59) [1] так.. а по конкретнее.


 
[lamer]Barmaglot ©   (2004-01-05 14:14) [3]

Ну я бы делал руками... То есть при клике на ListView получаешь координаты в координатной сетке listview`а. Потом проверяешь если х от 0 до конца первого столбца, то первый, если от конца первого до конца второго, то второй и т.д.


 
Cash ©   (2004-01-05 14:19) [4]

Ха... я также делал, НО! если к-во столбцов выходит за рамки ListView, из любого положения гор. ползунка моя процедурка отсчитывает начиная с самого первого столбца.
P.S. думал там спецательный элемент для этого припасен.


 
[lamer]Barmaglot ©   (2004-01-05 14:31) [5]

Насколько хватает моих ограниченных знаний, специальных функций нет. Может отслеживать позицию скрола?


 
Леприкон ©   (2004-01-05 14:32) [6]

Может лучше StringGrid поюзать?


 
default ©   (2004-01-05 14:38) [7]

GetItemAt?


 
[lamer]Barmaglot ©   (2004-01-05 14:41) [8]

Ему нужна колонка а не итем (правда не понятно зачем...)


 
default ©   (2004-01-05 14:44) [9]

ну если у него число столбцов(и item-ов в них) заранее определено, можно по item-у определить столбец...


 
[lamer]Barmaglot ©   (2004-01-05 14:49) [10]

Если защел разговор о столбцах для ListView, это значит, что он находится в режиме Report, то есть каждый итем занимает 1 строку и н-ное количество столбцов. (Например как в программе FindFiles). Поэтому знание номера итема ему ничего не даст...


 
olookin ©   (2004-01-05 14:55) [11]

Получить значение координаты начала области листвью если он прокручен можно... Например на onmousedown прописать

showmessage(inttostr(listview1.TopItem.Left));

Отсюда зная X и Y мыши можно получить координату клика относительно самого края листвью, и пересчитав на ширину колонок, номер колонки где кликнули мышкой


 
olookin ©   (2004-01-05 14:59) [12]

вот рабочий код

procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var n,i,z: integer;
begin
n:=Abs(listview1.TopItem.Left)+X; z:=0;
for i:=0 to listview1.Columns.Count-1 do begin
z:=z+listview1.Column[i].Width;
if z>n then begin
showmessage("number of column is "+inttostr(i+1));
break; end;
end;
end;


 
Cash ©   (2004-01-05 15:30) [13]

Мужики, всем спасибо.
за недолгим отсуцтвием сам разработал алгоритм(защищено А.П.:)))). Нате Смотрите, работает на все сто.

Procedure TForm1.SchClm(AListView: TListView;MouseX: integer;var stb,stbw: integer);
var
i,a: integer;
begin
if AListView.Items.Item[0]<> nil then
a:=AListView.Items.Item[0].Position.X
else a:=0;
for i:=0 to (AListView.Columns.Count-1) do
if (MouseX>a)and(MouseX<a+AListView.Columns[i].Width) then begin
stb:=i;
stbw:=a+2;
break;
end else a:=a+ListView1.Columns[i].Width;
end;

[8] - поясню зчем.
ранее я задал вопрос о вставке Edit или CombBox в рамки, ограниченные столбцом и строкой(ПРЯМОУГОЛЬНИК), сейчас вставляешь эту процедурку в событие MouseMove, далее по даблклику внутри определенной области делаешь несколько подготовительных операцый с Edit-ом и, оба-на, готово.
Когда в ListView дофига и больше полей с припиской "редактировать", можно воткнуть именно этот алгоритм.(эдесь толко одна функцыя из всего алгоритма).
Всем спасибо за участие.



Страницы: 1 вся ветка

Текущий архив: 2004.01.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.02 c
1-49617
Denis1
2004-01-05 09:14
2004.01.16
Нужна макроподстановка! Помогите, PLS.


1-49492
rimd
2004-01-03 19:10
2004.01.16
Окна


3-49396
sokohigh
2003-12-19 15:57
2004.01.16
Как упаковать DBF через ADO+Jet4?


8-49648
ChekhlatyAndrew
2003-09-15 20:29
2004.01.16
масштабирование и конвертирование в ч б


1-49559
Zillah
2004-01-05 14:35
2004.01.16
JEDI Library несколько вопросов...