Скролинг в Dbgrid

Тема в разделе "Delphi - Базы данных", создана пользователем dzhserv, 25 дек 2006.

  1. dzhserv

    dzhserv Гость

    Подскажите пожалуйста!
    Как можно сделать скролинг в стандартном DBGrid-е :p
     
  2. Barmutik

    Barmutik Гость

    Скролинг в DBGrid присутствует стандартно.. чем он Вас не устраивает?
     
  3. dzhserv

    dzhserv Гость

    он не работает

    вернее он не прокручивает когда много записей
     
  4. Barmutik

    Barmutik Гость

    Он прокручивает .. только имеет три состояния всего... нчало.. середина и конец прокрутки...

    Такая проблема есть.. используйте другой компонент грида ..

    Надеюсь я Вас правильно понял ...
     
  5. dzhserv

    dzhserv Гость

    Спасибо
     
  6. DZX

    DZX Гость

    В delphi 10 этот баг исправлен.
     
  7. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    Я обычно сам загоняю таблицу в StringGrid - там такого бага нету.
     
  8. Barmutik

    Barmutik Гость

    Хороший вариант для 100.000 записей в курсоре...
     
  9. dzhserv

    dzhserv Гость

    А если их больше 100.000?

    я уже много разных компонентов Grid -ов перепробовал, но ни у одного этой функции нет.
    (Для D-7)
     
  10. DZX

    DZX Гость

    Если их даже и 100.000, то скорость работы такой программы будет ужасно медленная. Не надо придумывать колесо. И переходите на 10 версию, не понимаю упорства фанатов 7-ой
    версии, да хороша, но всеравно время идет и баги 7-ой версии Борланд править не
    собирается. Больше вероятнось , что он исправит баги 10-Й :)
     
  11. dzhserv

    dzhserv Гость

    Это совершенно верно, в 7-ке удобный интерфейс...
     
  12. Barmutik

    Barmutik Гость

    Для: DZX

    7-ка общепризнанная самая удачная версия Дельфи.. а 2006 это в общем-то жалкие попытки Борлянда вскочить в вагончик .NET технологии...

    Так что смысле переходить на версию выше 7-ой нет никакого...

    А насчёт 100.000 записей я вообще-то имел ввиду в кавычках.... но как-то никто и не понял этого...

    Если Вам надо свой грид .. используйте виртуальные контролы и в нём уже отображайте сами содержимое курсора...
     
  13. zubr

    zubr Гость

    Вообще то вопрос решается достаточно просто, вот один из вариантов:
    Код (Text):
    unit Unit1;

    interface

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

    type
    TForm1 = class(TForm)
    Table1: TTable;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    private
    { Private declarations }
    procedure MouseWheelHandler(var Message: TMessage);override;
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.MouseWheelHandler(var Message: TMessage);
    var
    p:TPoint;
    begin
    GetCursorPos(p);
    If WindowFromPoint(p)=DBGrid1.Handle then
    begin
    If Message.WParam<0 then
    DBGrid1.Perform(WM_VSCROLL, SB_LINEDOWN, 0)
    else
    DBGrid1.Perform(WM_VSCROLL, SB_LINEUP, 0);
    end;
    end;

    end.
    Собирал в Delphi6.
     
  14. dzhserv

    dzhserv Гость

    Для: zubr

    Все работает...
    Большое спасибо за помощь со скролингом в DBGrid-е :( :lol:


    Я проставляюсь пивом по URL [​IMG]
     
  15. zubr

    zubr Гость

    Таким же образом можно сделать и горизонтальный скролл. Определяем положение курсора - если в полосе горизонтальной прокрутки посылаем WM_HSCROLL. Гораздо удобнее, чем мышью щелкать, имхо.
     
Загрузка...
Похожие Темы - Скролинг Dbgrid
  1. Gelergo
    Ответов:
    1
    Просмотров:
    1.764
  2. Ягодка
    Ответов:
    1
    Просмотров:
    2.340
  3. novachok
    Ответов:
    3
    Просмотров:
    2.728
  4. NickProstoNick
    Ответов:
    3
    Просмотров:
    3.406
  5. V88
    Ответов:
    0
    Просмотров:
    4.778

Поделиться этой страницей