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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2009, 12:46   #1
Pavka
 
Регистрация: 04.11.2009
Сообщений: 4
По умолчанию Событие OnDrawColumnCell для динамически созданного грида

Здравствуйте! Подскажите новичку, пожалуйста, как для динамически созданного DBGrid вызвать событие OnDrawColumnCell
Pavka вне форума Ответить с цитированием
Старый 19.11.2009, 13:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Всмысле назначить?
Ну как обычно:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ...
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    ...
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGrid1.OnDrawColumnCell:=DBGrid1DrawColumnCell;

end;


procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
//
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2009, 13:37   #3
Pavka
 
Регистрация: 04.11.2009
Сообщений: 4
По умолчанию

У меня так не получается на стоке выделенной жирным цветом выдает ошибку "Неописанный идентификатор: 'DBGrd1DrawColumnCell", что я делаю не так как надо?
Вот часть моего кода:
Код:
unit Unit1;

interface

uses
  Windows, ... ;

type
  TForm1 = class(TForm)
    ...
    
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure EnterData;
  end;

var
  Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.EnterData;
var
  GrBox1: TGroupBox;
  DBGrd1: TDBGrid;

begin
  ...
  
  GrBox1 := TGroupBox.Create(Panel1);
  GrBox1.Parent := Panel1;
  ...

  DBGrd1 := TDBGrid.Create(GrBox1);
  DBGrd1.Parent := GrBox1;
  ...

  DBGrd1.OnDrawColumnCell := DBGrd1DrawColumnCell;
end;

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
//
end;

end.

Последний раз редактировалось Stilet; 19.11.2009 в 13:41.
Pavka вне форума Ответить с цитированием
Старый 19.11.2009, 13:40   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Чтобы вам было понятнее, дополню коллегу Stilet.
Процедуры обработки событий для будущего компонента, который вы создадите динамически, вам нужно описать заранее.
Самый простой способ (для данного конкретного случая) - кинуть на форму грид и обычным способом создать для него все нужные обработчики.
Потом грид можно удалить. Но не забудьте описать его в самом начале модуля, после uses, например так:
Код:
type
TMyDBGrid = class(TDBGrid)
И соответствующим образом подправить в обработчиках имя грида.

Последний раз редактировалось mihali4; 19.11.2009 в 13:46.
mihali4 вне форума Ответить с цитированием
Старый 19.11.2009, 14:00   #5
Pavka
 
Регистрация: 04.11.2009
Сообщений: 4
По умолчанию

Благодарю Вас сердечно, таким образом получилось
Ну а любознательности ради как это сделать не кидая грида на форму?
Pavka вне форума Ответить с цитированием
Старый 19.11.2009, 14:04   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
как это сделать не кидая грида на форму?
Так просто проще...
Иначе придется все процедуры прописывать ручками полностью - и в объявлениях, и собственно сами процедуры.
mihali4 вне форума Ответить с цитированием
Старый 19.11.2009, 14:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну например так:
Код:
var DBGrid1:TDBGrid;
begin
 DBGrid1:= TDBGrid.Create(self);
 DBGrid1.Parent:=self;
 DBGrid1.OnDrawColumnCell:=DBGrid1DrawColumnCell;
 DBGrid1.Show;
end;
Учитывая что к нему еще DataSet нужно прицеплять.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.11.2009, 14:15   #8
Pavka
 
Регистрация: 04.11.2009
Сообщений: 4
По умолчанию

Ну в общем немного уяснил
Мой вопрос исчерпался еще раз всем спасибо
Pavka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отловить Events динамически созданного компонента? W0LF Общие вопросы Delphi 2 06.11.2009 20:35
Как создать обработчик событий для динамически созданного объекта Лукманов Александр Общие вопросы Delphi 1 22.03.2009 22:05
Событие для динамически созданной Button Dogmat Помощь студентам 8 24.07.2008 12:44
Поиск динамически созданного компонента GAGARIN-NEW Общие вопросы Delphi 2 30.01.2008 17:21
Поиск динамически созданного компонента GAGARIN-NEW Компоненты Delphi 2 16.12.2007 17:07