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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 18:12   #1
Goodwind32
 
Регистрация: 14.06.2012
Сообщений: 3
Вопрос OnGetCellParams

Что-то не присваивается обработчик события OnGetCellParams для грида TDBGridEh. Делаю как обычно:


Код:
Grid:=TDBGridEh.Create(TabSheet);
Grid.OnGetCellParams:=dbgELinesGetCellParams;
...
procedure TfmMain.dbgELinesGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin
...
end;
При компиляции выдает:
[Error] uMain.pas(221): Incompatible types: 'DBGridEh.TGridDrawState' and 'uMain.TGridDrawState'

Весь код в одном юните, в классе TfmMain
Goodwind32 вне форума Ответить с цитированием
Старый 14.06.2012, 19:48   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

не использовать имена типов ('uMain.TGridDrawState') совпадающие с ранее объявленными ('DBGridEh.TGridDrawState') !

или же использовать полное имя DBGridEh.TGridDrawState
Код:
procedure TfmMain.dbgELinesGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: DBGridEh.TGridDrawState);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 15.06.2012, 15:29   #3
Goodwind32
 
Регистрация: 14.06.2012
Сообщений: 3
По умолчанию Уточните.

Прошу прощения, но я все-таки не понял как надо написать.
Так
procedure dbgELinesGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: DbGridEH.TGridDrawState);
написать нельзя,
и так тоже
procedure dbgELinesGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: dbgELines.TGridDrawState);

и в uMain я не объявлял тип uMain.TGridDrawState. Откуда он берется?
И как вообще нужно делать, если у меня на форме кучка динамических гридов, у каждого из которых один и тот же обработчик события OnGetCellParams?
Goodwind32 вне форума Ответить с цитированием
Старый 15.06.2012, 19:15   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
[Error] uMain.pas(221): Incompatible types: 'DBGridEh.TGridDrawState' and 'uMain.TGridDrawState'
DBGridEh.TGridDrawState
DBGridEh имя модуля(unit-a) в котором найдено объявление типа TGridDrawState
uMain.TGridDrawState аналогично.
Цитата:
и в uMain я не объявлял тип uMain.TGridDrawState
В uMain ты объявил TGridDrawState. Зачем?

Цитата:
procedure dbgELinesGetCellParams(Sender: TObject; Column: TColumnEh;
AFont: TFont; var Background: TColor; State: DbGridEH.TGridDrawState);
написать нельзя,
И что он (компилятор) говорит?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 16.06.2012, 20:23   #5
Goodwind32
 
Регистрация: 14.06.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
DBGridEh.TGridDrawState
DBGridEh имя модуля(unit-a) в котором найдено объявление типа TGridDrawState
uMain.TGridDrawState аналогично.

В uMain ты объявил TGridDrawState. Зачем?


И что он (компилятор) говорит?
Если объявлением считается "Type TGridDrawState = ...." , то не объявлял я ничего такого!

Вот мой модуль:
Код:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, ExtCtrls, ActnList, GridsEh, DBGridEh,
  StdCtrls, Buttons, DB, ADODB, Grids, DBGrids;

type
  TfmMain = class(TForm)
   ....
  контролы
  контролы
  контролы
  .....
   procedure dbgELinesGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: DBGridEh.TGridDrawState);
  private
    { Private declarations }
    procedure UserListRefresh;
    function Sign:integer;
  public
    { Public declarations }
    procedure RefreshEDocList;
    procedure RefreshADocList;
    procedure RefreshELines(i:integer);
    procedure LoadEDoc;
    procedure LoadADoc;
  end;

var
  fmMain: TfmMain;

implementation
....
всё...
в такой постановке компилятор кричит следующее:
[Error] uMain.pas(54): Undeclared identifier: 'TGridDrawState'

ругается на строку, выделенную курсивом.
Goodwind32 вне форума Ответить с цитированием
Старый 17.06.2012, 09:11   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

А тип TGridDrawState объявлен в модуле GridsEh, а не в DBGridEh.
Прик вне форума Ответить с цитированием
Ответ


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