Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.46 MB
Время: 0.039 c
2-1175511389
DelphiLexx
2007-04-02 14:56
2007.04.22
Правильно обработать OnCreate при динамическом создании формы


2-1175691056
cosinus
2007-04-04 16:50
2007.04.22
Хм...Вопрос по глобальному хуку на клавиатуру


2-1175237687
АндрейК
2007-03-30 10:54
2007.04.22
Выбор строки в TreeView


2-1175680793
Tifon
2007-04-04 13:59
2007.04.22
Радиальный градиент. Как создать в Делфи7?


15-1174765170
Sam Stone
2007-03-24 22:39
2007.04.22
Аттракцион "Невиданная жадность"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский