Greetings, Ivan -
Since you are new to using Themes and new to using a post-SAP version of PowerBuilder, may I suggest you first create a simple test application (single window, no use of canvas.pbx, no database connections, use an external source DW with manually populated/saved data if you want to include a DataWindow ... but keep it simple), Build the test app as an executable and install on another machine so that you can get familiar with some of the run-time DLL's that are new to PB since v12.6 (there are quite a few!) I also recommend you avoid creating 64-bit executables and Remote Desktop/Citrix deployment, etc. for now ... keep it simple!
Once that is working as a compiled/deployed executable, apply a standard, out-of-the-box (not modified) theme and get that working. If you are wanting to eventually create/use a customized theme, then create your customized theme and get that working with your test application. If at any point along the way you run into questions or issues, either post additional questions here and you can include a zipped copy of your test application's pbl (and theme, if needed), or open a (free) support ticket and you can include a zipped copy of your test application's pbl.
At this point you could then try to add the use of the canvas.pbx to your test application.
Once successful, you should have gained enough experience with PB 2019 and themes to migrate your PB 12.6 application with less difficulties.
I think this approach would be more productive than trying to learn about everything all at once and attempting to troubleshoot and solve all of the issues you are experiencing all at once.
Finally, what does your legacy PB v12.6 app use the canvas.pbx for? If we knew a little more, we might be able to suggest an alternative solution to your needs that is more compatible with the current PowerBuilder product.
HTH. Regards, John
Below is code from u_canvas object in our project:
forward
global type u_canvas from userobject
end type
end forward
global type u_canvas from userobject native "Canvas.pbx"
public subroutine of_settransparent(boolean ab_set)
event type int onpaint(ulong hdc)
integer width = 400
integer height = 200
end type
global u_canvas u_canvas
on u_canvas.create
call super::create
TriggerEvent( this, "constructor" )
end on
on u_canvas.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
As you notice, "Canvas.pbx" is listed, we tried to change it to PBDOM190.pbx that is included in %Appeon/Shared/Powerbuilder but al we got was the notorious serious goof error.
Does u_canvas object needs to be present in our project if "canvas.pbx" is some 3rd party file ?
Does the theme190 folder also has to be in same folder as project during compile ? Maybe that is one of the problems, I'm sure we did not miss any of dll's that are needed.