Страница: 1 |
Страница: 1 |
Вопрос: Listview click
Добавлено: 06.10.08 22:42
Автор вопроса:
Dim22
У меня в форме два элемента Listview, можно сделать два события Click column, но хочу объединить в одно, а в sender и е прочитать какой столбец какого Listview сыграл. как это лучше обыграть ?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа: BG(Алексей)
Вопросов: 26
Ответов: 295
Профиль | | #1
Добавлено: 07.10.08 02:26
Не совсем понял вопрос, но примерно так
Номер ответа: 2
Автор ответа: Dim22
Вопросов: 5
Ответов: 16
Профиль | | #2
Добавлено: 07.10.08 17:40
Спасибо, попробую этот вариант.
Подробнее о вопросе, у меня в форме есть два элемента Listview, в каждом из-них по четыре столбца :
имя файла, дата, время, размер. у меня написана процедура для сортировки столбцов универсальная одна для всех видов столбцов и для любого Listview. я хотел, чтобы click столбцов был бы в одной процедуре события, которая бы скидывала в мою процедуру номер столбца и name Listview.
Номер ответа: 3
Автор ответа: Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #3
Добавлено: 08.10.08 17:49
Не уверен, но мне кажется лучше сделать массив элементов Listview и тогда они отрабатываются одним событием. Только индексы массива надо подставлять.
Номер ответа: 4
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 08.10.08 18:42
Никаких массивов тут не нужно.. повесить 2 handler'a на одну процедуру и всего делов. В параметре sender будет ссылка на нужный Listview а во втором параметре все остальное.
Номер ответа: 5
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #5
Добавлено: 08.10.08 19:00
Номер ответа: 6
Автор ответа: Dim22
Вопросов: 5
Ответов: 16
Профиль | | #6
Добавлено: 08.10.08 19:31
сделал так, подобно ответу BG(Алексея)и EROS, на один Click повесил два Handles.
Огромное спасибо.
Номер ответа: 7
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 08.10.08 20:55
If e.Column = 0 Then sortdd1(0)
If e.Column = 1 Then sortdd1(1)
If e.Column = 2 Then sortdd1(2)
If e.Column = 3 Then sortdd1(3)
Это криво... замени эти строчки на
getliww1(sender)
....
setliww1(sender)
Это, скорее всего, тоже последствие кривых рук.. По всей видимости ты тут устанавливаешь/читаешь локальную перменную уровня класса.. Логичней было бы создать некую подпрограмму(процедуру) для сортировки и в нее в качестве параметра передать 2 аргумета: Непосредственно сам ListView и индекс колонки по которому кликнули. Таким образом ты избавишься от этой локальной переменной.
Номер ответа: 8
Автор ответа: Dim22
Вопросов: 5
Ответов: 16
Профиль | | #8
Добавлено: 08.10.08 22:57
спасибо за замечания, сразу все не сообразил, возился с универсальной процедурой сортировки, чтобы там все было по минимуму, тут конечно эти три процедуры объединю в одну, в которую передам e и sender. И вообще есть мысль загнать ее в ООП вид ( в отдельный dll).