Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Вниз

Чем вызвана ошибка 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-20012
Status_I
2003-06-15 00:00
2003.07.07
Все те же даты


1-20128
Артем К
2003-06-25 02:31
2003.07.07
Как разделить строку на слова?


14-20246
Rradion
2003-06-19 15:05
2003.07.07
СРОЧНО ( к завтрому ) надо решить задачки по Матем. -> 10$ по WM.


3-19988
nv-vetal
2003-06-13 14:28
2003.07.07
dbExpress->MySQL.Как подключиться, и что для этого...


3-20017
???
2003-06-13 14:44
2003.07.07
проблема со значениями по умолчанию (mdb)





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