Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.05.2009, 14:57
Andryha Andryha вне форума
Прохожий
 
Регистрация: 04.05.2009
Адрес: Новосибирск
Сообщения: 5
Репутация: 10
Вопрос Перемещение строк в ListBox

Народ, кому не сложно подскажите как в ListBox строки перемещать ну или местами менять (мышью вверх вниз)? Походу здесь чето Drag&Drop пахнет. Если есть такая тема скиньте ссылку плз!
Ответить с цитированием
  #2  
Старый 04.05.2009, 15:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,031
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Темы не видел, но делается все довольно просто.
1. Надо для компонента включить автоматическую поддержку Dran'n'drop.
2. Надо реализовать 2 обработчика событий. Первый - на перетаскивание над компонентом. Второй - собственно бросание.
Ответить с цитированием
  #3  
Старый 04.05.2009, 16:10
Andryha Andryha вне форума
Прохожий
 
Регистрация: 04.05.2009
Адрес: Новосибирск
Сообщения: 5
Репутация: 10
Смущение

А можно на примере? А то вроде все просто, не чето не пашет(((
Ответить с цитированием
  #4  
Старый 04.05.2009, 16:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,031
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Из моего проекта.

Код:
procedure TPLOrderForm.ListBox1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);

  procedure DrawLn(FromX, ToX, Y : Integer);
  begin
    ListBox1.Canvas.MoveTo(FromX,Y);
    ListBox1.Canvas.LineTo(ToX,Y);
  end;

var
  P : TPoint;
  R : TRect;
  Idx : Integer;
begin
  P.x := X;
  P.y := Y;
  Idx := ListBox1.ItemAtPos(P,False);
  If Idx = DrwIdx Then Exit;
  If DrwIdx > -1 Then
    Begin
      R := ListBox1.ItemRect(DrwIdx);
      ListBox1.Canvas.Pen.Color := ListBox1.Color;
      If DrwIdx < ListBox1.ItemIndex
        Then DrawLn(R.Left,R.Right,R.Top)
        Else DrawLn(R.Left,R.Right,R.Bottom);
    End;
  R := ListBox1.ItemRect(Idx);
  ListBox1.Canvas.Pen.Color := clHighlight;
  If Idx < ListBox1.ItemIndex
    Then DrawLn(R.Left,R.Right,R.Top)
    Else DrawLn(R.Left,R.Right,R.Bottom);
  DrwIdx := Idx;
  Accept := Source Is TListBox;
end;

procedure TPLOrderForm.ListBox1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  P : TPoint;
  Idx : Integer;
begin
  P.x := X;
  P.y := Y;
  Idx := ListBox1.ItemAtPos(P,False);
  If Idx >= ListBox1.Items.Count-1 Then
    Idx := ListBox1.Items.Count-1;
  ListBox1.Items.BeginUpdate;
  SwapPics(stTo, Idx);
  ListBox1.Items.EndUpdate;
  UpdateButtons;
end;
Ответить с цитированием
  #5  
Старый 08.05.2009, 16:59
Andryha Andryha вне форума
Прохожий
 
Регистрация: 04.05.2009
Адрес: Новосибирск
Сообщения: 5
Репутация: 10
По умолчанию

Как оставить тебе отзыв???)

Последний раз редактировалось Andryha, 29.05.2009 в 12:09.
Ответить с цитированием
  #6  
Старый 29.05.2009, 12:04
Andryha Andryha вне форума
Прохожий
 
Регистрация: 04.05.2009
Адрес: Новосибирск
Сообщения: 5
Репутация: 10
Вопрос

СПАСИБО!!!!!!)))) Можешь еще подсказать чтоб когда перетаскиваешь строку на listbox1, одновременно перетаскивалась строка с тем же itemindex на listbox2?? Плз!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter