Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Курс видеоуроков программирования и крэкерства 5.0
(актуальность: январь 2017)
Свежие инструменты, новые видеоуроки!

  • 300+ видеоуроков
  • 800 инструментов
  • 80 свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Решение проблемы передачи фокуса TDBGrid

- Что для геймера Жизнь?
- Два компакта с "Half-life"!

В данном документе содержится решение проблемы невозможности получения DBGrid-ом фокуса после щелчка на каком-либо элементе управления родительской формы, в то время, как DBGrid находится на ее дочерней MDI-форме.

Относится ко всем версиям Delphi

Очевидно, DBGrid имеет некоторые проблемы с управлением фокусом, если он находится на дочерней MDI-форме. Эта проблема решена в приведенном ниже наследнике TDBGrid, в котором обрабатываются мышиные сообщения и выясняется когда фокус должен быть передан сетке. Наследник создан в виде компонента, который легко устанавливается в Палитру Компонентов. Примечание: код адаптирован для всех версий Delphi. Проблемы могут быть в Delphi 2 и 3, если вы забудете заменить устаревшие в этих версиях модули "winprocs" и "wintypes" на "windows."


 unit FixedDBGrid;
 
 interface
 
 uses
 
   Winprocs, wintypes, Messages, SysUtils, Classes, Graphics,
   Controls, Forms, Dialogs, Grids, DBGrids;
 
 type
 
   TFixedDBGrid = class(TDBGrid)
   private
     { Private declarations }
   protected
     { Protected declarations }
   public
     { Public declarations }
     procedure WMRButtonDown(var Message: TWMRButtonDown); message
       WM_RBUTTONDOWN;
     procedure WMLButtonDown(var Message: TWMLButtonDown); message
       WM_LBUTTONDOWN;
   published
     { Published declarations }
   end;
 
 procedure Register;
 
 implementation
 
 procedure TFixedDBGrid.WMRButtonDown(var Message: TWMRButtonDown);
 begin
 
   winprocs.SetFocus(handle); {помните, что winprocs относится только к Delphi 1!}
   inherited;
 end;
 
 procedure TFixedDBGrid.WMLButtonDown(var Message: TWMLButtonDown);
 begin
 
   winprocs.SetFocus(handle); {помните, что winprocs относится только к Delphi 1!}
   inherited;
 end;
 
 procedure Register;
 begin
 
   RegisterComponents('Samples', [TFixedDBGrid]);
 end;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS