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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 20:28   #1
RikkiTan
Пользователь
 
Аватар для RikkiTan
 
Регистрация: 15.11.2011
Сообщений: 62
По умолчанию Делфи. Перемещение по базе данных

Доброго времени суток. Есть Dbgrid, есть кнопка.
Код кнопки:
Код:
Datamodul.ANomerTable.Prior;
Возник вопрос, как сделать так, чтобы при нажатии и не отпускании кнопки мыши происходило постоянное перемещение, как у dbnavigator. Имею ввиду, чтобы не нажимать постоянно и переходить только на одну запись.Помогите, пожалуйста.

Последний раз редактировалось RikkiTan; 03.06.2012 в 20:33.
RikkiTan вне форума Ответить с цитированием
Старый 03.06.2012, 21:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если у кнопки есть событие OnMouseDown - опиши в нем этот переход.
Если нет... Ну попробуй возьми другой компонент, похожий на кнопку, но с таким событием.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2012, 21:29   #3
RikkiTan
Пользователь
 
Аватар для RikkiTan
 
Регистрация: 15.11.2011
Сообщений: 62
По умолчанию

У кнопки есть такое событие. Пробовал писать туда, все равно переходит только на одну запись. Думаю, завтра попробовать сделать с таймером. Спасибо за помощь
RikkiTan вне форума Ответить с цитированием
Старый 03.06.2012, 21:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Таймер не поможет. ИМХО.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2012, 22:26   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По OnMouseDown запускать поток, в котором в цикле с заданной задержкой перемещать указатель записи. По По OnMouseUp завершать работу потока.

Еще где-то видел кнопки, которые сами подобное реализуют. Если не ошибаюсь в RX, гляну на работе, если там, то отпишусь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.06.2012, 22:33   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
По OnMouseDown запускать поток
ИМХО, из пушки по воробьям.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2012, 23:06   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Таймер не поможет ...
из пушки по воробьям
А какие еще идеи без привлечения сторонних компонентов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.06.2012, 23:51   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Идеи? Ну примерно так:
Код:
unit Unit1;

interface

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

type

  TForm1 = class(TForm)
    Button1: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Table1: TTable;
    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  tag:=1;
  while (tag=1)and(Table1.RecNo>1) do begin
   Table1.Prior;
   Sleep(100);
   Application.ProcessMessages;
  end;
end;



procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  tag:=0;
end;

end.
Хотя я уверен что на самом деле автору это не нужно, и врядли это будет удобно.
Ведь есть кнопки скролла у Грида - чем не перемещение?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2012, 00:14   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да, элегантно. Плюсануть жаль не могу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.06.2012, 11:31   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Да, элегантно
Но идея твоя была
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перемещение базы данных Vladimir Mackarow БД в Delphi 1 16.04.2011 21:19
Делфи... перемещение объектов по форме.. AnyutKa Помощь студентам 6 29.01.2011 21:47
Как настроить запросы к базе данныз в делфи? FACE OFF Помощь студентам 3 06.12.2010 15:43
Перемещение данных Мария100684 Microsoft Office Access 6 26.09.2008 03:45