31416
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Люди подскажите как в компоненте CheckListBox сделать возможность менять элементы местами. Т.е например - я захватываю один элемент мышкой - перетаскиваю на другой и они (элементы) меняются местами. Добавлено: вроде разобрался - procedure TForm1.CheckListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var t:string; begin j := CheckListBox1.ItemAtPos(Point(x, y), false); t:=CheckListBox1.Items.Strings[j]; CheckListBox1.Items.Strings[j]:=CheckListBox1.Items.Strings[idx]; CheckListBox1.Items.Strings[idx]:=t; end; procedure TForm1.CheckListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin idx := CheckListBox1.ItemAtPos(Point(x, y), true); CheckListBox1.BeginDrag(true); end; procedure TForm1.CheckListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := Source = CheckListBox1; DragJ := CheckListBox1.ItemAtPos(Point(x, y), false); CheckListBox1.ItemIndex := DragJ; end; но возник другой вопрос - как сделать чтобы при перетаскивании - название пункта выбранного меню перетаскивалось вслед за мышью (там рисуется просто маленький белый квадратик - хотелось бы более информативно....) |