Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Вниз

Разбираем 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
3-49459
AVP_opck
2003-12-18 06:50
2004.01.16
как проверить существование таблицы


1-49519
oens
2004-01-03 09:23
2004.01.16
Сраванение


14-49739
Ru
2003-12-24 11:19
2004.01.16
Существует ли возможность?


7-49776
dream
2003-11-03 14:14
2004.01.16
Как записать данные в реестр на имя определёного пользователя


14-49733
Rauf
2003-12-25 00:11
2004.01.16
Как определить длину кода функции в байтах???





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