![]() |
|
|
#1
|
||||
|
||||
|
Как управлять элементами листбокс с помощью кнопок расположенных на форме? Например передвинуть один или несколько выделенных элементов кнопками "вверх" или "вниз", переместить элементы сразу вверх или вниз списка или удалить из списка.
|
|
#2
|
|||
|
|||
|
Код:
|
|
#3
|
||||||||||||
|
||||||||||||
|
Переместить выделенный в конец
Код:
в начало Код:
удалить Код:
вверх Код:
вниз Код:
это если фокус сохранять нужно (сдвиг вниз) Код:
|
|
#4
|
||||
|
||||
|
Цитата:
это сдвиг фокуса, но не Item-a ![]() |
|
#5
|
|||
|
|||
|
Цитата:
Вопрос не внимательно прочитал |
|
#6
|
||||
|
||||
|
Спасибо! Все работает.
Как быть, если надо передвинуть несколько строк сразу? |
|
#7
|
||||
|
||||
|
Еще вопросик. Как переименовать файл на диске, используя значение из элемента листбокса, в котором содержится полный адрес включая расширение.
Последний раз редактировалось timeless, 28.06.2008 в 03:39. |
|
#8
|
|||
|
|||
|
Вообще, переименовать файл можно командой Rename. Одно из имен у тебя уже готовое лежит в листбоксе. Второе надо сконструировать.
Код:
Сорри, коменты по английски. Идея такая. В листбоксе лежит полное имя файла (с путем). Переименовываем выбранный файл. Спрашиваем новое имя у пользователя. Если получилось переименовать, то обновляем инфу в листбоксе, иначе - сообщение об ошибке. |
|
#9
|
||||
|
||||
|
что значит несколько строк? несколько выделенных? начиная с какой-то позиции или что?
|
|
#10
|
||||
|
||||
|
lmikle,
Спасибо, сделал по вашему примеру. Ferra, Угу, нескольких выделенных. Пользователь выделяет несколько строк, и, при нажатии кнопки "вверх", они все перемещаются вверх на одну позицию. Аналогично с кнопками "в начало" и "удалить" и т.д. Подозреваю будут проблемы, если строки выделены через одну. Алгоритм в голове есть, но он слишком громоздкий, и я не знаю как обработать множественное выделение. |
|
#11
|
|||
|
|||
|
Если передвижка идет на 1 позицию, то особых проблем нет.
Если двигаем вверх, то циклом от 0 до Count-1 двигаем поочереди все строки на единичку вверх (используя метод Exchange и контролируя, что строка и так не является первой). Если двигаем вниз, то циклом от Count-1 до 0 двигаем поочереди все строки на единичку вниз (используя метод Exchange и контролируя, что строка и так не является последней). Пример нужен или сам справишся? |
|
#12
|
||||
|
||||
|
Пожалуй, нужен пример.
|
|
#13
|
|||
|
|||
|
О, господи!!!
Код:
Вниз аналогично, только цикл в обратном напрмвлении и проверяешь I+1. Вроде должно работать. |
|
#14
|
||||
|
||||
|
Цитата:
Последний раз редактировалось timeless, 01.07.2008 в 13:39. |
|
#15
|
||||
|
||||
|
И еще вопрос, если я не совсем надоел
. Как получить адрес папки при перетаскивании её из проводника в листбокс? |