Главная страница
    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.047 c
2-1175696435
Anry
2007-04-04 18:20
2007.04.22
Quickreport и промежуточный результат после полосы Detail


15-1175075405
IMHO
2007-03-28 13:50
2007.04.22
Уроки Юрия Зотова


3-1170161987
Megabyte
2007-01-30 15:59
2007.04.22
Экспорт в Эксель поля типа Blob


2-1175755840
Мимопроходящий
2007-04-05 10:50
2007.04.22
Преобразование строки в вид %EA%BD...


1-1172477752
Kav
2007-02-26 11:15
2007.04.22
Delphi 10 и Delphi 7 совместимость





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский