Thursday, May 10th 6:00pm – 8:00pm
Location: 10735 David Taylor Drive, Suite 100; Charlotte, NC 28262
Topics include an overview of PowerGen build tool and using .NET visual controls in PowerBuilder Classic.
*** The meeting will be available as a Microsoft Livemeeting session for any virtual attendees. Your registration confirmation email will contain the LiveMeeting link.
Register: http://my.isug.com/e/in/eid=134
Tags:
application development,
charlotte,
datawindow,
ISUG,
McKesson,
nc,
north carolina,
pb12,
pb12.5,
powerbuilder,
PowerBuilder 12,
PowerBuilder 12.5,
PowerGen,
SAP,
Sybase,
user group No Comments »
Appeon Mobile Survey

Appeon Mobile will create native mobile apps using your PowerBuilder skills!
Help create a mobile solution for PowerBuilder adapted to your needs by participating in this survey!
http://tinyurl.com/AppeonSurvey
Tags:
Android,
appeon,
Appeon Mobile,
ios,
mobile apps,
mobile development,
novalys,
pbtv,
powerbuilder,
powerscript,
SAP,
Sybase No Comments »
Posted
on March 16, 2012, 12:01 am,
by John Strano, PowerBuilder Evangelist,
under
Events,
News.
Thursday March 22nd 2012
at 12:00 PM EST (New York) – 17h00 CET (Paris)
Imagine a PowerBuilder extension that would allow end-users to modify applications themselves! Customization Studio lets them edit a window as if it were a simple MS Office document. Users modify the executable version of the application, without changing the source code, creating an immediate result.
Customization Studio 2012 features a new application called “NCS Designer”; it provides tools designed for non-technical users. In this presentation, we will see how to use these tools to customize reports, add new items in your windows, modernize the look & feel of the application and more…
Presenter: Christophe Dufourmantelle
Register:
http://powerbuilder.tv/index.php/en/upcoming-webinars/1-upcoming-webinars/152-introduction-to-customization-studio-2012
Tags:
Customization,
Customization Studio,
novalys,
PB .NET,
pbtv,
powerbuilder,
PowerBuilder .NET,
PowerBuilderTV,
powerscript,
SAP,
Sybase No Comments »
Posted
on March 5, 2012, 12:02 am,
by John Strano, PowerBuilder Evangelist,
under
Events,
News.
March 8th, 2012 6-8pm

Open Mic’ Night!
So far, topics include:
- ASE/SQL Server database tips
- Powerbuilder 12.5 Classic tips
- PBTools application.
More to come.
The meeting will also be available as a Microsoft Livemeeting session for any virtual attendees. Your registration confirmation email will contain the email link.
Location Details:
Offices of McKesson
10735 David Taylor Drive, Suite 100
Charlotte, NC 28262
Register: http://my.isug.com/e/in/eid=131
Tags:
application development,
charlotte,
database performance,
datawindow,
DBMS performance,
ISUG,
McKesson,
nc,
north carolina,
pb12,
pb12.5,
powerbuilder,
PowerBuilder 12,
PowerBuilder 12.5,
SAP,
source control,
Sybase,
user group No Comments »
Posted
on March 2, 2012, 1:05 pm,
by John Strano, PowerBuilder Evangelist,
under
Events,
News.
Thursday March 8th 2012
at 09:00am CST (Ciudad de Mexico) / 16:00 CET (Madrid)

Cómo hacer aplicaciones multitarea con PowerBuilder
- Presented in Spanish -
En este webinar realizaremos aplicaciones multitarea en versiones de Powerbuilder anteriores a la 12, para que se puedan ejecutar como procesos independientes para aprovechar al máximo el procesador y la memoria. También explicarán las nuevas funcionalidades y ventajas del trabajo multiproceso en PowerBuilder 12.5 utilizando funciones de PowerBuilder.NET.
Presenter: Oscar Tobar
Register:
http://powerbuilder.tv/index.php/en/upcoming-webinars/1-upcoming-webinars/153-como-hacer-aplicaciones-multitarea-con-powerbuilder
Posted
on February 20, 2012, 12:00 am,
by John Strano, PowerBuilder Evangelist,
under
Events,
News.
Date: Thursday February 23rd at 11am EST (New York) / 17h00 CET (Paris)

PowerBuilder 12.5.1 will be released soon as a free download for anyone using PowerBuilder 12.5. While this is primarily a maintenance release it will include two new powerful features in the PowerBuilder .NET IDE. Join Dave Fish as he discusses and demonstrates the ability to dynamically load PowerBuilder assemblies into a WPF application at runtime as well as the ability to deploy 64-bit .NET applications.
Presenter: Dave Fish
Register: https://www2.gotomeeting.com/register/738111978
Tags:
.NET,
.NET development,
Dave Fish,
Fish,
novalys,
PB .NET,
pbtv,
powerbuilder,
PowerBuilder .NET,
PowerBuilderTV,
powerscript,
SAP,
Sybase 2 Comments »
Posted
on February 2, 2012, 8:16 am,
by John Strano, PowerBuilder Evangelist,
under
Events,
News.
- English Session -
Date: Thursday February 9th at 11am EST (New York) / 17h00 CET (Paris)

After the success of the French version, we offer an English version of “How to migrate your PowerBuilder applications.”
What are the advantages of migrating to PB 12.x Classic and PB 12.x .NET? What are the costs and difficulties related to migration?
To learn step by step how to migrate your applications and in order to answer any question you may have, join us February 9, 2012 on PowerBuilderTV.
Presenter : Bassam Tannouri
Register: https://www2.gotomeeting.com/register/682532730
Tags:
Bassam Tannouri,
migrate,
migration,
novalys,
pbtv,
powerbuilder,
PowerBuilderTV,
powerscript,
SAP,
Sybase,
Tannouri 2 Comments »
Posted
on January 31, 2012, 6:31 am,
by John Strano, PowerBuilder Evangelist,
under
Tips and Tricks.
You’ve probably noticed our blogroll links in the right hand margin of this PowerBuilder blog. We’ve included those links whose content can advance you to being a more powerful developer. But just who are the people behind these resources? We’re starting a series featuring each of these expert sources of developer knowledge…starting with Matt Balent, an engineer in the Paragon Development team at McKesson Provider Technologies and an organizer of the North Carolina PowerBuilder User Group who brings us a special DataWindow enhancement technique…
PowerBuilder – Treeview-Like Tooltips for DataWindows
The treeview control has a very neat piece of functionality built in called Tooltips. When this property is checked your application will automatically display all the text on a treeview item if it is cut off by the edge of the control when the mouse pointer goes over that row. If the row text is not cut off, no tip, if it is, a tip displays. The following is an implementation of this type of functionality for datawindows. Although it is geared more towards grid type datawindows it could be used on others as well. This code is done in PB11.5, which has a tooltip property on datawindow columns, but the basic ideas can be adapted to earlier versions without this.
The code is available here within an Archive File which also includes exports of the objects. Basically you will need to define the ‘mousemove’ event on your datawindow control (mapped to pbm_dwnmousemove) along with an string instance variable that tracks which row/column combination the mouse pointer is over. The instance variable is very important since it prevents the code from constantly being executed when the user keeps the pointer on the same row/column. Within the mouse move the position and width of the datawindow object column being pointed to is compared to the width of the datawindow control and the position of the horizontal scrollbar. Left and Right positioning of the column is also taken into consideration. If the text in the pointed at column is not completely within the control, it it placed into the Tooltip Text of the column. All columns have Tooltips enabled so once the Tip text has a value, the tip appears.
The code to derive the text and determine its length is encapsulated in an non visual object and uses a variety of API calls.
The sample application datawindow has columns of all Edit types as well as a couple of computed columns. One periodic issue is with dropdown datawindows and listboxed which have ‘Display all columns’ on. Another is with the ‘Always show arrow’ option which sometimes keeps the tooltip coming on even though all the text is visible.
Sample Screenshots:

This shows the bubblehelp for a Checkbox column. If the column has three states the text will show either ‘On’, ‘Off’, or ‘Other’.

This shows the right side of the datawindow control with no bubblehelp.

This shows the bubblehelp on a computed column.
At the bottom of the sample application are text boxes which display various position and size information which was useful in creating the checking logic. Since this is a grid datawindow you can re-order the columns as you wish. Also note the datawindow conrol can be resized which makes testing easier.
Code from mousemove event
// listview tooltips functionality for datawindow
//
// check to see if datawindow column text is cut off by either the size of the datawindow
// control or the position of the horizontal scrollbar
// if the text is cut off, put the text into the tooltip for the datawindow column so it
// will display.
Long ll_hScrollPos, ll_width
Long ll_colX, ll_colW, ll_colXW, ll_textwidth
datawindow ldw
string ls_mod, ls_value, ls_err, ls_checkname, ls_oldcolname, ls_alignment
s_dwbubble lstr_bubble
ldw = THIS
IF row > 0 AND dwo.name <> ‘datawindow’ THEN
ls_checkname = (dwo.Name + ‘/’ + string(row))
// only do this if mouse moved to new row/column since last time
IF(is_curcol <> ls_checkname) THEN
IF Len(is_curcol) > 0 THEN // blank out previous tip
ls_oldcolname = Left(is_curcol, Pos(is_curcol,’/') – 1)
ls_mod = ls_oldcolname + ‘.Tooltip.Tip = “”‘
ls_err = this.modify(ls_mod)
END IF
ll_width = w_dwbubblehelp.dw_1.width
ll_hScrollPos = Long( THIS.Describe(“DataWindow.HorizontalScrollPosition”) )
ls_mod = dwo.name + ‘.x’
ll_colX = Long( THIS.Describe(ls_mod) )
ls_mod = dwo.name + ‘.width’
ll_colW = Long( this.Describe(ls_mod) )
ll_colXW = ll_colX + ll_colW
IF ll_colXW < ll_hScrollPos THEN
// “Not visible”
ELSE
IF ( ll_colX < ll_hScrollPos ) AND ( ll_colXW > ll_hScrollPos ) THEN
// Partially Visible Left
// get the text value and its length
lstr_bubble = idw.uf_get_width_of_data(row, dwo.name, ldw, iw_parent)
ll_textwidth = lstr_bubble.i_width
ls_value = lstr_bubble.s_value
ls_mod = dwo.name + ‘.Alignment’
ls_alignment = this.describe(ls_mod)
IF ls_alignment = ’1′ THEN // right alighment
IF ll_textwidth > ll_colw THEN // text wider than column
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSEIF ll_colXW – ll_textwidth < ll_hScrollPos THEN
// text cut off by datawindow control or scrollbar
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSE
ls_mod = dwo.name + ‘.Tooltip.Tip = “”‘
ls_err = this.modify(ls_mod)
END IF
ELSE // other alignments
IF ll_textwidth > ll_colw THEN
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSEIF ll_textwidth > (ll_colXW – (ll_width + ll_hScrollPos)) THEN
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSE
ls_mod = dwo.name + ‘.Tooltip.Tip = “”‘
ls_err = this.modify(ls_mod)
END IF
END IF
ELSEIF (ll_colXW > ll_hScrollPos) AND (ll_colXW > (ll_width + ll_hScrollPos) ) THEN
// Partially Visible Right
// get the text value and its length
lstr_bubble = idw.uf_get_width_of_data(row, dwo.name, ldw, iw_parent)
ll_textwidth = lstr_bubble.i_width
ls_value = lstr_bubble.s_value
ls_mod = dwo.name + ‘.Alignment’
ls_alignment = this.describe(ls_mod)
IF ls_alignment = ’0′ THEN // left alighment
IF ll_textwidth > ll_colw THEN // text wider than column
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSEIF ll_width + ll_hScrollPos – ll_colX < ll_textwidth + Round((ll_textwidth / 10), 0) THEN
// text cut off by datawindow control or scrollbar
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSE
ls_mod = dwo.name + ‘.Tooltip.Tip = “”‘
ls_err = this.modify(ls_mod)
END IF
ELSE
IF ll_textwidth > ll_colw THEN // text wider than column width
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSEIF ll_textwidth > (ll_colW – (ll_width + ll_hScrollPos)) THEN
// text cut off by datawindow control or scrollbar
ls_mod = dwo.name + ‘.Tooltip.Tip = “‘ + ls_value + ‘”‘
ls_err = this.modify(ls_mod)
ELSE
ls_mod = dwo.name + ‘.Tooltip.Tip = “”‘
ls_err = this.modify(ls_mod)
END IF
END IF
ELSE
// “Visible”
// this could be modifed for grid columns resized smaller than text value
ls_mod = dwo.name + ‘.Tooltip.Tip = “”‘
ls_err = this.modify(ls_mod)
END IF
END IF
END IF
is_curcol = dwo.Name + ‘/’ + string(row)
END IF
Thanks to Adam Simmonds for his assistance on this.
Posted
on January 16, 2012, 12:01 am,
by John Strano, PowerBuilder Evangelist,
under
Events,
News.
Présenté en FRANÇAIS / Presented in FRENCH
Date: Thursday January 19th at 11am EST (New York) / 17h00 CET (Paris)

Quels sont les avantages d’une migration vers PB 12.x Classic ou PB 12.x .NET ? Quel sont les coûts et les difficultés liés à la migration ?
Pour apprendre à migrer vos applications pas à pas et répondre à toutes ses questions, rejoignez-nous le 19 janvier 2011 sur PowerBuilderTV.
What are the advantages of migrating to PB 12.x Classic and PB 12.x .NET? What are the costs and difficulties related to migration?
To learn step by step how to migrate your applications and in order to answer any question you may have, join us January 19, 2012 on PowerBuilderTV.
Presenter : Bassam Tannouri
�
Register – https://www2.gotomeeting.com/register/663938618
Tags:
Bassam Tannouri,
migrate,
migration,
novalys,
pbtv,
powerbuilder,
PowerBuilderTV,
powerscript,
SAP,
Sybase,
Tannouri No Comments »
Posted
on January 9, 2012, 11:25 am,
by John Strano, PowerBuilder Evangelist,
under
Events,
News.
Thursday, January 12th
6:00pm – 8:00pm
Offices of: McKesson
10735 David Taylor Drive
Suite 100
Charlotte, NC 28262
SQL Performance Improvements
Jerry Day of McKesson will speak about improving your sql with an eye towards performance tuning, aggregate reporting, and overall maintenance improvement. Microsoft SQLServer 2008 is the topic database but the discussion will center on ANSI SQL.
Source Control for the Home User
Matt Balent will demonstrate the use of WIzsource, a full featured source control system available from TopWiz Software, which is free for single use. Written in Powerbuilder, it supports the SCC API and can be used with SQL Anywhere, Sybase ASE, Microsoft SQL Server, and Oracle 9/10.
Register: http://my.isug.com/e/in/eid=127
Tags:
application development,
charlotte,
database performance,
datawindow,
DBMS performance,
ISUG,
McKesson,
nc,
north carolina,
pb12,
pb12.5,
powerbuilder,
PowerBuilder 12,
PowerBuilder 12.5,
SAP,
source control,
Sybase,
user group No Comments »