Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 28.10.2007, 02:15   #1
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
Вопрос Listbox и прибамбасы =)

Я делаю програмку на подобее Alt Desktop тоесть переключающитеся экраны ...
Подскажите пожалуйста как сдлать перекидывание из одного списка listbox в другой ?? типо Drsg&Drop ...
И как организовать поиск в ЛистБоксе с удалением элементов и известным именем ?(в проге используется процедура поиска всех открытых окон... и всегда находится Program Manager ... вот его то мне и нада автоматом удалять из списка чтобы чтото случайно не натворить =)) я думаю так :
Код:
i:=0;
for i to (listbox1.items.count-1) do
   begin
   if listbox1.items[i]='Window1' then listbox1.items[i].deleteitem;
   i:=i+1;
   end;
Проверить немогу ( написал отруки... вродебы прально... есть другие спосабы ?
Да и вот ещё..можно ли както получить иконки открытых окошеки отображать их динамически ?(тоесть количество иконок не фиксировано - изменяется на текущее количество и добавляется при нехватке...)- как это организовать ?
Если что поправьте меня... Заранее всем благодарен...
---
GAGARIN-NEW вне форума
Старый 28.10.2007, 03:30   #2
snusmumric
 
Регистрация: 28.10.2007
Сообщений: 3
По умолчанию

Drag and Drop между двумя компонентами ListBox
--------------------------------------------------------------------------------





Вот пересмотренный OnDragDrop, использующий source (источник) и sender (передатчик) вместо DstList и SrcList. Теперь, если вы установили SrcList и DstList для использования тех же методов OnDragOver и OnDragDrop и создали обработчик события OnDragDrop, то для операции Drag and Drop вы можете использовать оба решения.



procedure TDualListDlg.DstListDragDrop(Sender , Source: TObject; X,
Y: Integer);
var
droppedOnIndex: integer;
anItem: integer;
numberOfItems: integer;
begin
if (Sender is TListbox) and (Source is TListBox) then
begin
droppedOnIndex := TListBox(Sender).ItemAtPos(Point(X, Y), false);
numberOfItems := TListBox(Source).SelCount;
anItem := 0;
while numberOfItems > 0 do
begin
if TListBox(Source).Selected[anItem] = true then
begin
TListBox(Sender).Items.Insert(dropp edOnIndex,
TListBox(Source).Items[anItem]);
TListBox(Source).Items.Delete(anIte m);
TListBox(Source).Update;
TListBox(Sender).Update;
numberOfItems := numberOfItems - 1;
end
else
anItem := anItem + 1;
end;
end;
end;




Для того, чтобы предотвратить операцию Drag and Drop с одним и тем же компонентом, используйте следующий код в обработчике события OnDragOver:



if (Sender is TListBox) and (Source is TListBox) then
begin
if TListBox(Sender).Name = TListBox(Source).Name then
Accept := False
else
Accept := true;
end;
snusmumric вне форума
Старый 28.10.2007, 03:31   #3
snusmumric
 
Регистрация: 28.10.2007
Сообщений: 3
По умолчанию

а по поводу удаления Program Manager - просто в проге когда находишь его, то в листбокс не добавляй вот и все
snusmumric вне форума
Старый 28.10.2007, 10:21   #4
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

тоже способ но мне кроме этого ещё и интересно знать как это делается... (поиск итд) я вроде всё прально написал да?
---
GAGARIN-NEW вне форума
Старый 28.10.2007, 11:39   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Поиск с удалением по ходу поиска надо начинать с конца (и кстати переменную счетчик самому не надо изменять)
Код:
for i := listbox1.items.count-1 downto 0 do
   if listbox1.items[i]='Window1' then listbox1.items[i].deleteitem;
Иначе, если будет удален хоть один пункт, цикл до конца не дойдет. Почему так? А это ты сам догадайся, важный момент.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума
Старый 28.10.2007, 12:29   #6
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

так вроде listbox1.items.count задаётся только вначале цикла ? или он будет изменятся если удалить какойто item ???
---
GAGARIN-NEW вне форума
Старый 28.10.2007, 17:27   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
или он будет изменятся если удалить какойто item ???
конечно будет, допустим у тебя 10 айтемов ты задаешь циклу условие от 0 до 9 и в одной из итераций удаляешь айтем, айтемов стало 9 (0 - 8), что будет при попытке обращения к девятому?
if listbox1.items[9]='Window1'...
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума
Старый 28.10.2007, 18:26   #8
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

ясненько... ну это легко исправить поставлю вместо этого переменную и всё =)
а по общему вопросу... Как сделать Drag&Drop с анимацией ? (чтоб когда я перекидываю было видно какой item я взял мышой) и можно ли будет Drop'нуть взятый item не в конец 2-го листбокса а в туда куда например мышкой отпущу.... (например как иконки возле пуска в 'панели быстрого запуска') ???
---
GAGARIN-NEW вне форума
Старый 28.10.2007, 18:42   #9
GAGARIN-NEW
Познаю мир
Форумчанин Подтвердите свой е-майл
 
Аватар для GAGARIN-NEW
 
Регистрация: 05.10.2007
Сообщений: 387
По умолчанию

Вот такой простой примерец я сам намутил .... изобрёл калесо
Памагите плиз ДрагДроп нормальный сделать...
Изображения
Тип файла: jpg Мегапример.JPG (11.7 Кб, 164 просмотров)
---
GAGARIN-NEW вне форума
Старый 29.10.2007, 10:54   #10
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
ясненько... ну это легко исправить поставлю вместо этого переменную и всё =)
я тебе не все объяснил, есть еще один момент (имеется ввиду если поиск не с конца)
берем тот же пример, список из 10-ти пунктов, перебираем в цикле, допустим второй[1] удаляем, при этом происходит смещение и третий элемент становится вторым, но следующая итерация цикла третья и в ней будет обрабатываться бывший четвертый, получается что элемент следующий за удаляемым не обрабатывается
Цитата:
а по общему вопросу... Как сделать Drag&Drop с анимацией ?
стандартный драг энд дроп сделать не сложно, но он без анимации, просто к курсору во время перетаскивания добавляется маленький прямоугольник (crDrag вроде называется) в справке есть примеры
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ListBox werser Помощь студентам 1 29.05.2008 22:32
ListBox Witaliy Общие вопросы Delphi 10 27.04.2008 17:15
Про ListBox AlexMori Общие вопросы Delphi 2 09.01.2008 16:51
Listbox Dexic Помощь студентам 1 24.06.2007 15:05
ListBox lin Помощь студентам 1 04.06.2007 13:46