Tech Articles


Dynamically Generating Next-Generation Charts from PowerBuilder DataWindows


It will come as a surprise to no one that PowerBuilder's native graphing capabilities are somewhat lacking. Even the Define Graph Style dialog for the DataWindow graph style seems to have been left out of the GUI update in PowerBuilder 10.5 (see Figure 1). Forget Windows 95, this looks like something out of the version of Excel that came with Windows 3.1.

So what would we want from updated graphing capabilities? I can think of a few important features:

  1. Something that would work equally well in a Web application as a client/server one.
  2. Transitions, to allow some animation in the graphic during its initial display.
  3. Click-through, making it possible to respond to actions on the chart to drill down into additional information, whether it be additional charts or just access to the underlying data.
  4. More control over the generation of the chart. For example, for 3D pie charts we should be able to explode segments and have control over the amount each segment is exploded.
  5. An updated look-and-feel. That's a little hard to put into words, but what we want to do is make Figure 2 look like Figure 3.
Read more

Calling .NET Components from PowerBuilder Via COM Wrappers - Redux


Back in August of 2006, I wrote an article about calling .NET components from PowerBuilder using COM wrappers (i.e., CCW). Since I was basing it on a registry entry approach, the technique demonstrated required the component to be added to the GAC, which in turn required that we create a strong name and sign the assembly (besides having it compiled as a COM-visible assembly).

You don't always have access to the GAC or the registry of the machine that you need to deploy your application to. Well, fortunately we have some options. Beginning with Windows XP and Windows Server 2003, the Microsoft operating systems allowed the use of manifest files rather than registry entries for loading COM components. It not only works for regular COM components, but for .NET components that have been exposed as COM-visible. The only difference is how the manifest file is structured.

If you want further information on the details, I'd recommend the following resources:

Read more

OLE - Extending the Capabilities of PowerBuilder Part 2


This two-part article provides a primer on OLE, some practical examples of its use, and demonstrates some methods for addressing the limitations of PowerBuilder's implementation of OLE.

In Part 1 I provided some background information for OLE and discussed the use of custom controls, in Part 2 I talk about OLE Automation and OLE objects.

OLE Automation
OLE Automation is the interface through which one application (e.g., Microsoft Outlook) makes the methods, properties, and events of its objects (e.g., Folders, Messages, Address Book) available for use within another application. Using OLE Automation, a developer could automate another application (e.g., creating and then printing form letters from Microsoft Word) or they may just use a portion of another application within their own (e.g., using the spell-check capability within Microsoft Word to spell-check text in a control within PowerBuilder).

Read more

OLE - Extending the capabilities of PowerBuilder Part 1


Using Object Linking and Embedding (OLE) from PowerBuilder - whether in OLE Automation or the use of ActiveX controls - has long been a source of frustration for many PowerBuilder developers.

There are several reasons for this:

  • There is a lack of a full understanding of OLE.
  • There is little documentation and practical examples of using OLE with PowerBuilder.
  • There are some limitations inherent in the method that PowerBuilder implements OLE.

This article is intended to address some of these issues by providing a primer on OLE, providing some practical examples of its use, and demonstrating some methods for addressing the limitations of PowerBuilder's implementation of OLE.

The first thing we need to do is cover some background information, beginning with some definitions of terms and then some explanation of how OLE works.

Read more

Find Articles by Tag

SqlExecutor Database Connection Outlook Window DataWindow DragDrop License Application Event Handler .NET DataStore Error Source Control Stored Procedure Encryption CI/CD Elevate Conference UI Modernization COM PDF Syntax JSON CoderObject REST File Class Platform Script Debug .NET Std Framework Configuration PFC Menu PostgreSQL ODBC driver UI Themes Transaction IDE SOAP WinAPI DLL PowerBuilder (Appeon) Authentication OrcaScript PowerScript (PS) Repository BLOB Filter Service Excel NativePDF Variable Git RibbonBar Builder 32-bit Event SDK Linux OS Database Table Data Data Interface PowerServer Web Text Array SVN OAuth Oracle Event Handling Source Code Icon Messagging ODBC Bug Automated Testing OAuth 2.0 Import Database Object Android Resize OLE TLS/SSL JSONParser Design Azure TreeView Trial TortoiseGit .NET Assembly Web API API GhostScript SQL Server PowerBuilder RESTClient Debugging MessageBox Debugger PostgreSQL Model RibbonBar SnapDevelop RichTextEdit Control Validation PowerBuilder Compiler SQL Database Profile Export External Functions Web Service Proxy Mobile Open Source UI InfoMaker Encoding DataWindow JSON Expression Windows OS PBDOM Charts Database Testing DevOps XML DataType Import JSON SqlModelMapper HTTPClient Export JSON CrypterObject TFS Installation Database Table Schema Deployment Migration Authorization Database Painter Branch & Merge C# Graph PowerServer Mobile WebBrowser PDFlib Jenkins iOS Sort JSONGenerator Windows 10 Icons Performance Database Table 64-bit ActiveX SnapObjects