Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизНужна таблица с возможностью перемещения строк внутри драг-дропом Найти похожие ветки
← →
zinetz_victor (2007-03-29 14:05) [0]Собственно нужен контрол, показывающий список строчек (может быть в неск. колонок) - эти строчки нужно передвигать мышкой
Понадобилось вот с пару часов - пока посмотрел на стандартный TStringGrid - у него некрасивый процесс драг-дропания: после захвата строчки курсор просто меняется на "стрелку с листиком"
а в идеале хочется красиво реализовать именно перетаскивания строчки в нужное место
Куда/на что смотреть??
← →
zinetz_victor (2007-03-29 14:07) [1]да, забыл указать, что хотелось бы что-то более-менее стандартное (иначе бы использовал EasyListView да и все)
← →
Elen © (2007-03-29 14:19) [2]
> после захвата строчки курсор просто меняется на "стрелку
> с листиком"
а ты не пытался задать StringGrid1.DragCursor ?
← →
zinetz_victor (2007-03-29 15:34) [3]2Elen: этого мало - хочется, чтобы визуально все выглядело именно как перетаскивание целой строки
что-то кажеться, что просто не получится... в общем, можно и не StringGrid использовать, а к примеру ListBox (хотя с ним красивше тоже пока не получается)...
← →
Elen © (2007-03-29 15:38) [4]
> то-то кажеться, что просто не получится
Ха. Чепуха! Вот попробуй это :unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure StringGrid1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var t:string; oar,ac,ar:integer;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
Tag:=0; StringGrid1.Cursor:=crDefault;
StringGrid1.Options:=StringGrid1.Options - [goRowSelect];
StringGrid1.Options:=StringGrid1.Options + [goEditing,goAlwaysShowEditor];
//StringGrid1.Rows[StringGrid1.Tag]:=StringGrid1.Rows[ar];
//StringGrid1.Rows[ar].Text:=t;
end;
procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var i:integer;
begin
StringGrid1.MouseToCell(x,y,ac,ar);
if (oar<>ar) then begin
t:=StringGrid1.Rows[ar].Text;
StringGrid1.Rows[ar]:=StringGrid1.Rows[oar];
StringGrid1.Rows[oar].Text:=t;
StringGrid1.Row:=ar;
end else begin
end;
oar:=ar;
end;
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
StringGrid1.MouseToCell(x,y,ac,ar);
if ac=0 then begin
StringGrid1.Options:=StringGrid1.Options - [goEditing];
StringGrid1.Options:=StringGrid1.Options + [goRowSelect];
StringGrid1.Row:=ar;
StringGrid1.Tag:=ar;oar:=ar;
t:=StringGrid1.Rows[ar].Text;
StringGrid1.BeginDrag(true);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
caption:=paramstr(0);
end;
end.
← →
zinetz_victor (2007-03-29 18:33) [5]2Elen: респект :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.047 c