Author: | Rene Bajarias (08 jul 2000) |
Accessed: | |
Download: | (dwbuttons.zip,6Kb) |
Creating Command Buttons on a DataWindow
Still using PB 5.x and wishing it had the ability to drop command buttons on a datawindow? Well, with a little bit of tweaking, you can simulate command buttons in a datawindow - be it a freeform or a tabular type of dataobject. Here's how:
Create a new application called dwbutton.pbl | |
Create an application object called dwbutton. Click on "No" to prevent
PowerBuilder from generating an application template. | |
Create a new datawindow object with "External" (although it can also have
Tables as its data source) as its Data Source and "Tabular" (it can also be
"Freeform" or whatever) as its Presentation Style. Click OK. In the Result Set
Description window, type the following column name and its data type: flag number Click OK. Within this dataobject, create a text object in the Detail band with a text of "Click Me!". Name this text object "button1_t". Change the Border property of this text object to "3D Raised". Set the background color to "ButtonFace". Click OK. Set the Tab Order of the "flag" column to 0. Set the color of the dataobject to "ButtonFace" also. Save this dataobject as "d_dwbutton". | |
Create a new window and drop a datawindow control object on it. Assign the dataobject
that we just made (d_dwbutton) as its DataWindow Object Name. Resize the datawindow
control so that it nicely reveals the underlying dataobject. Declare a user event for this
datawindow control called "ue_lbuttonup" with "pbm_dwnlbuttonup" as
the Event ID. Click OK. In the "clicked" event of this datawindow control, type:string ls_x IF dwo.Name = 'button1_t' THEN Object.flag[row] = 1 ls_x = Modify("button1_t.Border='0~tIf(flag=1, 5, 6)'") IF Trim(ls_x) <> '' THEN MessageBox('Error', ls_x) END IF | |
Then in the "ue_lbuttonup" event of this same datawindow control, type:Object.flag[GetRow()] = 0 Object.button1_t.Border = '6' IF Pos(GetObjectAtPointer(), 'button1_t' ) > 0 THEN Beep(1) // Place whatever code you might want to do here. END IF | |
In the "Open" event of the new window, type:int li_i dw_1.SetTransObject(SQLCA) FOR li_i = 1 TO 5 dw_1.InsertRow(0) NEXT Save this new window as "w_dwbutton". | |
In the "Open" event of the application, type: | |
Finally, run the application. Using basically the same technique, you can also have picture buttons in a datawindow object. Rene can be reached at rene_bajarias@hotmail.com. |