Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2012, 22:09   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию Курсор в DBGRID

Нужно в переменную записать данные одной ячейки,как записать я знаю, если код разместить в DBGrid1CellClick и щелкать мышью по разным строкам,то все нормально. Но как отследить перемещение курсора в таблице. Где можно отследить событие которое передает сам курсор если прокручивать колесиком мышки?
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 14.02.2012, 22:21   #2
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Спасибо! разобрался отследить можно в DrawColumnCell
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 14.02.2012, 22:22   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но как отследить перемещение курсора в таблице.
OnAfterScroll компонента, через который получается набор данных (С которым Грид связан через DataSet)
Цитата:
отследить можно в DrawColumnCell
Как???
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.02.2012, 22:36   #4
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
OnAfterScroll компонента, через который получается набор данных (С которым Грид связан через DataSet)

Как???
Не поверишь,но отслеживает,и при прокрутке колесиком мыши записывает в переменную данные ячейки строки.
Подскажи по подробней на счет OnAfterScroll

Он у меня через QWERY связан, а там нет OnAfterScroll

Спасибо! Все нашел,Все работает.
За частые поиски был забанен во всех известных
поисковых системах!

Последний раз редактировалось Stilet; 14.02.2012 в 22:56.
Михаил Юрьевич вне форума Ответить с цитированием
Старый 14.02.2012, 22:55   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не поверишь
Поверю, только...
Я правильно понимаю - DrawColumnCell вызывается всякий раз когда требуется перерисовка? Если требуется перерисовка всех ячеек а при этом ты нагружаешь еще и получением данных с набора, то программа проходится по всем данным, которые могут быть отображены на экране. Где логика такой стратегии? Смысл перебирать все что видимо ради одной ячейки?

Хотя с другой стороны в твоих суждениях есть доля правды - AfterScroll увы не работает с роллером мышки, и поэтому я лично предложил бы следующую схему:
Код:
unit Unit1;

interface

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

type
  TDBGrid = class(DBGrids.TDBGrid)
   procedure WMVScroll(var Message: TWMMouseWheel); message WM_MouseWheel;
  end;
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Table1: TTable;
    Memo1: TMemo;
    procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin

end;

{ TDBGrid }

procedure TDBGrid.WMVScroll;
begin
 with Form1 do begin
  if Message.WheelDelta<0 then DBGrid1.DataSource.DataSet.FindNext
  else DBGrid1.DataSource.DataSet.FindPrior;
  Memo1.Lines.Add(DBGrid1.SelectedField.AsString);
  Caption:=IntToStr(Memo1.Lines.Count);
 end;
end;

end.
Надеюсь идея понятна?
Али пояснитьки?

Цитата:
Все нашел,Все работает.
Эм... Delphi XE?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.02.2012, 23:01   #6
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
AfterScroll увы не работает с роллером мышки
Работает, ща немного погоняю,но на первый взгляд все нормально
Работаю с компонентом Absolute Database на Delphi 7
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 14.02.2012, 23:12   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Работаю с компонентом Absolute Database
А-а-а... Так это нестандартка что-ли...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.02.2012, 23:20   #8
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Но в любом случае большое спасибо , дали правильное направление! А то и правда занялся бы перерисовкой
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DBGrid при запуске курсор не на первой позиции Alana БД в Delphi 4 16.04.2012 10:50
Подсветить или покрасить строку в dbgrid, над которой находится курсор Artik БД в Delphi 4 12.06.2009 20:43
уберите курсор (в конце программы верните курсор), HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 2 05.06.2009 20:10
Установить курсор в DBGrid nusik Общие вопросы Delphi 5 06.05.2009 22:14
Курсор над DBGrid. Какая колонка? Nowichok Компоненты Delphi 3 05.02.2007 16:51