Datawindow Buttons in PB5 (Rene Bajarias)

Back Up Next

Author: Rene Bajarias (08 jul 2000)
Accessed:
Download: Download dwbutton.zip (6Kb) (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:

Open(w_dwbutton)

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.

 

Back Up Next