Tech Articles


Configuration Process for PB 12.6 and TFS 2017 Using Team Explorer 2013/2015


This article presents the configuration process of PowerBuilder 12.6 with TFS 2017 (server) using Team Explorer 2013/2015

This article has four sections:

  • Prerequisites.
  • Setup Team Explorer 2013/2015.
  • PowerBuilder Configuration.
  • Complementary Information

 

1. Prerequisites

  1. Verify that the DPI font is 96 (100%) .
  2. Create a new folder on C: drive (C:\MyApp is my example) and copy your application on it.

IMPORTANT: See Numeral 1 of PowerBuilder Configuration section, about folders structure.

Read more

How to get the application path


This example shows how to get the application path for development and deployment environments. This is compatible with PB 12.6.

I recommend to use a NVO to develop this functionality.

1. First declare the Local External Functions:

FUNCTION int GetModuleFileNameW(&
           ulong hinstModule, &
           REF string lpszPath, &
           ulong cchPath) LIBRARY "KERNEL32.DLL"

FUNCTION ulong GetCurrentDirectoryW (&
  ulong textlen, &
  REF string dirtext) LIBRARY "KERNEL32.DLL"

 

Read more

Using PowerBuilder 2017 with TFS source control


This article is a guide to connect Powerbuilder 2017 with TFS. It is important to follow the steps in the order listed in the article.

The prerequisite includes

  • PB17 installed on a local machine.
  • TFS server running with access to the user. A collection is required where the code will be checked in. 

Next follow the below points:

  1. Team explorer 2013 : Yes the first thing needed is to install Visual studio team explorer. I know the first question pop ups in mind is if Visual studio needs to be installed on every machine !! Well the answer is NO. All you need is Team explorer 2013 to access the TFS. Second question is why 2013 ? Well there comes the 32 bit and 64 bit compatibility issues, moreover there is no standalone installer for Team explorer 2015. If you figured out a way to do it with later versions, then mention it in the comments. 
Read more

Elevate 2017 session: Frogpond


Frogpond – A study in game design

By: Matt Balent

Presented at the Elevate 2017 conference.

 

This project began as an exercise with two goals: improve my knowledge of the datawindow ‘modify’ method and provide a simple computer ‘game’ for my four year old to use to improve her mouse skills.  When I was thrust into the role of PowerBuilder consultant in 2007 I knew I had to improve my overall skill level with PB in order to be successful.  An area I had not done much prior work was using the ‘describe’ and ‘modify’ methods to alter a datawindow when the application was running.

Over the years I have demonstrated this application at a variety of user group meetings and conference sessions, often as  a way to pass time.  One near universal reaction is ‘I never knew you could do that in PowerBuilder!’  The source code is provided for this (PB2017 format) application.

Read more

PBDOM with PowerBuilder


​You might think, why should I bother using PBDOM? You can use PDOM to manipulate elements in an XML document. That means you can move elements within a document or from one document to another. You can add elements to a document or delete elements from a document. Moreover, with some coding it is even possible to import nested XML data into a DataWindow.

With the XML capabilities of the DataWindow introduced with PowerBuilder 9 it is possible to import and export data very fast and easily. You might have given a short look at the PBDOM definition in the PowerBuilder help but at the first sight, it looks quite difficult to handle. In the following article, I introduce PBDOM accompanied by some code samples.

Read more

Continuous Integration with PowerBuilder 2017, Bonobo Git and Jenkins


Note:  While the techniques described here still work, custom Jenkins plugins are now available which are easier to use.  They are described in this article.

 

In a previous blog post I examined how we could use the Git MSSCCI provider from PB Software in order to use GitHub as a source code provider for PowerBuilder.

In this blog post we're going to take that to the next step, in that we're going to create a build machine separate from our PowerBuilder development machine and then set it up to perform continuous integration.  The term "continuous integration" has a somewhat ambiguous definition, but generally it means that:

  • developers check in changes frequently (at least daily) and
  • that build are done on a regular basis (at least daily, but can be as frequently as after each check-in)

Ideally, automated testing routines would be run on each build to ensure that feedback on any functionality that was broken by the latest code changes are returned to the developers as soon as possible.  Automated testing is outside the scope of this particular article

One of the new features added in PowerBuilder 2017 is a license free stand alone compiler and we're going to use that for this article.   If you are using a older version of PowerBuilder you could use the same approach using the command line argument feature of the PowerBuilder IDE, but it would require installing the full PowerBuilder IDE (including a license) on the build machine.  Alternatively, regardless of which version of PowerBuilder you're using you could use PowerGen in scripted mode.

Read more

Getting Internal Info for the Current Window at Runtime


TITLE – Window Internals at runtime

“OK, what window are you in?”

“The Spanner Controller window.”

So here I’m shooting for the browser, w_spanner_controller? Nope, no w_spanner anything. W_controller_spanner? Nope, no w_controller anything.

“OK, what’s in the titlebar?” I ask, my frustration growing.

“Untitled, what does that mean?”

Have you ever worked on a system that had literally hundreds of windows with names that are not intuitive? I’ve seen names like w_a13_6.

There are times that at runtime we would love to get information about a window from the user. If only there were a way…

This solution requires a two prong approach. It requires that you have a base class window and a base class menu (see the NOTE at the bottom). Let’s start with the window.

Read more

Find Articles by Tag

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