Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.22;
Скачать: CL | DM;

Вниз

Нужна таблица с возможностью перемещения строк внутри драг-дропом   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
15-1174899957
db2admin
2007-03-26 13:05
2007.04.22
Где достать информацию по IntelliJ Idea на русском?


15-1175157168
DVM
2007-03-29 12:32
2007.04.22
Убрать dll внутрь exe


1-1172611883
SamProf
2007-02-28 00:31
2007.04.22
Помогите!!! Error - Не был произведен вызов CoInitialize


15-1174896516
Нулевой
2007-03-26 12:08
2007.04.22
Кто такой?


15-1174786694
Марк
2007-03-25 05:38
2007.04.22
У кого-нибудь есть флеш-видак?