Click here to Skip to main content
Licence CPOL
First Posted 25 Sep 2010
Views 10,710
Bookmarked 8 times

Using C#.NET through Programming Without Coding Technology - Part (1)

By | 28 Sep 2010 | Article
Develop application inside Programming Without Coding Technology then get C#.NET source code

Download CSharpPWCT_Test.zip - 8.6 KB

Introduction

i am going to present simple application developed using (CSharpPWCT)

CSharpPWCT = C#.NET Programming Without Coding Technology and it's a set of Programming Without Coding Technology (PWCT) components that wrap the C#.NET programming language

Using CSharpPWCT we don't need to write code but instead of writing code we can visually specify every functional aspect of the program similar to flowchart and algorithms and we interact with GUI components and as a result of interaction we get another GUI objects generated for us in a way where we can control the flow of data and code execution

CSharpPWCT components are under development in the alpha stage (we need to add more components & documentation) and you could give it a try after reading this article (it's free-open source)

Background

I am not going to explain what is programming and what is C#.NET

I expect that the reader at least know basics of programming and uses C#.NET to write simple programs at least.

Using the code

We are going to create simple application that will show a window contains label and when the user click that label a counter will start using a for-loop and we will see numbers from 1 to 10 appears on the console window.

We will not write code because we are going to use Programming Without Coding Technology and we will have a generated code in the end of this session

using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
 private</span /> System.Windows.Forms.Label lbl1 ;
 public</span /> static</span /> void</span /> Main ( string</span />[] argc )
 {
  Application.Run(  new</span /> win1() );
 }
 public</span /> win1 (  )
 {
  this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
  this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
  this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
  this</span />.Controls.Add (lbl1);
  lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
  this</span />.lbl1.Top = 10</span /> ;
  this</span />.lbl1.Left = 10</span /> ;
  this</span />.lbl1.Width = 200</span /> ;
  this</span />.lbl1.Height = 30</span /> ;
  this</span />.lbl1.Text = "</span />Count from 1 to 10 "</span /> ;
  int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
  this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
                                                       ,lbl1acolorsfc[2</span />]);
  int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
  this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
                                                       ,lbl1acolorsbc[2</span />]);
  this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
 }
 private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
 {
 }
 private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
 {
  int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
  this</span />.BackColor = System.Drawing.SystemColors.Control;
  this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
  this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
  this</span />.Top = 10</span /> ; 
  this</span />.Left = 10</span />;
  this</span />.Width = 400</span /> ;
  this</span />.Height = 400</span /> ;
  this</span />.Text = "</span />Hello World"</span /> ;
  this</span />.Opacity = 100</span /> ;
 }
 protected</span /> void</span /> lbl1_Click (  object</span /> sender, System.EventArgs e)
 {
  for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
  {
   Console.WriteLine( x );
  }
 }
}
        

shot30.png

Implementation using CSharpPWCT

1 - Install PWCT 1.7 Sharp (http://doublesvsoop.sourceforge.net)

2 - Run CSharpPWCT 1.7

shot1.png

3 - Welcome to Programming Without Coding Technology

shot2.png

4 - At first we are going to create new project .... click new or press (Enter)

shot3.png

5 - Determine project name ..... for example ( test )

shot4.png

6 - There is no need to write code just imagine any software as a goal that you can achieve through a logical steps generated through interactive sessions with you wherein you control every functional aspect of your program

we will start from (This First Step)

At first we want to generate steps for (using namespaces)

The first way to do that is to select the first step then click interact (the slow way using mouse)

And the second way to do that is to select the first step then press (q) - the fast way using keyboard

shot5.png

7 - the letter (q) are in the search line and we have our component (q Using) that we want to use so click Ok (the slow way) or press (Enter) - the fast way

shot6.png

8 - Now we are in Goal Designer again but we have 6 steps generated for us after using (q Using) component.

we will continue now and we are going to create a window

press (w) letter after selecting the first step

shot7.png

Now we have generated the next code

using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;

9 - press (Enter) to interact with the (Window) component

shot8.png

10 - Change the window title to (Hello World)

shot9.png

shot10.png

11 - Now we are in Goal Designer again but we have many steps generated for us after using (window) component.

The generated steps create new class (win1) from class (Form)

It's clear that using this way of programming ... we could uses Object Oriented Programming

And other programming concepts without problems , i.e. we still have full control

Now we are going to add a label control to our window

select step ([2] Create Controls Here | Open Form Designer From Here )

then click interact or press the letter (L) using keyboard - more faster

shot11.png

Now we have generated the next code

using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
 private</span /> System.Windows.Forms.Label lbl1 ;
 public</span /> static</span /> void</span /> Main ( string</span />[] argc )
 {
  Application.Run(  new</span /> win1() );
 }
 public</span /> win1 (  )
 {
  this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
  this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
   }
 private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
 {
 }
 private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
 {
  int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
  this</span />.BackColor = System.Drawing.SystemColors.Control;
  this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
  this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
  this</span />.Top = 10</span /> ; 
  this</span />.Left = 10</span />;
  this</span />.Width = 400</span /> ;
  this</span />.Height = 400</span /> ;
  this</span />.Text = "</span />Hello World"</span /> ;
  this</span />.Opacity = 100</span /> ;
 }
}
        

12 - we are going to use the label component - press (Enter)

shot12.png

13 - set the label caption, for example and a start write (Hello World)

shot13.png

14 -Now we are in Goal Designer again but we have many steps generated for us after using the (Label) component.nd

shot14.png

Now we have generated the next code

using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
 private</span /> System.Windows.Forms.Label lbl1 ;
 public</span /> static</span /> void</span /> Main ( string</span />[] argc )
 {
  Application.Run(  new</span /> win1() );
 }
 public</span /> win1 (  )
 {
  this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
  this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
  this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
  this</span />.Controls.Add (lbl1);
  lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
  this</span />.lbl1.Top = 10</span /> ;
  this</span />.lbl1.Left = 10</span /> ;
  this</span />.lbl1.Width = 200</span /> ;
  this</span />.lbl1.Height = 30</span /> ;
  this</span />.lbl1.Text = "</span />Text Here"</span /> ;
  int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
  this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
                                                       ,lbl1acolorsfc[2</span />]);
  int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
  this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
                                                       ,lbl1acolorsbc[2</span />]);
  this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
 }
 private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
 {
 }
 private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
 {
  int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
  this</span />.BackColor = System.Drawing.SystemColors.Control;
  this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
  this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
  this</span />.Top = 10</span /> ; 
  this</span />.Left = 10</span />;
  this</span />.Width = 400</span /> ;
  this</span />.Height = 400</span /> ;
  this</span />.Text = "</span />Hello World"</span /> ;
  this</span />.Opacity = 100</span /> ;
 }
 protected</span /> void</span /> lbl1_Click (  object</span /> sender, System.EventArgs e)
 {
 }
}
        

select step ([2] Create Controls Here | Open Form Designer From Here )

then click (form designer) button or press ( CTRL+F) using keyboard - more faster

shot15.png

15 - Run the applications ( You could do that by pressing CTRL+R too )

shot16.png

when you run the application the Source code (test.cs) will be extracted from (Steps Tree) then the build process will done and we get our application ready for test

shot17.png

16 - open application folder you will find

Test.cs = Souce code file

Test.exe = application executable file

config.txt = determine the name of source code file + batch file for build process

rpwibuild.bat = build application

Test.SSF & Test.FPT = Source Files for (Programming Without Coding Technology)

shot18.png

17 - Now we are going to design a counter from 1 to 10 using a for-loop and this counter will print number on the console screen and this will happen when the user click the label (label click event).

Select step (Start Here) then press the key (f)

shot19.png

18 - press Enter to use component (For - Loop )

shot20.png

19 - click (Ok) or press (CTRL+W) to end interaction process

shot21.png

20 - Again in Goal Designer and we have three steps generated after using the (For Loop) component

Now we have generated the next code

using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
 private</span /> System.Windows.Forms.Label lbl1 ;
 public</span /> static</span /> void</span /> Main ( string</span />[] argc )
 {
  Application.Run(  new</span /> win1() );
 }
 public</span /> win1 (  )
 {
  this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
  this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
  this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
  this</span />.Controls.Add (lbl1);
  lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
  this</span />.lbl1.Top = 10</span /> ;
  this</span />.lbl1.Left = 10</span /> ;
  this</span />.lbl1.Width = 200</span /> ;
  this</span />.lbl1.Height = 30</span /> ;
  this</span />.lbl1.Text = "</span />Text Here"</span /> ;
  int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
  this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
                                                       ,lbl1acolorsfc[2</span />]);
  int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
  this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
                                                       ,lbl1acolorsbc[2</span />]);
  this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
 }
 private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
 {
 }
 private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
 {
  int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
  this</span />.BackColor = System.Drawing.SystemColors.Control;
  this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
  this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
  this</span />.Top = 10</span /> ; 
  this</span />.Left = 10</span />;
  this</span />.Width = 400</span /> ;
  this</span />.Height = 400</span /> ;
  this</span />.Text = "</span />Hello World"</span /> ;
  this</span />.Opacity = 100</span /> ;
 }
 protected</span /> void</span /> lbl1_Click (  object</span /> sender, System.EventArgs e)
 {
  for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
  {
  }
 }
}
        

Select the generated step (Start Here) then press letter (c)

shot22.png

20 - press (Enter) to use component (Con Write)

shot23.png

21 - we want to print the value of variable (X)

shot24.png

22 - Again in Goal designer with a step generated after interaction process

shot25.png

Now we have generated the next code

using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
 private</span /> System.Windows.Forms.Label lbl1 ;
 public</span /> static</span /> void</span /> Main ( string</span />[] argc )
 {
  Application.Run(  new</span /> win1() );
 }
 public</span /> win1 (  )
 {
  this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
  this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
  this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
  this</span />.Controls.Add (lbl1);
  lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
  this</span />.lbl1.Top = 10</span /> ;
  this</span />.lbl1.Left = 10</span /> ;
  this</span />.lbl1.Width = 200</span /> ;
  this</span />.lbl1.Height = 30</span /> ;
  this</span />.lbl1.Text = "</span />Text Here"</span /> ;
  int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
  this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
                                                       ,lbl1acolorsfc[2</span />]);
  int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
  this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
                                                       ,lbl1acolorsbc[2</span />]);
  this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
 }
 private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
 {
 }
 private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
 {
  int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
  this</span />.BackColor = System.Drawing.SystemColors.Control;
  this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
  this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
  this</span />.Top = 10</span /> ; 
  this</span />.Left = 10</span />;
  this</span />.Width = 400</span /> ;
  this</span />.Height = 400</span /> ;
  this</span />.Text = "</span />Hello World"</span /> ;
  this</span />.Opacity = 100</span /> ;
 }
 protected</span /> void</span /> lbl1_Click (  object</span /> sender, System.EventArgs e)
 {
  for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
  {
   Console.WriteLine( x );
  }
 }
}
        

23 - Press (CTRL+R) to run and test the application

shot26.png

24 - Now we are going to change the label caption from (Hello World) to (Count from 1 to 10)

To do that select the step (create label lbl1) then click (Modify) button or press (CTRL+Y)

shot27.png

25 - Set the label caption then press (CTRL+W) or click (Ok) button

shot28.png

26 - Again we are in goal designer but the label caption is changed

shot29.png

Now we have generated the next code

using</span /> System ;
using</span /> System.Drawing ;
using</span /> System.Collections ;
using</span /> System.ComponentModel ;
using</span /> System.Windows.Forms ;
using</span /> System.Data ;
public</span /> class</span /> win1 : Form
{
 private</span /> System.Windows.Forms.Label lbl1 ;
 public</span /> static</span /> void</span /> Main ( string</span />[] argc )
 {
  Application.Run(  new</span /> win1() );
 }
 public</span /> win1 (  )
 {
  this</span />.Load += new</span /> System.EventHandler( this</span />.win1_Load );
  this</span />.Click += new</span /> System.EventHandler( this</span />.win1_Click );
  this</span />.lbl1 = new</span /> System.Windows.Forms.Label ( );
  this</span />.Controls.Add (lbl1);
  lbl1.Click += new</span /> System.EventHandler (this</span />.lbl1_Click);
  this</span />.lbl1.Top = 10</span /> ;
  this</span />.lbl1.Left = 10</span /> ;
  this</span />.lbl1.Width = 200</span /> ;
  this</span />.lbl1.Height = 30</span /> ;
  this</span />.lbl1.Text = "</span />Count from 1 to 10"</span /> ;
  int</span />[] lbl1acolorsfc = {0</span />,0</span />,0</span />} ;
  this</span />.lbl1.ForeColor = System.Drawing.Color.FromArgb (lbl1acolorsfc[0</span />],lbl1acolorsfc[1</span />]
                                                       ,lbl1acolorsfc[2</span />]);
  int</span />[] lbl1acolorsbc = {255</span />,255</span />,255</span />} ;
  this</span />.lbl1.BackColor = System.Drawing.Color.FromArgb (lbl1acolorsbc[0</span />],lbl1acolorsbc[1</span />]
                                                       ,lbl1acolorsbc[2</span />]);
  this</span />.lbl1.Font = new</span /> Font( "</span />arial"</span /> , 10</span />) ;
 }
 private</span /> void</span /> win1_Click( object</span /> sender, System.EventArgs e )
 {
 }
 private</span /> void</span /> win1_Load( object</span /> sender, System.EventArgs e )
 {
  int</span /> [] acolors = {255</span />,255</span />,255</span />} ;
  this</span />.BackColor = System.Drawing.SystemColors.Control;
  this</span />.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
  this</span />.WindowState = System.Windows.Forms.FormWindowState.Normal;
  this</span />.Top = 10</span /> ; 
  this</span />.Left = 10</span />;
  this</span />.Width = 400</span /> ;
  this</span />.Height = 400</span /> ;
  this</span />.Text = "</span />Hello World"</span /> ;
  this</span />.Opacity = 100</span /> ;
 }
 protected</span /> void</span /> lbl1_Click (  object</span /> sender, System.EventArgs e)
 {
  for</span /> ( int</span /> x = 1</span /> ; x <= 10</span /> ; x++ )
  {
   Console.WriteLine( x );
  }
 }
}
        

Note that this line of code

this</span />.lbl1.Text = "</span />Hello World"</span /> ;

Changed to

this</span />.lbl1.Text = "</span />Count from 1 to 10"</span /> ;

27 - Press (CTRL+R) to run

shot30.png

Now we have our sample completed....

Points of Interest

1 - Design code instead of writing it then let the machine write the code for you

2 - No Syntax errors .... CSharPWCT avoid syntax errors from the begining

3 - Max. Readability.... through GUI instead of text-based code editor

4 - Max. Writablity using keyboard-shourtcuts

5 - Easy to use for beginners and helpful in education and still very practical for 

     professionals

   To Be Continue

              Part (2)

 

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Mahmoud Samir Fayed



Egypt Egypt

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionFor improving PinmemberShahin Khorshidnia20:24 6 Feb '12  
GeneralMy vote of 5 PinmemberGS553:03 25 Aug '11  
GeneralRe: My vote of 5 PinmemberMahmoud Samir Fayed5:28 27 Aug '11  
Rant[My vote of 1] This article is of no technical value, its sole purpose is to make the author feel important PinmemberMember 723452521:14 18 Oct '10  
GeneralMy Vote of 1 PinmemberMohamed H. Elsherif7:44 27 Sep '10  
GeneralRe: My Vote of 1 [modified] PinmemberMahmoud Fayed10:19 27 Sep '10  
GeneralRe: My Vote of 1 PinmemberMohamed H. Elsherif12:32 27 Sep '10  
GeneralRe: My Vote of 1 PinmemberMahmoud Fayed13:50 27 Sep '10  
GeneralMy vote of 1 PinmemberMohamed H. Elsherif7:38 27 Sep '10  
GeneralMy vote of 5 Pinmember01walid12:47 26 Sep '10  
GeneralRe: My vote of 5 PinmemberMahmoud Fayed15:06 26 Sep '10  
GeneralMy vote of 1 PinmvpMark Nischalke11:08 26 Sep '10  
GeneralMy vote of 2 Pinmemberkldoon10:59 26 Sep '10  
GeneralMy vote of 5 Pinmember_amine_8:48 26 Sep '10  
GeneralRe: My vote of 5 PinmemberMahmoud Fayed8:57 26 Sep '10  
GeneralMy vote of 1 PinmemberActiveMotion3:28 26 Sep '10  
GeneralRe: My vote of 1 [modified] PinmemberMahmoud Fayed5:48 26 Sep '10  
GeneralRe: My vote of 1 PinmemberActiveMotion9:04 26 Sep '10  
GeneralRe: My vote of 1 PinmemberMahmoud Fayed10:06 26 Sep '10  
GeneralRe: My vote of 1 PinmemberActiveMotion13:42 26 Sep '10  
GeneralMy vote of 5 PinmemberMember 42617452:28 26 Sep '10  
GeneralRe: My vote of 5 PinmemberMahmoud Fayed5:48 26 Sep '10  
GeneralMy vote of 1 PinmemberSadistic-X21:50 25 Sep '10  
GeneralRe: My vote of 1 PinmemberMahmoud Fayed22:04 25 Sep '10  
GeneralNot an article... PinmvpDave Kreskowiak11:19 24 Sep '10  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 28 Sep 2010
Article Copyright 2010 by Mahmoud Samir Fayed
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid