![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
KOLmdvXLGrid и другие компоненты
Rusya © (2007-05-27 17:23:00)Тип TDrawState, объявленный в KOLmdvXLGrid.pas, конфликтует с одноименным типом из KOL.pas. Все бы ничего, но некоторые компоненты отказываются работать совместно с mdvXLGrid из-за того, что они также используют тип TDrawState, но из KOL.pas. Например, KOLecmListEdit. Т.е. у меня например не удается заставить работать ecmListEdit и mdvXLGrid в одном проекте. Как обойти?
p.s. явное указание типа также не помогает:
function List1DrawCell(Sender: PObj; DC: HDC; const Rect: TRect; ACol, ARow: Integer; DrawAction: TDrawAction; ItemState: KOL.TDrawState): Boolean;- программа компилится, но при выходе рушится с исключением вfunction TControl.CallDefWndProc(var Msg: TMsg): Integer;
homm (2007-05-27 19:51:00) [1]> Всем спасибо, после повторного ребилда, в котором ребилдил
> пакеты в другом порядке, все встало и заработало.
Всем! Всем! Всем! Не мучайтесь с порядком ребилдов! Заведите себе один пакет, пихайте в него все модули от других пакетов, которые испльзуете, и НЕ ПАРЬТЕСЬ БОЛЬШЕ! РЕБИЛТЬЕ ОДИН РАЗ! :)
Rusya (2007-05-27 18:46:00) [2]Всем спасибо, после повторного ребилда, в котором ребилдил пакеты в другом порядке, все встало и заработало.
Vladimir Kladov (2007-05-27 18:41:00) [3]У меня к сожалению нет обоих этих компоненотов, я ими никогда не пользовался, так что смотрите сами, что там вылетает. Не могу представить, чтобы из-за этого типа, он скорее всего по размеру такой же (1 байт).
Rusya (2007-05-27 18:38:00) [4]
> Дмитрий К © (27.05.07 18:34) [4]
> Как вариант решения:function EcmListEdit1DrawCell(Sender:
> PObj; DC: HDC; const Rect: TRect; ACol, ARow: Integer;
> DrawAction: TDrawAction; ItemState: KOL.TDrawState):
> Boolean;
Я ж говорю, пробовал так (смотрите первый пост), но программа почему-то при выходе генерирует исключение. Правильнее всего, конечно, изменить в модуле mdvXLGrid имя типа, чтоб не конфликтовало :(
Vladimir Kladov (2007-05-27 18:35:00) [5]Так в чем сложность с объявлением KOL.TDrawState? В том, что обработчик события автоматически создан? Так перенесите его пониже в объявлении типа формы, пусть Delphi больше его не мейнтейнирует, типа руками дальше. Еще можно свой тип сделать.
Самый крайний случай - поправьте TDrawState прямо в том модуле, который с KOL конфликтует, исходники же есть.
Дмитрий К (2007-05-27 18:34:00) [6]Как вариант решения:
function EcmListEdit1DrawCell(Sender: PObj; DC: HDC; const Rect: TRect;
ACol, ARow: Integer; DrawAction: TDrawAction;
ItemState: KOL.TDrawState): Boolean;
Rusya (2007-05-27 18:07:00) [7]Т.е. такая последовательность действий:
1) пустой МСК-проект. Кидаем на форму ecmListEdit и mdvXLGrid.
2) назначаем обработчик OnDrawCell для ecmListEdit, получается такой обработчик:
function TForm1.EcmListEdit1DrawCell(Sender: PObj; DC: HDC;
const Rect: TRect; ACol, ARow: Integer; DrawAction: TDrawAction;
ItemState: TDrawState): Boolean;
begin
//
end;
3) Пытаемся скомпилиовать проект.
Получаем ошибки:
[Error] Unit1_1.inc(35): Incompatible types: 'KOLEcmListEdit.TDrawState' and 'Unit1.TDrawState'
[Fatal Error] KOLProject.dpr(6): Could not compile used unit 'Unit1.pas'
Изменение порядка модулей не приводит ни к чему, или же все компилируется, но падает при выходе из программы. KOL v2.62, полный ребилд всех проектов и т.п.
Rusya (2007-05-27 17:56:00) [8]Да нет, с этим все нормально :) я просто забыл указать.
т.е. процедура объявлена как надо.
TForm1 = class(TForm)
.....
function ListDrawCell(Sender: PObj; DC: HDC; const Rect: TRect; ACol, ARow: Integer; DrawAction: TDrawAction; ItemState: TDrawState): Boolean;
....
end;
....
function TForm1.List1DrawCell(Sender: PObj; DC: HDC; const Rect: TRect;
ACol, ARow: Integer; DrawAction: TDrawAction;
ItemState: TDrawState): Boolean;
begin
//
end;
Проблема в том, что в проекте используется mdvXLGrid, в котором объявлен TDrawState. И компилятор ругается, что типы несоответствуют: объявленный в подключенном модуле KOLmdvXLGrid.pas и используемый EcmListEdit из KOL.pas.
Пробовал менять модули в списке uses местами, сделал модуль KOL последним в списке, компилится теперь и без явного указания модуля (см. выше), но вылетает при выходе все равно.
Vladimir Kladov (2007-05-27 17:36:00) [9]Это уже эпидемия. Ладно бы, новички все были. Еще раз: простая процедура <> методу. => (Sender... -> (Dummy, Sender...