Graphics32 under Delphi 10 Seattle

For years, I've been using Graphics32 components in my Delphi projects. Unfortunately, these components don't seem to be supported now (the last new version is dated 2012). I wonder if there's a way to install the Graphics32 package for Delphi 2010 (the latest available one) in the newest Delphi 10 Seattle environment.
VSmolenskyAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Geert GOracle dbaCommented:
maybe the items you need are part of the core now ...
or part of the JEDI packs

what are you using from graphics32 ?
Sinisa VukSoftware architectCommented:
look here at sourceforge....
There is a Xe8 package - so with little modification in .inc file (and maybe in some pas) you can add support for Dx by own.
VSmolenskyAuthor Commented:
> what are you using from graphics32 ?

Just Image32 component. All I need is the support of multiple layers and good antialiasing of text on the image.

> There is a Xe8 package - so with little modification in .inc file (and maybe in some pas) you can add support for Dx by own.

Thank you for the link. I'm sure I can modify it, but I need to know exactly what to rewrite.
Exploring SQL Server 2016: Fundamentals

Learn the fundamentals of Microsoft SQL Server, a relational database management system that stores and retrieves data when requested by other software applications.

Sinisa VukSoftware architectCommented:
Ok, with all respect to Graphics32 Team - I'm changed .inc file and one pas to be compatible with DX.
Put DX foder into project foder, and GR32_VPR.pas, GR32_Compiler.inc into source folder. This is a small contribution to great G32 project.
Rename GR32_Compiler.pas to GR32_Compiler.inc, and DX.doc inside DX.zip rename to DX.7z and extract it to project folder. Sorry - this is due to EE file upload restrictions.
Source_changes.zip
DX.zip
ThommyCommented:
Below are the steps how I managed to get it installed in Delphi 10:

1.) Download Graphics Version 1.9.1 from Sourgeforge.net
2.) Copy GR32_DSGN_RSXE5.dpk and GR32_RSXE5.dpk and rename to GR32_DSGN_RSXE10.dpk and GR32_RSXE10.dpk
3.) In GR32_DSGN_RSXE10.dpk adapt "Requires .. GR32_XE5;" to "Requires .. GR32_XE10;"
4.) In GR32_Compiler.inc insert at line 71:
{$IFDEF VER300}
   {$DEFINE COMPILERXE5}
   {$IFNDEF BCB}
     {$DEFINE DELPHIXE5}
   {$ELSE}
     {$DEFINE BCBXE5}
   {$ENDIF}
{$ENDIF} 

Open in new window

5.) Compile and install...
VSmolenskyAuthor Commented:
It's very kind of you both, my friends. I've taken GR32_Compiler.pas (.inc) from Sinisa Vuk's zip files and everything else from Sourgeforge.net (I guess, DX.7z contains more or less the same). Then I did the items 2, 3 and 4 from Thommy's instruction, and tried to "compile and install" as I always did in Delphi: I used File | Open in the main menu to open GR32_DSGN_RSXE10.dpk. However, it doesn't seem to work in Delphi 10. There comes an error window saying:

Fail to save project "C:\Program Files\Delphi10\graphics32...\GR32_DSGN_RSXE10.dproj",
The following error occurred while saving:
Cannot create file "C:\Program Files\Delphi10\graphics32...\GR32_DSGN_RSXE10.$$$".
Access is denied

Looks like Delphi 10 interprets a dpk file not as a package but as a project. There should be some new way to compile and install packages. Can you give me any advice on that?
Sinisa VukSoftware architectCommented:
Try my DX.7z.... (extracted to projects folder)
ThommyCommented:
It's correct that Delphi creates a Project file (*.dproj) when compiling a package (*.dpk).


I think the problem is that you've extracted your graphics32 files into  C:\Program Files\Delphi10.

If you compile dpk from there, Delphi trys to create dproj and temp files (*.$$$) in the same folder.
This is not successful because of lacking access rights.

Extract your graphics32 files somewhere outside system program folder "c:\program files".
Open and compile dpk from there...
Geert GOracle dbaCommented:
or run delphi as admin
VSmolenskyAuthor Commented:
Thank you, Thommy! Yes, from a different folder the compilation starts smoothly.

But it doesn't end as smoothly as it starts. Now I'm using all Sinisa Vuk's files, including those from DX.7z. The compiler stops on the following lines of GR32.inc:

{$IFNDEF COMPILER6}
{$IFNDEF FPC}
//////////////////////////////////////////////////////////////////////
'  Graphics32 may only be installed with Delphi/BCB 6 (or higher)    '
'   or Free Pascal / Lazarus                                         '
//////////////////////////////////////////////////////////////////////
{$ENDIF}
{$ENDIF}

Also, it doesn't like the following fragment of GR32,pas:

type
{$IFNDEF FPC}
{$IFNDEF BCB}
  PPoint = ^TPoint;
  TPoint = Windows.TPoint;
{$ENDIF}
{$ENDIF}

Says "Windows" is an undeclared identifier. In another place, TColor is undeclared identifier. There's a lot of similar errors, they all seem to be induced by some fundamental mistake. I wonder where I should look for it.
ThommyCommented:
What do you mean by "But it doesn't end as smoothly as it starts"???

What are the concrete error Messages when performing my steps??

Can you please upload your GR32_Compiler.inc?
VSmolenskyAuthor Commented:
Here are some first error messages:

[dcc32 Error] GR32.inc(172): E2029 Declaration expected but string constant found
[dcc32 Error] GR32.pas(112): E2003 Undeclared identifier: 'TColor'
[dcc32 Error] GR32.pas(116): E2005 'TColor' is not a type identifier
[dcc32 Error] GR32.pas(138): E2003 Undeclared identifier: 'HPALETTE'
[dcc32 Error] GR32.pas(210): E2003 Undeclared identifier: 'Windows'
[dcc32 Error] GR32.pas(210): E2029 '=' expected but ';' found
[dcc32 Error] GR32.pas(261): E2007 Constant or type identifier expected
[dcc32 Error] GR32.pas(261): E2029 '=' expected but ';' found
[dcc32 Error] GR32.pas(262): E2007 Constant or type identifier expected
[dcc32 Error] GR32.pas(262): E2029 '=' expected but ';' found
[dcc32 Error] GR32.pas(338): E2003 Undeclared identifier: 'TPersistent'
[dcc32 Error] GR32.pas(338): E2021 Class type required

and many more...

GR32_Compiler.inc is uploaded as *.txt
GR32_Compiler.txt
ThommyCommented:
To be 100% sure that my steps are working I have uninstalled package and have started installing Graphics32 from scratch including step 1 (download Version 1.9.1).

Everything worked fine like a few weeks ago when I installed it for the first time.

So if you have also done step 1 then you should use the proper GR32_Compiler.inc.

Please try the attached one that I used...
GR32_Compiler.txt
VSmolenskyAuthor Commented:
Yes, let's do it again from the very beginning. As for the step 1, could you please give me the exact link to download Version 1.9.1 ? I definitely downloaded it from Sourgeforge.net - but who knows, maybe there are more locations than one.
ThommyCommented:
Graphics32 Version 1.9.1 download page

Download graphics32-1-9-1-fixes-r2148.zip
VSmolenskyAuthor Commented:
Yes, Thommy, now it compiled almost perfectly, with just one warning:

[dcc32 Warning] GR32_Polygons.pas(228): W1000 Symbol 'MaxListSize' is deprecated

Can I ignore it?

Now I have to install it, right? I remember an "Install" button in old versions of Delphi, but I can't see it here. Shall I use some menu command?
ThommyCommented:
Right-Click the package and select "Install"
VSmolenskyAuthor Commented:
To be honest, I can't understand where the package is to right-click. I right-clicked on "GR32_DSGN_RSXE10.bpl" in the Project Manager, chose "Install" from the menu and got the following error message:

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl.
The specified module could not be found.

Should I have right-clicked somewhere else?
ThommyCommented:
That's all correct.

My BPL is in the same location and everything worked right.Screenshot Installed packages
 I wonder why your GR32_DSGN_RSXE10.bpl could not be found!!!

Can you please check if file really exists in C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl?
ThommyCommented:
These are the official Installation steps taken from graphics32.chm:

Install Graphics32 (taken from graphics32.chm)Try adding your Graphics32 main directory to library paths as marked above...
VSmolenskyAuthor Commented:
> Try adding your Graphics32 main directory to library paths as marked above

That was the first thing I did.

> Can you please check if file really exists in C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl?

It's funny: the file exists, but the path is slightly different. Not ...Public\Documents\Embarcadero... but Public\Public Documents\Embarcadero

Shall I just rename the folder "Document"? Or should I change some instructions in the files?
ThommyCommented:
Sounds very strange!
Don't know where this Comes from.

Copy bpl file to C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl and try to install again...
VSmolenskyAuthor Commented:
Yes, it's very bizarre. I've tried to add "Documents" to "Public" folder, but Windows didn't let me do it because there was already "Public documents" folder there. For some reason, "Documents" and "Public documents" are considered the same name. So, I just renamed "Public documents" as "Documents" and tried to install again. And again I got an error:

[dcc32 Fatal Error] F2039 Could not create output file 'C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\GR32_DSGN_RSXE10.bpl'
Failed
ThommyCommented:
The different names "Public Documents" and "public\documents" are special windows user profile folders and refer to the same physical folder.

You should not disarrange Windows user profiles directory structure!!!
VSmolenskyAuthor Commented:
No, no, it was just a short experiment. I named it back!
VSmolenskyAuthor Commented:
But the file GR32_DSGN_RSXE10.bpl is in the folder
'C:\Users\Public\Public Documents\Embarcadero\Studio\17.0\Bpl
I have no idea why it doesn't work.
ThommyCommented:
Check Tools menu and navigate to Environment Options -> Delphi Options -> Library. There you will find the Package Output Directory . This is the default Directory for compiled packages (BPLs).

You may change this directory to your desired path and re-compile and re-install Graphics32...
ThommyCommented:
...or just adapt the Package Output Directory path to where your  GR32_DSGN_RSXE10.bpl is located
Sinisa VukSoftware architectCommented:
where you put component folder?
I always use custom 'Components' folder (where put many other components) and in Environment Options -> Delphi Options -> Library add this new folder into Library list. Never change default bpl output folder. This 'Public' folder is because that you choose 'To all users' installation, I think.
Second, I send to you two packages... one runtime and second is design-time. First rebuild runtime, second design-time and this second install...

I want to put my complete component project but I wonder - where?
VSmolenskyAuthor Commented:
Thommy, unfortunately, your advice didn't work. I completely changed Package Output Directory path, compiled the package again (the file GR32_DSGN_RSXE10.bpl was successfully created in the newly specified folder), but still couldn't install it. Delphi said again the specified module couldn't be found. Mysterious, isn't it?

Sinisa Vuk, I didn't quite understand your idea about the component folder. Are you talking about the library path to the Pascal files of the components I'm trying to install? Yes, of course I've added this path to the library. And what two packaged are you talking about? Do you mean those two zip archives you uploaded here 3 days ago?
Sinisa VukSoftware architectCommented:
In folder ..\Graphics32\Source\Packages\DX are two packages, GR32_R.dpk and GR32_D.dpk.
First, compile runtime package GR32_R.dpk, and after that designtime GR32_D.dpk, and this one install.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
ThommyCommented:
Have you also added your component folder to the library path?

What's the path of your component Folder?
VSmolenskyAuthor Commented:
Dear friends, I'm glad to tell you that with the recommendations from Sinisa Vuk I mostly succeeded. GR32_D.dpk was compiled and installed smoothly. Now I can use TImage32 in my project! Thank you for your help. I think I'll accept is as a multiple solution.

Just one problem is still there: I use TPolygon32 type which doesn't seem to be in the sources. GR32_Polygons.pas from Sourgeforge.net contains this type, but GR32_Polygons.pas from Sinisa Vuk's archive doesn't! Instead, it contains type called TPolygonRenderer32. I have no idea how to use it, couldn't find any information. Is there a way, for example, to replace this wrong GR32_Polygons.pas by the good old one?
Sinisa VukSoftware architectCommented:
TPoligon32 is abandoned . Use TPolygonRenderer32 instead. There are few examples in Example folder.
Some things are simplified - ex. simple call PolygonFS_LCD or PolyPolygonFS_LCD function will make float point polygons....
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.