Форум: "Начинающим";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c