Главная страница
    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.47 MB
Время: 0.006 c
1-20074
i-s-v
2003-06-23 23:20
2003.07.07
Форма в ДЛЛ


3-19969
Vladimir S Hudyakov
2003-06-10 15:23
2003.07.07
Инсталляция BDE


14-20226
AlexTregubov
2003-06-19 12:24
2003.07.07
HTML Help Workshop - создание справочной системы


14-20284
NVO
2003-06-19 08:00
2003.07.07
Передача данных из таблиц с Lookup полями из COM+ в приложение


14-20238
Soft
2003-06-19 13:28
2003.07.07
Абсолютное знание





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский