<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Venkatesh Jonnagadla</title>
    <description>The latest articles on DEV Community by Venkatesh Jonnagadla (@vjonnagadla).</description>
    <link>https://dev.to/vjonnagadla</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3596870%2Fdb2a26f6-dedd-41de-a799-5e1c6423e9fb.jpg</url>
      <title>DEV Community: Venkatesh Jonnagadla</title>
      <link>https://dev.to/vjonnagadla</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vjonnagadla"/>
    <language>en</language>
    <item>
      <title>SSIS - Send HTML Email from SSIS Job using DTSX package</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Mon, 10 Nov 2025 15:05:38 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/ssis-send-html-email-from-ssis-job-using-dtsx-package-20n2</link>
      <guid>https://dev.to/vjonnagadla/ssis-send-html-email-from-ssis-job-using-dtsx-package-20n2</guid>
      <description>&lt;p&gt;When you are working in automating the reports you often require sending the result sets as part of the email body. Unfortunately, there is no direct way in SSIS to do so. We need to use some trick to achieve this. &lt;br&gt;
First take the result set into a package variable (ex-gStrResultSet). You must be using the execute sql task for this. The query in the execute sql task should return the XML form of the table. For which you need to use the below format for your query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select
(select COL1 as td for XML path(''),type),
(select COL2 as td for XML path(''),type),
(select COL3 as td for XML path(''),type),
(select COL4 as td for XML path(''),type)
from
(SELECT COL1,COL2,COL3,COL4
FROM   dbo.Table
) tbl
FOR XML PATH('tr')

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you need to send the XML table as part of the email body along with the other text you need. As the email body is of HTML, you need to make changes in such a way that XML output fits into the HTML body of the email. The sample code(C# &amp;amp; HTML) goes like below-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public void Main()
                        {
            try
            {
                var emailBody = "&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;" +
                    "&amp;lt;p&amp;gt; Hi ,&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Please find the table as HTML Report below.&amp;lt;br&amp;gt;&amp;lt;/p&amp;gt;" +                    
                    @"&amp;lt;table border=""1"" cellpadding=""2"" style=""border-collapse: collapse;""&amp;gt;" +
                    @"&amp;lt;tr style=""color:black;background-color:skyblue;""&amp;gt;" +
                    "&amp;lt;th&amp;gt; COL1 &amp;lt;/th&amp;gt;" +
                    "&amp;lt;th&amp;gt; COL2 &amp;lt;/th&amp;gt;" +                    
                    "&amp;lt;th&amp;gt; COL3 &amp;lt;/th&amp;gt;" +
                    "&amp;lt;th&amp;gt; COL4 &amp;lt;/th&amp;gt;" +                   
                    "&amp;lt;/tr&amp;gt;";

                // Ensure variable exists and is not null
                var htmlTable = Dts.Variables["User::gStrResultSet"].Value?.ToString() ?? "";
                emailBody += htmlTable.Replace("&amp;lt;ROOT&amp;gt;", "").Replace("&amp;lt;/ROOT&amp;gt;", "");
                emailBody += "&amp;lt;/table&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;p&amp;gt;Regards,&amp;lt;br&amp;gt;SSIS Job&amp;lt;/p&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;";

                string smtpServer = "Test.orgnaization.COM"; // get it from your organization
                int smtpPort = 25;


                string reportTitle = "HTML Report";
                string todayDate = DateTime.Now.ToString("MM/dd/yyyy");
                string subject = $"{reportTitle} - {todayDate}";


                string senderEmail = notification@organization.com;
                string recipientEmail = recipient@organization.com;


                MailMessage mail = new MailMessage(senderEmail, recipientEmail, subject, emailBody)
                {
                    IsBodyHtml = true
                };

                SmtpClient smtpClient = new SmtpClient(smtpServer, smtpPort)
                {
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = true
                };
                mail.To.Add(toaddress1@organization.com);
                mail.To.Add(toaddress2@organization.com);                

                mail.CC.Add(ccAddress1@organization.com);
                mail.CC.Add(ccAddress2@organization.com);

                smtpClient.Send(mail);
                Dts.TaskResult = (int)ScriptResults.Success;

            }
            catch (Exception ex)
            {
                Dts.TaskResult = (int)ScriptResults.Failure;
            }            
                        }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hope this helps!!!! Thank you!!!!!!!!!&lt;/p&gt;

</description>
      <category>ssis</category>
      <category>sqlserver</category>
      <category>sqlserverintegrationservices</category>
    </item>
    <item>
      <title>PowerBuilder - Connect to MS SQL Server</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Mon, 10 Nov 2025 10:24:10 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-connect-to-ms-sql-server-202</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-connect-to-ms-sql-server-202</guid>
      <description>&lt;p&gt;You can connect to Microsoft SQL Server from PowerBuilder in different ways.&lt;br&gt;
1/ Using SQL Native Client Provide &lt;br&gt;
2/ Using SQL OLEDB Provider&lt;br&gt;
3/ Creating a DSN and using ODBC driver&lt;br&gt;
4/ Using ODBC and default SQL Server provider provided in windows machines&lt;/p&gt;

&lt;p&gt;Using SQL Native Client&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Using SQL Native Client
SQLCA.DBMS = "SNC SQL Native Client(OLE DB)" or "SNC"
//Using OLEDB Provider
SQLCA.DBMS = "MSOLEDB" 
// below All parameters will be same
SQLCA.Database = "YourDatabase"
SQLCA.ServerName = "YourServer"
SQLCA.LogId = "your_username"
SQLCA.LogPass = "your_password"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Provider='SQLNCLI11',Database='YourDatabase',TrimSpaces=1,StaticBind=0"
If it uses windows authentication, you need to add this parameter and don't use the LogID and LogPass
SQLCA.DBParm = "Provider='SQLNCLI11',Database='YourDatabase',TrimSpaces=1,StaticBind=0,TrustedConnection=1"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;// Using ODBC Provider&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SQLCA.DBMS = "ODBC"
SQLCA.ServerName = "YourServer"
SQLCA.dbparm="ConnectString='Driver={SQL Server};Server=myServerAddress;Database=myDataBase;PORT=portno;Trusted_Connection=Yes;'"
// If you are using SQL authentication
SQLCA.dbparm="ConnectString=Driver='{SQL Server};Server=myServerName,myPortNumber;Database=myDataBase;Uid=myUsername;Pwd=myPassword;'"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;// Also using the ODBC provider you can connect to sqlserver with different types of middleware software like below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm="ConnectString='DRIVER={SQL Server};SERVER=servername;DATABASE=DBNAME;PORT=1435;PROTOCOL=TCPIP;Trusted_Connection=yes'"
SQLCA.DBParm="ConnectString='Driver={ODBC Driver 17 for SQL Server};Server=servername;Database=DBNAME;Trusted_Connection=yes;'"
SQLCA.DBParm="ConnectString='Driver={SQL Server Native Client 11.0};Server=servername;Database=DBNAME;Trusted_Connection=yes;'"
Connect using SQLCA;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use the reference - &lt;a href="https://www.connectionstrings.com/microsoft-sql-server-odbc-driver/" rel="noopener noreferrer"&gt;https://www.connectionstrings.com/microsoft-sql-server-odbc-driver/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please make sure you are including the related DLL in the build &lt;br&gt;
for SNC you need to include - pbsnc.dll for oledb- pbmsoledbsql.dll&lt;/p&gt;

</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>PowerBuilder - select multiple rows on datawindow</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Fri, 07 Nov 2025 17:27:17 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-select-multiple-rows-on-datawindow-34oo</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-select-multiple-rows-on-datawindow-34oo</guid>
      <description>&lt;p&gt;On Datawindow clicked event -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if row&amp;gt;0 then
    if keydown(keycontrol!) then
        this.selectrow(row,true) 
        Else
            this.selectrow(0,false)
            this.selectrow(row,true)
    end if 
    if keydown(keyshift!) then
        this.event trigger ue_shift(row)
    end if
end if
li_selectedrow=row
this.setrow(row) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Custom event code ue_shift&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;long ll_oldrow,ll_newrow,ll_counter,ll_startrow,ll_endrow
ll_oldrow=li_selectedrow 

if ll_oldrow&amp;gt;al_row then
    ll_startrow=al_row
    ll_endrow=ll_oldrow
else
    ll_startrow=ll_oldrow
    ll_endrow=al_row
end if

for ll_counter=ll_startrow to ll_endrow step 1
    this.selectrow(ll_counter,true)
Next

this.setrow(al_row)
this.setcolumn(1)


return 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thank you!!&lt;/p&gt;

</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>PowerBuilder - Disable Copy Paste on a dataWindow</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Fri, 07 Nov 2025 17:23:35 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-disable-copy-paste-on-a-datawindow-mhb</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-disable-copy-paste-on-a-datawindow-mhb</guid>
      <description>&lt;p&gt;create a event and map to pbm_keydown on a datawindow to disable copy paste (you can customize according to the columns)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;boolean lb_1
string ls_colname

lb_1 = true 

IF lb_1 and KeyDown(KeyControl!) and KeyDown(65 ) THEN 

    messageBox("Info","Copy/Paste Disabled")

    ls_colname = this.getcolumnname( )

    If ls_colname ="lanme" then
        messageBox("Info","Copy/Paste Disabled on last name" )
    end if

END IF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>PowerBuilder - TreeView Control</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Fri, 07 Nov 2025 17:14:11 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-treeview-control-1i2m</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-treeview-control-1i2m</guid>
      <description>&lt;p&gt;Here is an example of Treeview control code -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;integer li_a,li_b,li_c
long ll_level2
// First level Operationsw
li_a=tv_test.insertitemlast(0," First Generation",1)
li_b=tv_test.insertitemlast(0," Second Generation",1)
li_c=tv_test.insertitemlast(0," Third Generation",1)

// Second level under the First Generation i.e., li_a
tv_test.insertitemlast(li_a,"1G-1stItem",2)
tv_test.insertitemlast(li_a,"1G-2ndItem",2)

// Second level under the Second Generation i.e., li_b
tv_test.insertitemlast(li_b,"2G-1stItem",2)
ll_level2=tv_test.insertitemlast(li_b,"2G-2ndItem",2)
tv_test.insertitemlast(li_b,"2G-3ndItem",2)
tv_test.insertitemlast(li_b,"2G-4ndItem",2)
tv_test.insertitemlast(li_b,"2G-5ndItem",2)
tv_test.insertitemlast(li_b,"2G-6ndItem",2)

// sub level under second generation
tv_test.insertitemlast( ll_level2, "2G-2nItem-1SubItem", 3)


tv_test.insertitemlast(li_c,"3G-1stItem",2)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To view the level and lable of the item you have clicked on a tree view control - &lt;/p&gt;

&lt;p&gt;Selection Changed/Clicked on TreeView -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;treeviewitem tvi_tvitem

//set treeview item here below
tv_test.getitem( newhandle, tvi_tvitem)

Messagebox(" Level of the treeview selected item ",String(tvi_tvitem.level))
Messagebox("Lable of the treeview Selected Item",tvi_tvitem.label)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thank you!!!!!!&lt;/p&gt;

</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>PowerBuilder - Custom window for DW properties</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Fri, 07 Nov 2025 17:00:35 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-custom-window-for-dw-properties-2dee</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-custom-window-for-dw-properties-2dee</guid>
      <description>&lt;p&gt;If you are utilizing PFC or any custom datawindow object in your project, this will be extremely beneficial.&lt;/p&gt;

&lt;p&gt;You have the ability to create a custom event on the datawindow and associate it with any of the shortcuts such as Ctrl+Shift+P or similar, allowing a new window to open that displays all the properties of the datawindow. The code I am presenting here is fundamental, but you can modify it to suit your requirements. Please note that you must create window based on the variables I used in the below code.&lt;/p&gt;

&lt;p&gt;Initially, pass the datawindow for which you wish to display properties from an event or function as illustrated below -&lt;br&gt;
&lt;code&gt;openwithparm(w_dwproperties,this)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;design w_dwproperties according to the variables in below code - &lt;/p&gt;

&lt;p&gt;in the w_dwproperties open() event  -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;powerobject lpo_arg
datawindow ldw_arg
string ls_colcount,ls_colname,ls_concatstr
int li_counter

lpo_arg=Message.powerobjectparm

if lpo_arg.typeof( )=datawindow! then
    ldw_arg=lpo_arg
    sle_1.text=ldw_arg.dataobject
    sle_2.text=ldw_arg.classname( )
    mle_1.text=ldw_arg.describe('datawindow.table.select')
    ls_colcount=ldw_arg.describe( "DataWindow.Column.Count")
    for li_counter=1 to integer(ls_colcount)
            ls_concatstr='#'+string(li_counter)+'.name'
            ls_colname=ldw_arg.describe(ls_concatstr)
            ddlb_1.additem(ls_colname)
    next
else

end if
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hope this helps!!!!!Thank you!!!!!!!!!!!&lt;/p&gt;

</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>PowerBuilder - Popup Menu</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Fri, 07 Nov 2025 16:49:35 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-popup-menu-320</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-popup-menu-320</guid>
      <description>&lt;p&gt;You will observe this on the data windows. By right-clicking on a data window, you will see options to insert or delete rows, as well as to trigger certain custom events within the data window. This functionality can also be applied to the windows. Here is an example.&lt;/p&gt;

&lt;p&gt;1/ Create menu m_popupmenu &lt;br&gt;
2/ If you are going to use it on datawindow then declare instance variable like below &lt;br&gt;
&lt;code&gt;protected: &lt;br&gt;
datawindow idw_datawindow&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;in the menuitem's clicked event - modify accordingly&lt;br&gt;
&lt;code&gt;idw_datawindow.event dynamic ue_insert()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;3/ On datawindow rbuttondown(map it accordingly)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;m_popup lm_popup
lm_popup=create m_popup
lm_popup.idw_datawindow=this
lm_popup.popmenu( this.pointerx( )+10,this.pointery( )+10)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you must have the ue_insert() created at dw level&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int li_i

li_i=this.insertrow(0)
this.scrolltorow( li_i)
if li_i&amp;lt;0 then
    MessageBox("Error - Insert","Error is ~n"+SQLCa.sqlerrtext)
end if
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hope this helps!!!!!!!!!!!!!!!!!!!!!!!!!!!! Thank you!!!&lt;/p&gt;

</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>PowerBuilder - Dynamic Search in datawindow</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Wed, 05 Nov 2025 18:27:42 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-dynamic-search-in-datawindow-254</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-dynamic-search-in-datawindow-254</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Create an event ue_search and map to pbm_enchange event of sle_search on a window, where sle_search is where you enter the text based on which you want to search column data on a datawindow&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;in the ue_search event write below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;string ls_sc

if trim(this.text)='' then
    dw_1.setfilter('')
    dw_1.filter()
else           
    ls_sc="lower(item_name) like '%"+lower(this.text)+"%'"
    dw_1.setfilter(ls_sc)
    dw_1.filter()
end if
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>PowerBuilder - Dynamically Disable/access controls on a Window</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Wed, 05 Nov 2025 14:28:19 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-dynamically-disableaccess-controls-on-a-window-4efg</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-dynamically-disableaccess-controls-on-a-window-4efg</guid>
      <description>&lt;p&gt;Create a global function and pass the window to the function to achieve the same. Or you can create a window function also to achieve the same&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int li_counter
DataWindow               ldw_DataWindow
CommandButton                     lcb_CommandButton
StaticText                     lst_StaticText
singleLineEdit              ls_singleLineEdit
checkbox                     lcb_checkbox
picturebutton              lpb_picturebutton
editmask                     lem_editmask
dropdownlistbox                      lddlb_dropdownlistbox
userObject luo_userobject
radioButton     lrb_radiobutton
groupBox         lgb_groupBox


for li_counter = 1 to upperbound(control[] )  
            choose case TypeOf(this.control[li_counter])
                        case DataWindow!
                                    ldw_DataWindow = this.control[li_counter]
                                    ldw_DataWindow.enabled = false                  
                        case CommandButton!                                   
                                    if this.control[li_counter].classname() &amp;lt;&amp;gt; 'cb_cancel' then
                                                lcb_CommandButton = this.control[li_counter]
                                                lcb_CommandButton.enabled = false
                                    end if
                        case StaticText!
                                    lst_StaticText = this.control[li_counter]
                                    lst_StaticText.enabled = false
                                    lst_StaticText.textColor= 134217745 //Disabled Text Color
                        case singleLineEdit!
                                    ls_singleLineEdit = this.control[li_counter]
                                    ls_singleLineEdit.enabled = false
                        case checkbox!
                                    lcb_checkbox = this.control[li_counter]
                                    lcb_checkbox.enabled = false
                        case picturebutton!
                                    lpb_picturebutton = this.control[li_counter]
                                    lpb_picturebutton.enabled = false
                        case editmask!
                                    lem_editmask = this.control[li_counter]
                                    lem_editmask.enabled = false
                        case dropdownlistbox!
                                    lddlb_dropdownlistbox = this.control[li_counter]      
                                    lddlb_dropdownlistbox.enabled = false
                        case userobject!
                                    luo_userobject = this.control[li_counter]       
                                    luo_userobject.enabled = false
                        case radiobutton!
                                    lrb_radiobutton = this.control[li_counter]      
                                    lrb_radiobutton.enabled = false
                        //case groupbox!
                                    //lgb_groupBox = this.control[li_counter]      
                                    //lgb_groupBox.enabled = false
                                    //lgb_groupBox.textcolor = 134217745
            end choose      
next

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>powerbuilder</category>
    </item>
    <item>
      <title>Powerbuilder - Get windows login</title>
      <dc:creator>Venkatesh Jonnagadla</dc:creator>
      <pubDate>Wed, 05 Nov 2025 12:26:35 +0000</pubDate>
      <link>https://dev.to/vjonnagadla/powerbuilder-get-windows-login-6jc</link>
      <guid>https://dev.to/vjonnagadla/powerbuilder-get-windows-login-6jc</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create Global External Function 

FUNCTION Boolean GetUserName ( &amp;amp;
    REF String lpBuffer, &amp;amp;
    REF UnsignedLong nSize &amp;amp;
) LIBRARY "ADVAPI32.DLL" ALIAS FOR "GetUserNameA;Ansii"

// This DLL is windows DLL and will be available in all windows machines

This should be in windows events

// Declare local variables
String ls_userName
UnsignedLong lul_size = 256 // Start with a sufficient buffer size
Boolean lb_rc

// Initialize the string buffer with spaces
ls_userName = Space(256)

// Call the Windows API function
lb_rc = GetUserName(ls_userName, lul_size)

// Check the return code and extract the user ID
If lb_rc Then  
    MessageBox('User ID', 'User ID is: ' + ls_userName)
Else
    // Handle error (e.g., the buffer was too small, although 256 is usually plenty)
    MessageBox('Error', 'Failed to retrieve Windows User ID.')
End If

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>api</category>
      <category>microsoft</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
