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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.046 c
15-1235221405
Статистика
2009-02-21 16:03
2009.04.19
График популярности браузеров


2-1235711956
nastya
2009-02-27 08:19
2009.04.19
Злополучная лямда


3-1213711617
Георгий
2008-06-17 18:06
2009.04.19
dbgrid - выделить запись которая находится под курсором мыши


2-1235708177
sco
2009-02-27 07:16
2009.04.19
TImage и прорисовка (не про DoubleBuffered)


6-1202301817
dreamse
2008-02-06 15:43
2009.04.19
Вопрос про испорченую кодировку при скачивании файла по Http





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