Presentation is loading. Please wait.

Presentation is loading. Please wait.

Linux RAD/GUI Development

Similar presentations

Presentation on theme: "Linux RAD/GUI Development"— Presentation transcript:

1 Linux RAD/GUI Development
Kylix Rapid Application Development (RAD), GUI Development for Linux from Borland by Leland Brode ELB Software

2 Linux GUI Development Presentation Outline
Background on GUI Development Overview of Kylix Demo GUI Tools Demo Delphi Demo Kylix by Leland Brode ELB Software

3 Linux GUI Development Kylix RAD/GUI tool for Linux
Port of Delphi for Windows Runs on Linux Builds, compiles native Linux applications Cross platform – Windows/Linux

4 GUI Dev Background Windows 3.0 – 1990 Basic, COBOL, C
Generates Messages Basic, COBOL, C All Text Visual Basic – 1991 First GUI Dev Tool Event Handlers – code that runs before or after an Event Draw window instead of code it Most widely used language “Visual Basic 6 Bible” - Smith Whistler, & Marquis

5 GUI Dev Background Other GUI Dev Tools PowerBuilder Visual Age
Digitalk, ParcPlace Smalltalk Forte ( now at Sun) Visual C++ Borland C++ Borland Delphi Borland C++Builder Visual Café - Java JBuilder - Java

6 Linux Developement GNU Linux Toolkit Perl, Shell scripting GCC
Compiles C, C++, Objective C, Fortran Handles Front-ends for Pascal, Modula-3, Ada Distributed with Linux Perl, Shell scripting

7 Linux Developement Qt Class Library C++ Cross Platform
Qt/Windows Qt/X11 (Linux, Solaris, HPUX, AIX, etc) Qt/Mac GPL – Free for non-commercial apps Qt was used to build KDE from Trolltech in Norway

8 Linux Development Qt Class Libray Qwidget base class Event Handlers
mousePressEvent (QMouseEvent &); mouseMove Event (… mousePressEvent (… enterEvent (… Class QMouseEvent : public Qevent { public: int x(); int y(); int button(); int state(); “Linux Programming Unleashed” – Kurt Wall - SAMS

9 Linux Development Open Source IDE’s KDevelop –
KDE Studio – Code Crusader – VDK Builder – Source-Navigator – “C/C++ Users Journal”, March 2001 –

10 Delphi Background Borland’s Delphi = Pascal, plus
Borland’s implementation of OO in Pascal, plus GUI IDE, plus Visual Component Library (VCL) - encapsulates Windows controls

11 Delphi Pascal Pascal dev by Niklas Wirth (Swiss, 1970)
Versions: U of C San Diego, Borland Borland’s Turbo Pascal ? Turbo Pascal 3.0 for DOS Object Extensions to Pascal ? Turbo Pascal for Windows Delphi - OO Pascal – 1995 polymorphism, inheritance, encapsulation

12 Delphi GUI Integrated Development Environment
Based on Visual Basic model

13 Delphi IDE project manager code editor GUI form designer
keeps track of all source files for a project code editor code completion GUI form designer integrated debugger watch variables change variables breakpoints step through code

14 Kylix Port of Delphi to Linux OO Pascal Delphi IDE
native Linux compiler Class Library - CLX Object wrappers for Qt widgets Borland chose Qt over GTK+ Delphi’s VCL re-engineered to CLX

15 Kylix Class Libraries CLX is to Kylix VCL is to Delphi, C++Builder
MFC is to Visual C++ Qt is to KDE GTK is to GNOME CLX runs on Linux and Windows

16 Delphi VCL Class Library Object wrappers for Windows Controls TObject
| TControl __ | | TForm TButton

17 Kylix CLX Class Library Object wrappers for Qt Widgets
TObject | TControl __ | | TForm Tbutton CLX also in Delphi 6, and C++Bldr for cross platform

18 Kylix Pascal Language Source File = Unit
Units -> compile, link -> executable code - .pas file form - .dfm file ( each form has a .pas file )

19 Kylix Pascal Language Data types Arrays –
Integer – to Cardinal 0 to 4,294,967,785 Byte to 255 Double floating point Currency Arrays – MyArray : array[0..10] of Integer; // fixed MyArray : array of Integer; // dynamic SetLength(MyArray, length); // allocates memory for dynamic array MyArray[length-1] := 1,024 // assignment

20 Kylix Pascal Language String – dynamic Pointers Exceptions File IO
Concat, Copy, Delete, Insert, Length, Pos, SetLength Pointers Exceptions Try-except (same as try-catch in java, c++) File IO function – returns value procedure – no return value

21 Kylix Pascal Language - function
function Factorial(Number : Cardinal): Int64; var N : Cardinal; begin Result := 1; for N := 2 to Number do Result := Result * N; end;

22 Kylix Pascal Language – class definition type TAccount = class private
fNumber : Cardinal; fBalance : Currency; public procedure WithDraw(Amount : Currency); end; TSavingsAccount = class (TAccount) fReturnCheck : Boolean TCertificateof Deposit = class(TSavingsAccount) fTerm : Cardinal;

23 Kylix Pascal Language – use classes var CD1, CD2 : TAccount; begin
CD1 := TCertificateofDeposit.Create; CD2 := TCertificateofDeposit.Create; CD1.WithDraw(100.00); CD1.Free; CD2.Free; end;

24 Kylix Pascal Language – Records and Arrays type PersonType = record
LastName : String[10]; FirstName : String[10]; EmployeeNumber : Integer; end; { Persontype } MyArrayType = array [1..5] of PersonType; var PersonArray : MyArrayType; begin PersonArray[1].FirstName := ‘Donald’; PersonArray[1].LastName := ‘Duck’;

25 Kylix Pascal Language – Components and Arrays var
ButtonArray : array of TButton; i, Num : integer; begin Num :=0; for i := 0 to Self.ComponentCount –1 do // ‘Self’ same as ‘this’ in C++ if Self.Components[i] is TButton then Inc(Num); SetLength(ButtonArray, Num); ButtonArray[Num-1] := TButton(Components[i]); end;

26 Kylix Pascal Language – Comparison Pascal… var i : Integer; begin
int i; i = 1; Perl… my $i; $i = 1;

27 Kylix Pascal Language – Comparison Pascal… var i : Integer;
name String[20]; begin if i = 1 then name := ‘Leland’; i := i + 1; end; C++… int i; char name[20]; if(i == 1) { strcpy(name, “Leland”); i = i + 1; } Perl… my $i; my $name; if($i == 1) { $name = ‘Leland’; $i = $i + 1; }

28 Kylix Pascal Language – Comparison Pascal… while i < 100 do Inc(i);
while (i < 100) i++; Perl… while ($i < 100) { $i++;}

29 Kylix Pascal Language – Comparison Pascal… for i := 0 to 100 do begin
if i = 50 then Break; end; C++… for( i = 0; i <= 100; i++) if( i == 50) break; Perl… for( $i = 0; $ i <= 100; $i++) { if( $i == 50) last; }

30 Kylix Qt Libc access to all Qt Widget public Events and Properties
access to all ‘libc’ functions

31 Kylix GUI Applications Database Applications Console Applications
Web Server Applications

32 Kylix Linux Multiprocessing apps Linux Multithreading apps
separate memory, communicate via file system Linux Multithreading apps same memory, share resources TThread base class

33 Kylix GUI Applications - (CLX TForm class)
Form1.Canvas.Brush.Color := clRed; or := RGB(255, 0, 0); Form1.Canvas.Rectangle(10, 10, 100, 100); Form1.Canvas.Pen.color := clBlack; Form1.Canvas.Pen.Width := 2; Form1.Canvas.MoveTo(0, 20); // draw line Form1.Canvas.LineTo(60, 20); // draw line Form1.Canvas.Font.Name := ‘Arial’; Form1.Canvas.Font.Size := 24; Form1.Canvas.TextOut(30,1, ‘Hello World’); // write text

34 Kylix Database Applications db : TClientDataSet
db.FileName := ‘/xxx/nnn/yyy’; db.Open; db.Locate(‘EmpNum’, ‘124433’, []); mystring := db.FieldValues[‘LastName’];

35 Kylix Database Applications db : TSQLDataSet
db.CommandText := ‘select * from ….’; db.Open;

36 Kylix Database Applications data aware controls
automatically fill in data value from database automatically update data value to database controls can be ‘Active’ while building form

37 Kylix Web Applications - raw CGI or - TWebApplication |

38 Kylix Kylix Versions Kylix 1, 2, 3 (I am using 2)
Kylix 1, 2 – Delphi (Pascal) Kylix 3 – add C++ Builder (C++) Kylix Enterprise - Web, Middleware objects, Database objects Kylix Professional - Database objects Kylix Open Edition – Build open source apps licensed under GNU General Public License

39 Kylix Technical Requirements – Kylix 2
Pentium 400 Mhz ( I am using 366 Mhz) 128MB RAM ( I am using 192MB) 175MB disk space Red Hat 6.2 or higher (I am using 7.2, Kernel 2.4.7) SuSE 7.0 or higher

40 Kylix Kylix Download Kylix 3 currently available Kylix 2 ??

41 Kylix FreeCLX Project Open Source CLX Class Library
available at includes BaseCLX, VisualCLX, and DataCLX classes (brings full functionality to Kylix Open Edition ?) lack of detailed information on FreeCLX

42 Kylix Bibliography “Visual Basic Bible”, Smith, Whistler, & Marquis
“Delphi in a Nutshell”, Ray Lischer, O’Reilly “Linux Programming Unleashed”, Kurt Wall, SAMS “Object Pascal Language Guide”, Borland Delphi 3 Documentation “Teach Yourself Delphi in 21 Days”, Osier, Grobman, & Batson, SAMS “Kylix: The Professional Developer’s Guide and Reference”, Jon Shemitz, Apress “Mastering Kylix 2”, Cantu & Barbini, SYBEX “Borland Kylix Developer’s Guide”, Calvert, Calvert, Kaster, & Swart, SAMS “In the Trenches”, by Dale Fuller, LINUX Magazine, January 2002 Product Review of Kylix 2, LINUX Magazine, May 2002 “Kylix vs. gcc Development” “Technical Overview of the Kylix Compiler” “Apache Development with Kylix” Kylix and Qt, excerpts form Kylix newsgroup Kylix newsgroup – “borland.public.kylix,non-technical”

43 Kylix product demo…

Download ppt "Linux RAD/GUI Development"

Similar presentations

Ads by Google