Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1221589031
tubik
2008-09-16 22:17
2008.10.26
переопределение vs. сокрытие


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


2-1221651678
zabgar
2008-09-17 15:41
2008.10.26
Как работать с Access


15-1220458307
@!!ex
2008-09-03 20:11
2008.10.26
Началось...


15-1220416603
MdbPero
2008-09-03 08:36
2008.10.26
Экспорт схемы в Oracle





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