1. Richard Hartman
  2. PowerBuilder
  3. Tuesday, 12 May 2026 12:05 AM UTC


I am trying to alter the Y position of a control.   I am working with an inherited project.  If I am missing something "obvious" it's because I have been picking powerbuilder up on the fly.   Also ... the people who created it had a number of ... questionable architectural decisions which make dealing with what should be a simple matter quite difficult (more on those choices later).



The controls are named "cb_next" and "cb_back".  I will just be referring to "cb_next" for the rest of this question.

The source file at issue is: w_equipment_maint_inst.srw

So, in the painter, the controls do not exist.  They are dynamically created in the create handler:


on w_equipment_maint_inst.create
int iCurrent
call super::create
if this.MenuName = "m_detail_maint" then this.MenuID = create m_detail_maint
this.dw_folder=create dw_folder
this.cb_back=create cb_back
this.cb_next=create cb_next
iCurrent=UpperBound(this.Control)
this.Control[iCurrent+1]=this.dw_folder
this.Control[iCurrent+2]=this.cb_back
this.Control[iCurrent+3]=this.cb_next
end on

 

Note that the Y position is not set at create time.   Nooooo.  That would be too easy.   First: they are declared here:

global type w_equipment_maint_inst from w_main_std
integer x = 23
integer y = 288
integer width = 2848
integer height = 1568
string title = "Maintain Equipment"
string menuname = "m_detail_maint"
event ue_postopen pbm_custom03
event ue_open_busyout_equip pbm_custom01
event ue_open_equip_port_assign pbm_custom02
event ue_refresh_status pbm_custom04
event ue_disable pbm_custom05
event ue_update_success pbm_custom06
event ue_copy_equipment pbm_custom07
dw_folder dw_folder
cb_back cb_back
cb_next cb_next
end type

 

Please note that the absolute walnuts that created this code liked to use the same symbol for the class as for the instance.  That doesn't make figuring things out more difficult now, does it?

Anyway, so we have object cb_next being declared of type cb_next.  Which is defined here:

type cb_next from uo_cb_fc_next within w_equipment_maint_inst
    boolean visible = false
    integer x = 1353
    integer y = 1184
    integer height = 88
    integer taborder = 10
end type

 

And now we see where the Y position is set.  In the SUB CLASS DEFINITION.  Not in the painter.  Not in the create handler.  All of the code snippets I have pasted here come from the same .srw source file.  But editing this position in the source file outside of the IDE would not be the correct way of handling things.   There must be some way of getting to the innards of the cb_next TYPE (as opposed to the cb_next INSTANCE) ... but I do not know how to call that up in the painter.

Does anybody know how I can get at that Y position "the right way" (as opposed to just editing the .srw file outside of the IDE) ?

Or ... do you need me to provide more information that I have?  Feel free to ask questions.


Oh, my summary of the questionable choices I see in this particular problem:

1) reusing the same symbol for a type name and an instance name

2) setting the position in the type definitions instead of in the painter for a control or (worst case) in the code after creating the control dynamically.

But maybe that's just me....


Responses (4)
  1. Likes
  2. Latest
  3. Oldest
Loading...

Find Questions by Tag

.EXE .NET 6.0 .NET Assembly .NET Core 3.1 .NET Core Framework .NET DataStore .NET Std Framework 32-bit 64-bit ADO.NET AEM AI Algorithm Amazon AWS Android Apache API APK App Store App Store (Apple) Appeon Workspace Appeon Xcelerator Plug-in Architecture Array ASE Asynchronous Methods Authentication AutoBuild AutoCompiler Automated Testing Automation AutoScript Azure Barcode Base64 Batch BigData BLOB Branch & Merge Browser Bug Build Button C# C# Class Importer C# Editor C# Model generator Calendar Camera Certificate Chrome Citrix Class Client Client/Server Cloud Cluster Collection COM Command Line Compiler Compression Computed Field Configuration Controls Cookies Cordova Crash Cross-Platform Crosstab CSharpAssembly CSharpObject CSS CSV Cursor Data Database Database Driver Database Painter Database Profile Database Provider DataObject DataSource DataStore DataStore (C#) DataStore (PS) DataType DataWindow DATE DATETIME DB2 Debug Debugger Debugging Deployment Design DLL DO-WHILE Dockable Docker Documentation DOUBLE Download DPI DragDrop Edge Edit Style Editor Elevate Conference Email Embedded SQL Emulator Encoding Encryption Enhancement Request Entity Entity Framework ERP Error Event Event Handler Event Handling Excel Exception Export Expression External Functions F# Field File File Access Filter Firefox Firewall Font FOR-NEXT Foreground Format Function Garbage Collection GeoLocation Git Graph HANA Hash Header HTML/5 HTTP/S HTTPClient Icon IDE Identity IIS IMAPI Import InfoMaker Inheritance Installation Integer IntelliSense Interface Internet Internet Explorer iOS IPA iPad iPhone IWA J# Java JavaScript JBoss JDBC JOIN JSON JSONGenerator JSONParser Kestrel Label Lambda Large File LDAP Library License LINQ Linux OS Load Balancing Localization Localized PBVM Log In Log Out Logging LONG LONGLONG macOS MAPI Maps MDI Memory Memory Leak Menu Merge MessageBox Messagging Method Migration MIME TYPE Mobile Model ModelStore ModelStore (C#) MSOLEDBSQL Multi Threading MVC MySQL n-Tier Namespace NativePDF Nube NVO OAuth ODATA ODBC Office Offline OLE OLEDB Online Open Source OpenAPI OpenSSL Oracle OrcaScript Other Outlook Output Package Parameter Patch PayPal PB Classic PB Native PB.NET PBC PBD PBDOM PBG PBJVM PBL PBNI PBORCA PBVM PBX PDF Performance Permission PFC Picture Pipeline Play Store (Google) Plugin Popup Port POST PostgreSQL PowerBuilder PowerBuilder (Appeon) PowerBuilder (SAP) PowerBuilder Compiler PowerBuilder Runtime PowerClient PowerScript (PS) PowerScript IDE PowerScript Migrator PowerServer PowerServer Mobile PowerServer Toolkit PowerServer Web PowerServerLabel Print Properties Proxy Publish PULL PUSH Query Regression Release Renew Resize Response REST Retrieve RibbonBar RibbonBar Builder RibbonView Rich Text Roadmap RPC Runtime Packager SaaS Scaffolding Script SDI SDK Security Server Service Session Single Sign-on Size SMTP SMTPClient SnapDevelop SOAP Solution Sort Source Code Speech Recognition SQL SQL Anywhere SQL Server SqlBuilder SqlExecutor SQLite SqlModelMapper Storage Stored Procedure Subscription SVN Swagger Syntax TabbedBar TabbedView Tablet TabPage Target TE Control Testing Text TFS Theme TIME Timer TLS/SSL Tomcat TortoiseGit TortoiseSVN Transaction Transparency Trial Trigger TRY-CATCH TX Control Type UI ULONG UltraLite Uninstall Unit Test Unit Testing UNIX OS Update Upgrade Upload URL User Center User Object UWP Validation VARCHAR Variable Versioning Visual Studio Visual Studio Code VM Voice Warning WCF Web API Web Extensions Web Service WebBrowser WebForms WebLogic WebSphere WildFly WinAPI Window Windows OS WinForms Wizard Workgroup Workspace WPF XCODE XHTML XML Zoom

Helpful?

If a reply or comment is helpful for you, please don’t hesitate to click the Helpful button. This action is further confirmation of their invaluable contribution to the Appeon Community.