PWCT 1.9 Art Documentation ( http://doublesvsoop.sourceforge.net )

2006-2019, Mahmoud Fayed ( msfclipper@users.sourceforge.net )

_____________________________________________________________________________________

Table of contents

1 - Introduction

2 - Implementation steps

3 - Final Steps Tree

4 - Application during the runtime

1 - Introduction

When you need to save files inside a database you will need to convert files to a stream then saving

that stream into the database.

To restore files from the database you need to read a stream from the database then convert that stream to a file.

In this lesson we are going to learn how to convert a file to a stream and how to convert a stream to a file.

In our sample the application will ask the user to select an image file then the application will convert the

selected image file to stream, after that the application will ask the user to determine the name of a new image file

then the application will convert the stream to the new image file determined by the user.

Note : We are not restricted with image files as a type because the conversion process can be done on any file

regardless of it's type (image, sound, video, ...etc) , i.e. you can use this technique to store any file inside

a database.

2 - Implementation Steps

s1.JPG

Fig. (1) Goal Desginer - Steps Tree

Select the step (The First Step)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Windows)

                3 - Select the component (Define New Window)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Define New Window)

                Note : Stop typing when you see the required component is selected

s2.JPG

Fig. (2) Component Browser – Select the component (Define New Window)

After selecting the component click Ok or press ENTER

s3.JPG

Fig. (3) Interaction page - Set the properties and enter the required data as in the image above

s4.JPG

Fig. (4) Form Designer

s5.JPG

Fig. (5) Goal Desginer - Steps Tree

Select the step (Window Properties)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Windows)

                3 - Select the component (Window Class)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Window Class)

                Note : Stop typing when you see the required component is selected

s6.JPG

Fig. (6) Component Browser – Select the component (Window Class)

After selecting the component click Ok or press ENTER

s7.JPG

Fig. (7) Interaction page - Set the properties and enter the required data as in the image above

s8.JPG

Fig. (8) Interaction page - Set the properties and enter the required data as in the image above

s9.JPG

Fig. (9) Interaction page - Set the properties and enter the required data as in the image above

s10.JPG

Fig. (10) Form Designer

s11.JPG

Fig. (11) Goal Desginer - Steps Tree

Select the step (Window Controls)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Controls)

                3 - Select the component (Button)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Button)

                Note : Stop typing when you see the required component is selected

s12.JPG

Fig. (12) Component Browser – Select the component (Button)

After selecting the component click Ok or press ENTER

s13.JPG

Fig. (13) Interaction page - Set the properties and enter the required data as in the image above

s14.JPG

Fig. (14) Form Designer

s15.JPG

Fig. (15) Goal Desginer - Steps Tree

Select the step (Button Events)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Events)

                3 - Select the component (Button Events)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Button Events)

                Note : Stop typing when you see the required component is selected

s16.JPG

Fig. (16) Component Browser – Select the component (Button Events)

After selecting the component click Ok or press ENTER

s17.JPG

Fig. (17) Interaction page - Set the properties and enter the required data as in the image above

s18.JPG

Fig. (18) Goal Desginer - Steps Tree

Select the step (Window Controls)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Controls)

                3 - Select the component (Button)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Button)

                Note : Stop typing when you see the required component is selected

s19.JPG

Fig. (19) Component Browser – Select the component (Button)

After selecting the component click Ok or press ENTER

s20.JPG

Fig. (20) Interaction page - Set the properties and enter the required data as in the image above

s21.JPG

Fig. (21) Form Designer

s22.JPG

Fig. (22) Goal Desginer - Steps Tree

Select the step (Button Events)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Events)

                3 - Select the component (Button Events)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Button Events)

                Note : Stop typing when you see the required component is selected

s23.JPG

Fig. (23) Component Browser – Select the component (Button Events)

After selecting the component click Ok or press ENTER

s24.JPG

Fig. (24) Interaction page - Set the properties and enter the required data as in the image above

s25.JPG

Fig. (25) Goal Desginer - Steps Tree

Select the step (The First Step)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Structure Programming)

                3 - Select the component (Define Procedure)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Define Procedure)

                Note : Stop typing when you see the required component is selected

s26.JPG

Fig. (26) Component Browser – Select the component (Define Procedure)

After selecting the component click Ok or press ENTER

s27.JPG

Fig. (27) Interaction page - Set the properties and enter the required data as in the image above

s28.JPG

Fig. (28) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Files / Folders)

                3 - Select the component (Get File)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Get File)

                Note : Stop typing when you see the required component is selected

s29.JPG

Fig. (29) Component Browser – Select the component (Get File)

After selecting the component click Ok or press ENTER

s30.JPG

Fig. (30) Interaction page - Set the properties and enter the required data as in the image above

s31.JPG

Fig. (31) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Files / Folders)

                3 - Select the component (Check File)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Check File)

                Note : Stop typing when you see the required component is selected

s32.JPG

Fig. (32) Component Browser – Select the component (Check File)

After selecting the component click Ok or press ENTER

s33.JPG

Fig. (33) Interaction page - Set the properties and enter the required data as in the image above

s34.JPG

Fig. (34) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Control Structure)

                3 - Select the component (IF Statement)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (IF Statement)

                Note : Stop typing when you see the required component is selected

s35.JPG

Fig. (35) Component Browser – Select the component (IF Statement)

After selecting the component click Ok or press ENTER

s36.JPG

Fig. (36) Interaction page - Set the properties and enter the required data as in the image above

s37.JPG

Fig. (37) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Structure Programming)

                3 - Select the component (Call Function)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Call Function)

                Note : Stop typing when you see the required component is selected

s38.JPG

Fig. (38) Component Browser – Select the component (Call Function)

After selecting the component click Ok or press ENTER

s39.JPG

Fig. (39) Interaction page - Set the properties and enter the required data as in the image above

s40.JPG

Fig. (40) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Files / Folders)

                3 - Select the component (Put File)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Put File)

                Note : Stop typing when you see the required component is selected

s41.JPG

Fig. (41) Component Browser – Select the component (Put File)

After selecting the component click Ok or press ENTER

s42.JPG

Fig. (42) Interaction page - Set the properties and enter the required data as in the image above

s43.JPG

Fig. (43) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Control Structure)

                3 - Select the component (IF Statement)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (IF Statement)

                Note : Stop typing when you see the required component is selected

s44.JPG

Fig. (44) Component Browser – Select the component (IF Statement)

After selecting the component click Ok or press ENTER

s45.JPG

Fig. (45) Interaction page - Set the properties and enter the required data as in the image above

s46.JPG

Fig. (46) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Structure Programming)

                3 - Select the component (Call Function)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Call Function)

                Note : Stop typing when you see the required component is selected

s47.JPG

Fig. (47) Component Browser – Select the component (Call Function)

After selecting the component click Ok or press ENTER

s48.JPG

Fig. (48) Interaction page - Set the properties and enter the required data as in the image above

s49.JPG

Fig. (49) Goal Desginer - Steps Tree

Select the step (The First Step)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Structure Programming)

                3 - Select the component (Define Function)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Define Function)

                Note : Stop typing when you see the required component is selected

s50.JPG

Fig. (50) Component Browser – Select the component (Define Function)

After selecting the component click Ok or press ENTER

s51.JPG

Fig. (51) Interaction page - Set the properties and enter the required data as in the image above

s52.JPG

Fig. (52) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Structure Programming)

                3 - Select the component (Scope of Variable)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Scope of Variable)

                Note : Stop typing when you see the required component is selected

s53.JPG

Fig. (53) Component Browser – Select the component (Scope of Variable)

After selecting the component click Ok or press ENTER

s54.JPG

Fig. (54) Interaction page - Set the properties and enter the required data as in the image above

s55.JPG

Fig. (55) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s56.JPG

Fig. (56) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s57.JPG

Fig. (57) Interaction page - Set the properties and enter the required data as in the image above

s58.JPG

Fig. (58) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s59.JPG

Fig. (59) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s60.JPG

Fig. (60) Interaction page - Set the properties and enter the required data as in the image above

s61.JPG

Fig. (61) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s62.JPG

Fig. (62) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s63.JPG

Fig. (63) Interaction page - Set the properties and enter the required data as in the image above

s64.JPG

Fig. (64) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s65.JPG

Fig. (65) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s66.JPG

Fig. (66) Interaction page - Set the properties and enter the required data as in the image above

s67.JPG

Fig. (67) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s68.JPG

Fig. (68) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s69.JPG

Fig. (69) Interaction page - Set the properties and enter the required data as in the image above

s70.JPG

Fig. (70) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s71.JPG

Fig. (71) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s72.JPG

Fig. (72) Interaction page - Set the properties and enter the required data as in the image above

s73.JPG

Fig. (73) Goal Desginer - Steps Tree

Select the step (The First Step)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Structure Programming)

                3 - Select the component (Define Function)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Define Function)

                Note : Stop typing when you see the required component is selected

s74.JPG

Fig. (74) Component Browser – Select the component (Define Function)

After selecting the component click Ok or press ENTER

s75.JPG

Fig. (75) Interaction page - Set the properties and enter the required data as in the image above

s76.JPG

Fig. (76) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Structure Programming)

                3 - Select the component (Scope of Variable)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (Scope of Variable)

                Note : Stop typing when you see the required component is selected

s77.JPG

Fig. (77) Component Browser – Select the component (Scope of Variable)

After selecting the component click Ok or press ENTER

s78.JPG

Fig. (78) Interaction page - Set the properties and enter the required data as in the image above

s79.JPG

Fig. (79) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s80.JPG

Fig. (80) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s81.JPG

Fig. (81) Interaction page - Set the properties and enter the required data as in the image above

s82.JPG

Fig. (82) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s83.JPG

Fig. (83) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s84.JPG

Fig. (84) Interaction page - Set the properties and enter the required data as in the image above

s85.JPG

Fig. (85) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s86.JPG

Fig. (86) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s87.JPG

Fig. (87) Interaction page - Set the properties and enter the required data as in the image above

s88.JPG

Fig. (88) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s89.JPG

Fig. (89) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s90.JPG

Fig. (90) Interaction page - Set the properties and enter the required data as in the image above

s91.JPG

Fig. (91) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s92.JPG

Fig. (92) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s93.JPG

Fig. (93) Interaction page - Set the properties and enter the required data as in the image above

s94.JPG

Fig. (94) Goal Desginer - Steps Tree

Select the step (Start Here)

We will start now new interaction process to generate new steps to our steps tree.

The slow way (Using Mouse):

                1 - Click Interact to open the components browser

                2 - Select the domain (Tools & Extensions)

                3 - Select the component (OLE Automation)

The fast way (Using Keyboard shortcuts):

                1 - Get the component using its name by typing (OLE Automation)

                Note : Stop typing when you see the required component is selected

s95.JPG

Fig. (95) Component Browser – Select the component (OLE Automation)

After selecting the component click Ok or press ENTER

s96.JPG

Fig. (96) Interaction page - Set the properties and enter the required data as in the image above

s97.JPG

Fig. (97) Goal Desginer - Final Steps Tree

3 - Final Steps Tree

The First Step

                Define New Window ( win1 ) , Title : "Image To Stream & Stream To Image"

                                Window Events

                                Window Properties

                                                win1.Center ( )

                                Window Controls

                                                Define New Button ( btn1 ) , Caption : "Load Image to Stream - Then Save Stream to Image"

                                                                Button Events

                                                                                Event: ON CLICK : Action myWork

                                                                Button Properties

                                                Define New Button ( btnClose ) , Caption : "Close"

                                                                Button Events

                                                                                Event: ON CLICK : Action win1.release

                                                                Button Properties

                                End Of Window

                                Activate window

                Define Procedure myWork

                                Start Here

                                                GetFile := Get File

                                                CheckFile := Check File GetFile

                                                IF ( CheckFile )

                                                                Start Here

                                                                                MyStream = Call Function FileToStream ( GetFile )

                                                                                PutFile := Put File

                                                                                IF ( .not. PutFile == "" )

                                                                                                Start Here

                                                                                                                Call Function StreamToFile ( MyStream,PutFile )

                                                                                                END OF IF STATEMENT

                                                                END OF IF STATEMENT

                                End of Procedure

                Define Function FileToStream ( cFileName )

                                Start Here

                                                Local sStream,oMyObj

                                                Create OLE Object oMyObj of Type "adodb.stream"

                                                oMyObj.type := 1

                                                oMyObj.open ( )

                                                oMyObj.LoadFromFile ( cFileName )

                                                sStream = oMyObj.Read ( )

                                                oMyObj.close ( )

                                End of Function (Return sStream)

                Define Function StreamToFile ( sStream,cFileName )

                                Start Here

                                                Local oMyObj

                                                Create OLE Object oMyObj of Type "adodb.stream"

                                                oMyObj.type := 1

                                                oMyObj.open ( )

                                                oMyObj.write ( sStream )

                                                oMyObj.SaveToFile ( cFileName,1 )

                                                oMyObj.close ( )

                                End of Function

4 - Application during the runtime

runtime1.JPG

Fig. (98) Application during the runtime

runtime2.JPG

Fig. (99) Application during the runtime

runtime3.JPG

Fig. (100) Application during the runtime