Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ListView и его баги при перетаскивании ) 
V
    Опции темы
Ak47black
  Дата 19.1.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Здравствуйте.
Помигите разобратся с ListView'ом), ну нехочет он у меня правильно работать.  smile 
Пытаюсь сделать перетаскивание внутри компонента
Есть такой вот код
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ImgList;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    ImageList1: TImageList;
    procedure ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  Item: TListItem;
  Rect: TRect;
begin
  Accept:= True;
  Item:= ListView1.GetItemAt(X, Y);
  if Item <> nil then
  begin
    Rect:= Item.DisplayRect(drBounds);
    ListView1.Canvas.Brush.Color:= clWhite;
    ListView1.Refresh;
    ListView1.Canvas.Rectangle(Rect.Right, Rect.Top, Rect.Right+2, Rect.Bottom);
    ListView1.Canvas.Rectangle(Rect.Right-2, Rect.Top, Rect.Right+4, Rect.Top+1);
    ListView1.Canvas.Rectangle(Rect.Right-1, Rect.Top+1, Rect.Right+3, Rect.Top+2);
    ListView1.Canvas.Rectangle(Rect.Right-1, Rect.Bottom-2, Rect.Right+3, Rect.Bottom-1);
    ListView1.Canvas.Rectangle(Rect.Right-2, Rect.Bottom-1, Rect.Right+4, Rect.Bottom);
  end;
end;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  Rect: TRect;
begin
  Rect:= Item.DisplayRect(drIcon);
  case Item.Index of
    0: ListView1.Canvas.Brush.Color:= clBlack;
    1: ListView1.Canvas.Brush.Color:= clRed;
    2: ListView1.Canvas.Brush.Color:= clLime;
  end;
  ListView1.Canvas.FillRect(Rect);
  DefaultDraw:= False;
end;

procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  ListView1.Refresh;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListView1.DoubleBuffered:= True;
end;

end.

Вопрос - почему при перетаскивании первого элемента видно 
user posted image
Но при перетачкивании второго элемента видно
user posted image
Тоесть уже без фона, но почему? Какая тут закономерность?

Это сообщение отредактировал(а) Ak47black - 19.1.2008, 17:17

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  NonWorking.rar 5,98 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.