Форум: "KOL";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
ВнизKOLmdvXLGrid и другие компоненты Найти похожие ветки
← →
Rusya (2007-05-27 17:23) [0]Тип 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;
← →
Vladimir Kladov (2007-05-27 17:36) [1]Это уже эпидемия. Ладно бы, новички все были. Еще раз: простая процедура <> методу. => (Sender... -> (Dummy, Sender...
← →
Rusya (2007-05-27 17:56) [2]Да нет, с этим все нормально :) я просто забыл указать.
т.е. процедура объявлена как надо.
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 последним в списке, компилится теперь и без явного указания модуля (см. выше), но вылетает при выходе все равно.
← →
Rusya (2007-05-27 18:07) [3]Т.е. такая последовательность действий:
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, полный ребилд всех проектов и т.п.
← →
Дмитрий К © (2007-05-27 18:34) [4]Как вариант решения:
function EcmListEdit1DrawCell(Sender: PObj; DC: HDC; const Rect: TRect;
ACol, ARow: Integer; DrawAction: TDrawAction;
ItemState: KOL.TDrawState): Boolean;
← →
Vladimir Kladov (2007-05-27 18:35) [5]Так в чем сложность с объявлением KOL.TDrawState? В том, что обработчик события автоматически создан? Так перенесите его пониже в объявлении типа формы, пусть Delphi больше его не мейнтейнирует, типа руками дальше. Еще можно свой тип сделать.
Самый крайний случай - поправьте TDrawState прямо в том модуле, который с KOL конфликтует, исходники же есть.
← →
Rusya (2007-05-27 18:38) [6]
> Дмитрий К © (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:41) [7]У меня к сожалению нет обоих этих компоненотов, я ими никогда не пользовался, так что смотрите сами, что там вылетает. Не могу представить, чтобы из-за этого типа, он скорее всего по размеру такой же (1 байт).
← →
Rusya (2007-05-27 18:46) [8]Всем спасибо, после повторного ребилда, в котором ребилдил пакеты в другом порядке, все встало и заработало.
← →
homm © (2007-05-27 19:51) [9]> Всем спасибо, после повторного ребилда, в котором ребилдил
> пакеты в другом порядке, все встало и заработало.
Всем! Всем! Всем! Не мучайтесь с порядком ребилдов! Заведите себе один пакет, пихайте в него все модули от других пакетов, которые испльзуете, и НЕ ПАРЬТЕСЬ БОЛЬШЕ! РЕБИЛТЬЕ ОДИН РАЗ! :)
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c