Solved

"Cannot assign a TFont to a TFont" error

Posted on 2001-06-09
8
3,170 Views
Last Modified: 2012-05-04
Hi,

I've run into a problem while trying to create and add TTabsheet pages to a TPageControl from within a DLL.

aTabSheet := TTabSheet.Create(aPageControl);
aTabSheet.PageControl := aPageControl;

Now, creating the TabSheet seems to work fine. But when I assign the PageControl to the PageControl property of the TabSheet, I get a "Cannot assign a TFont to a TFont" error. Now this seems bizarre to me, as there's no mention of a TFont in any of my code. Could this be a bug in Delphi??

Anyway, if anyone has any idea as to what might be causing the problem, or how to solve it, I would really appreciate hearing from you.

Thanks
Greg
0
Comment
Question by:gwhite012597
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 3

Expert Comment

by:nnbbb09
ID: 6171260

Very strange. I've just tried the same code inside a dll and it works fine. Which version of Delphi are you using. I'm using D5 Pro. Do you have any event handlers attached to the pagecontrol or any of your tabsheets?

Jo
0
 

Author Comment

by:gwhite012597
ID: 6172079
I'm currently using Delphi4 but do have Delphi5 somewhere so I might give that a try. The funny thing is that I have had this working previously...
I am currently doing a re-write of a project, which, for this part anyway, is identical to what I am doing now. Even more frustrating is that I remember when I wrote the original version I had the same problem, but I don't remember how I managed to fix it.
0
 
LVL 12

Expert Comment

by:rwilson032697
ID: 6172874
Are you assigning the application object from your EXE to the DLL?

Cheers,

Raymond.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:gwhite012597
ID: 6173068
Not as far as I know...
I dynamically load the DLL using LoadLibrary, then call an exported function which instantiates an object from within the DLL. This object has a method called DrawPage which takes as an argument, the page control with which to add its pages to.

Basically, the idea is to have the main application loading one or more DLLs which each draw custom pages on the main form (by way of the PageControl). Hence creating a modular program.

Clear as mud??

Cheers,
Greg
0
 
LVL 12

Accepted Solution

by:
rwilson032697 earned 200 total points
ID: 6174304
I understand what you are doing. I think you need to be using a common TApplication object. One way to do this is to use VCL packages for both EXE and DLL, or you can place a method in your DLL to pass it the TApplication instance from your application to it...

Cheers,

Raymond.
0
 

Author Comment

by:gwhite012597
ID: 6175429
Aha,

Your mention of using Packages has brought back my memory of what happened last time. I think (I'm not able to try it out at the moment) the solution that I found last time is to make sure the DLL is built with Runtime packages.

Thanks for jogging my memory... and I'll give passing it the TApplication a go aswell.

Cheers,

Greg
0
 

Expert Comment

by:mvsilva
ID: 6885198
I have the same problem when I call a popupmenu.
How did you save the problem ?!
Thank´s a lot ?
0
 
LVL 12

Expert Comment

by:rwilson032697
ID: 6886867
The comments above illustrate the two ways: Pass the TApplication instance to the DLL, or compile both the application and the DLL with runtime packages enabled.

Cheers,

Raymond.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Intraweb submit form as a POST request 4 373
How to Get Images From Server using App Tethering 11 49
Firemonkey Queue list 1 49
Using MMsystem To change audio input 1 36
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

738 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question