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

Вниз

Drag and Drop в DBGrid   Найти похожие ветки 

 
9899100   (2008-09-16 13:36) [0]

как в обработчике события OnDragDrop в DBGrid приемнике
определить над какой записью был курсор мыши
копался в методах грида
есть такой метод
MouseCoord(X,Y) возвращает строку и столбец под курсором мыши
но чего дальше то делать с этими данными немогу понять
всмысле как номер строки в гриде преобразовать в собственно запись таблицы :(
ибо он возвращает просто номер строки и столбца из тех что отображаются в данный момент но не номер записи и столбца таблицы


 
9899100   (2008-09-16 14:06) [1]

или подскажите как узнать номер записи
DBGrid1.DataSource.DataSet.RecNo
расположенной в первой строке грида??

можно сделать примерно так
gd:=DBGrid2.MouseCoord(X,Y);
Dbgrid2.DataSource.DataSet.MoveBy(TDBGrid(Sender).DataSource.DataSet.RecNo+(gd.Y-1));

но вот тут надо вместо TDBGrid(Sender).DataSource.DataSet.RecNo
поставить номер записи в первой строке грида
а вот как его узнать ?? :(


 
9899100   (2008-09-16 14:37) [2]

лююдиии ну подскажите что нить :)
хоть мысль какую
уже со стен штукатурка сыпеться


 
Ega23 ©   (2008-09-16 14:41) [3]

Любой клик мыши на гриде приводит к тому, что курсор набора данных перемещается на "кликнутую" запись. Вот её ID и запоминай.
А потом на EndDrag (вроде так, делал такое лет 6-7 назад, сейчас точно не помню) уже смотри, откуда StartDrag был вызван.


 
Vlad Oshin ©   (2008-09-16 14:49) [4]

в том то и дело, что клика при EndDrag не происходит..
если на EndDrag поставить закладку где сейчас стоим,
кликнуть программно где закончился драг,
запомнить чего надо,
вернуться на закладку..


 
Ega23 ©   (2008-09-16 14:54) [5]


> в том то и дело, что клика при EndDrag не происходит..


MouseUp происходит...  :)


 
9899100   (2008-09-16 14:57) [6]

>>Vlad Oshin
Хорошая идея :)
надо попробовать


 
9899100   (2008-09-16 15:41) [7]

Черт теперь напрочь запутался в координатах
где какие :(
жуть


 
Jeer ©   (2008-09-16 16:18) [8]


> где какие :(


Прямоугольные.
За проекцией Гаусса-Крюгера прошу на ГИС-форумы.


 
9899100   (2008-09-17 12:16) [9]

Получилось вот таким вот образом
Конечно не ахти но тем неменее :)
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   DataSource1: TDataSource;
   DBGrid1: TDBGrid;
   Table1: TTable;
   procedure DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
   procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
     Field: TField; State: TGridDrawState);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 gd:TGridCoord;
 
implementation

{$R *.dfm}

procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
Var tt:TGridCoord;
begin
tt:=TDBGrid(sender).MouseCoord(X,Y);
If (tt.X<>gd.X) or (tt.Y<>gd.Y) Then
 Begin
  gd.X:=tt.X;
  gd.Y:=tt.Y;
  TDBGRid(Sender).Repaint;
 End;
end;

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
 Field: TField; State: TGridDrawState);
Var gg:TGridCoord;
begin
gg:=TDBGrid(Sender).MouseCoord(Rect.Left+1,Rect.Top+1);
if (gg.X=gd.X) and (gg.Y=gd.Y) Then
 TDBGrid(sender).Canvas.Font.Color:=clRed;
TDBGrid(sender).DefaultDrawDataCell(Rect,Field,State);
end;



Страницы: 1 вся ветка

Текущий архив: 2008.10.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
11-1194440742
misha_shar
2007-11-07 16:05
2008.10.26
Вопрос по TabControl;


2-1221589031
tubik
2008-09-16 22:17
2008.10.26
переопределение vs. сокрытие


10-1150270549
Grant
2006-06-14 11:35
2008.10.26
Работа с Excel


2-1221833104
Alexei
2008-09-19 18:05
2008.10.26
Запуск приложения


2-1221643925
Андрей_1
2008-09-17 13:32
2008.10.26
Нажатие Bitbtn с клавиатуры