Главная страница
    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.45 MB
Время: 0.044 c
15-1174876447
Slider007
2007-03-26 06:34
2007.04.22
С днем рождения ! 26 марта


1-1172328976
EgorovAlex
2007-02-24 17:56
2007.04.22
Как лучше сделать межпотоковое взаимодействие: есть несколько


2-1175512529
Dmitry_177
2007-04-02 15:15
2007.04.22
отобразить все файлы находящиеся в папке


2-1175281898
Sholah_Weras
2007-03-30 23:11
2007.04.22
Высота/Ширина рисунка.


2-1175368527
Страждущий
2007-03-31 23:15
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский