Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.07;
Скачать: CL | DM;

Вниз

Чем вызвана ошибка Cannot assign a TFont to a TFont...   Найти похожие ветки 

 
Voyager_XX   (2003-06-23 19:55) [0]

Дело в следующем.....

программа грузит длл с формой, форма вызывается, при наведении курсора на элементы у которых есть хинт, через некоторое время, приблизительно когда должен бы появиться хинт, выдается экзепшн
Cannot assign a TFont to a TFont. Мастера нужна помощь....где грабли...


 
Palladin ©   (2003-06-23 19:57) [1]

TFont в dll, он понимаешь совсем другой, не такой как TFont в приложении...


 
Voyager_XX   (2003-06-23 20:05) [2]

я понимаю, но убрал все что может быть завязано на TFont,

форма пустая на ней кнопка с хинтом....наводишь на кноку и приехали....(это я уже новую длл слепил полностью пустую),
ни передаю ни присваиваю нигде ....все по умолчанию...все свойства компанент и форм...
у формы в длл ParentFont - false....?


 
reonid ©   (2003-06-23 20:12) [3]

constructor THintWindow.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Color := $80FFFF;
Canvas.Font := Screen.HintFont;
Canvas.Brush.Style := bsClear;
end;


 
reonid ©   (2003-06-23 20:18) [4]

Хотя нет, это не должно влиять


 
Юрий Зотов ©   (2003-06-23 21:28) [5]

Попробуйте перед вызовом формы переменные Screen и Application из DLL переопределить на соответствующие значения из Exe.


 
Voyager_XX   (2003-06-24 10:08) [6]

возможно я это и делаю.....
вызов идет по типу такой...

procedure InitPlugin(App, Scr: integer); StdCall;
var DA: TApplication; DS: TScreen;
begin
DS := Screen;
Screen := TScreen(Scr);
DA := Application;
Application := TApplication(App);
end;

может что не так...?


 
Юрий Федоров ©   (2003-06-24 10:48) [7]

Попробуйте присваивать не сами Application, Screen, а их Handle"ы


 
Voyager_XX   (2003-06-24 10:54) [8]

а как вот такой вариант ....

Я правил для этого graphics.pas

procedure TFont.Assign(Source: TPersistent);
begin
было
if Source is TFont then
стало
if (Source is TFont) or (Source.ClassName = "TFont") then

// пример от Михаила

попробовал работает...в чем загвоздка....
сейчас поиграюсь с Handle...
но вопрос остается что правильнее...


 
Voyager_XX   (2003-06-24 11:05) [9]

сделал так
DS := Screen;
Screen := TScreen(Scr) ;
DA := Application;
Application . Handle := TApplication(App). Handle ;

присваивается handle....

идет вызов
Result := integer(TfrmMDI_dll.Create(Application));
и вылетает ошибка....
Cannot create form. No MDI form currently active. :((

вот как...


 
Юрий Федоров ©   (2003-06-24 11:13) [10]

С исправлением graphics.pas
ты погорячился, верни взад :-)

А при вызове InitPlugin ты Handle"ы передаешь или сами объекты?


 
Voyager_XX   (2003-06-24 11:26) [11]

были следующие попытки вызова
procedure InitPlugin(App : TApplication; Scr : TScreen ); StdCall; и
procedure InitPlugin(App, Scr: integer); StdCall;

и из головной формы вызывалось :
InitPlugin( (Application), (Screen) ); и
InitPlugin( integer(Application), integer (Screen) );




 
Юрий Федоров ©   (2003-06-24 11:52) [12]

>>и из головной формы вызывалось :
>> InitPlugin( (Application), (Screen) ); и
>> InitPlugin( integer(Application), integer (Screen) );
Это одно и то же.
Попробуй
InitPlugin(Application.Handle, Screen.Handle);



 
Voyager_XX   (2003-06-24 12:06) [13]

нда ....
тока я у Screen - Handle получить не могу....
сделал так:
procedure InitPlugin( App : HWND ; Scr : TScreen ); StdCall;
begin
DS := Screen;
Screen := TScreen(Scr) ;
DA := Application;
Application . Handle := (App) ;


идет вызов
Result := integer(TfrmMDI_dll.Create(Application));
и вылетает ошибка....
Cannot create form. No MDI form currently active. :((

вот как...



 
Юрий Федоров ©   (2003-06-24 12:15) [14]

Со Screen.Handle я погорячился :-)
Тут очень часто задается вопрос "создание MDI Child форм в DLL", поищи



Страницы: 1 вся ветка

Текущий архив: 2003.07.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-20080
maxon
2003-06-24 11:15
2003.07.07
ждать завершение процедуры


3-19971
tamara
2003-06-10 16:57
2003.07.07
MSSQL2000


1-20090
alex_bredin
2003-06-24 12:08
2003.07.07
ShellTreeView


14-20281
Tornado
2003-06-20 09:35
2003.07.07
Как бороться со спамом?


9-19941
Кен
2003-01-23 02:00
2003.07.07
Как в glscene e грузить текстуры из ресурсов ?