Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.045 c
15-1194552152
@!!ex
2007-11-08 23:02
2007.12.09
Политики тупят...


10-1141146183
msgipss
2006-02-28 20:03
2007.12.09
Возможно ли вызвать процедуру открытого документа Excel


11-1179414957
Vladimir Kladov
2007-05-17 19:15
2007.12.09
Версия 2.61


3-1185537092
Nemec
2007-07-27 15:51
2007.12.09
компоненты TIBQuery и IBUpdateSQL1


6-1175622907
Tiberius
2007-04-03 21:55
2007.12.09
Где найти ieConst.pas и IEDocHostUIHandler.pas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский