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

Вниз

Посоветуйте компонент типа Плейлиста   Найти похожие ветки 

 
DevilDevil   (2009-02-16 09:32) [0]

Здравствуйте, уважаемые форумчане.

Появилась необходимость организовать список по принципу плейлиста. С перемежением элементов, автоматическим скроллингом листа, переименованием элементов.

Текущая "реализация" основана на TListView... но мне она не нравится. Перемещение приходится реализовывать через Drag&Drop, скроллинг осуществлять вручную(не реализовано), как-то перерисовывать канву... Перерисовывается всё стрёмно... И лень с этим париться и время очень поджимает.

Помогите, пожалуйста. Наверняка сталкивался кто с таким вопросом, дайте линк на компонент.

Заранее спасибо


 
clickmaker ©   (2009-02-16 12:03) [1]

> Перемещение приходится реализовывать через Drag&Drop

а кто мешает по-другому сделать?


> скроллинг осуществлять вручную

а не вручную - это как?


 
DevilDevil ©   (2009-02-16 13:42) [2]

>а кто мешает по-другому сделать?

можно и подругому.
У меня даже есть опыт создания компонент в принципе и таблиц с перемещаемыми строками/столбцами в частности. Только нет требуемого времени (и желания)... в то время, как готовое должно существовать.

Вопрос открыт.


 
clickmaker ©   (2009-02-16 13:48) [3]

> Перерисовывается всё стрёмно

а что именно там должно перерисовываться?


 
DevilDevil ©   (2009-02-16 13:55) [4]

> clickmaker ©   (16.02.09 13:48) [3]
Александр, при всём уважении... вы теряете время: и своё и моё.

Необходим компонентик типа TListBox(TListView), обладающий возможностью перемещения элементов мышью.


 
clickmaker ©   (2009-02-16 13:59) [5]

на torry.ru смотрел?
честно говоря, не понимаю, какие трудности с перемещением... совсем не обязательно делать это через drag-drop
Но я бы делал именно так. Хотя бы потому, что файл извне можно перетащить в любую позицию


 
DevilDevil ©   (2009-02-16 14:27) [6]

на torry искал - ничего не нашёл; может слишком плохо искал.

>Хотя бы потому, что файл извне можно перетащить в любую позицию
ааа, нет, такой возможности не надо. Просто перемещение элементов внутри списка. И, желательно, с возможностью переименования.

>честно говоря, не понимаю, какие трудности с перемещением...
2 сложности. Во-первых, нужно прорисовывать предполагаемое место, куда "упадёт" перемещаемый элемент. В TListView это делается некрасиво, с какими-то "артефактами". Писать свою перерисовку - это как писать свой компонент; а времени нет.
Вторая сложность - скроллинг. Когда хватаешь элемент и тащешь его к верхнему/нижнему краю, компонент должен автоматически скроллироваться. Этот момент сложно запрограммировать. Если хотите, можете описать ваше решение - я опишу предстоящие проблемы


 
antonn ©   (2009-02-16 22:56) [7]


> clickmaker ©   (16.02.09 13:59) [5]
>
> на torry.ru смотрел?
> честно говоря, не понимаю, какие трудности с перемещением.
> .. совсем не обязательно делать это через drag-drop
> Но я бы делал именно так.

D&d подразумевает не "реалтайм" перемещение? Пользователю нравится когда все плавно и, главное, получается сразу, потому плейлистов больше "как у винампа", здесь d&d не подходит. Переместить один элемент наверное не трудно, переместить массив выделеных элементов - наверное труднее. Плюс у ПЛ нужно выделять текущий проигрываемый трек и светить время справа (как минимум требуется от нормального ПЛ). Это не сложно, но время.


 
DevilDevil ©   (2009-02-17 08:51) [8]

Необходимости в проигрывании музыки, отображении времени и перемещении нескольких пунктов - нет. Есть список, необходимо перемещать (по одному) его элементы.


 
test ©   (2009-02-17 08:54) [9]

DevilDevil ©   (17.02.09 08:51) [8]
А ВинАмп чем не угодил?


 
DevilDevil ©   (2009-02-17 09:05) [10]

>test ©   (17.02.09 08:54) [9]
прочитайте хотя бы пару постов ветки. И вообще почаще так делайте.


 
Эстет   (2009-02-17 09:09) [11]


> DevilDevil ©   (16.02.09 14:27) [6]

Какие сложности-то? Вот когда-то делал:
procedure Tfrm_Stickers.lb_BusinessDataDragDrop(Sender, Source: TObject; X, Y: Integer);
var
 NuPos: Integer;
begin
 with Sender as TRzEditListBox do begin
   if SelectedItem() = "" then Exit;
   NuPos := ItemAtPos(Point(X, Y), False);
   if NuPos >= Items.Count - 1 then
     NuPos := Items.Count - 1;
   Items.Move(ItemIndex, NuPos);
   ItemIndex := NuPos;
 end;
end;

procedure Tfrm_Stickers.lb_BusinessDataDragOver(Sender, Source: TObject; X, Y: Integer;
           State: TDragState; var Accept: Boolean);
var
 NewIt: Integer;
begin
 Accept := (TRzEditListBox(Sender).ItemAtPos(Point(X, Y), False) >= 0);
 if Accept then begin
   with Sender as TRzEditListBox do begin
     HideEditor(False);
     NewIt := ItemAtPos(Point(X, Y), True);
     if NewIt = -1 then
       Exit;
     if NewIt <> CurrentItemInDrag then begin
       CurrentItemInDrag := NewIt;
       lb_BusinessDataDragDrop(Sender, Source, X, Y);
     end;
     if y > Height - ItemHeight then begin
       TopIndex := TopIndex + 1;
     end
     else begin
       if y  < ItemHeight then begin
         TopIndex := TopIndex - 1;
       end;
     end;
   end;
 end;
end;


 
DevilDevil ©   (2009-02-17 09:13) [12]

а где скролинг ?

P.S. не подкините линк на Rz-компоненты ?


 
Эстет   (2009-02-17 09:24) [13]


> DevilDevil ©   (17.02.09 09:13) [12]
> а где скролинг ?

Вот.
    if y > Height - ItemHeight then begin
      TopIndex := TopIndex + 1;
    end
    else begin
      if y  < ItemHeight then begin
        TopIndex := TopIndex - 1;
      end;
    end;


> DevilDevil ©   (17.02.09 09:13) [12]
> не подкините линк на Rz-компоненты ?

Ну, ты батенька... Тебе мало в рот положить, тебе еще и разжевать надо.


 
Эстет   (2009-02-17 09:47) [14]

Rz-компоненты - Raize Components - www.raize.com/DevTools/RzComps/


 
DevilDevil ©   (2009-02-17 13:15) [15]

> Эстет

ОЧЕНЬ большое спасибо! То, что нужно!



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

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

Наверх




Память: 0.51 MB
Время: 0.02 c
2-1234955716
b@v
2009-02-18 14:15
2009.04.19
Как узнать имя каталога


10-1155558493
misha_gr
2006-08-14 16:28
2009.04.19
Интеграция приложения в MS Outlook


2-1236162484
пикассо
2009-03-04 13:28
2009.04.19
Ошибка ADO?


15-1234857516
БарЛог
2009-02-17 10:58
2009.04.19
Write in C


15-1235123003
Andy BitOff
2009-02-20 12:43
2009.04.19
Process Explorer и настройки