Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Linux RAD/GUI Development Kylix – Rapid Application Development (RAD), GUI Development for Linux from Borland by Leland Brode ELB Software"— 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 – 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 – 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 IDEs – KDevelop – – KDE Studio – – Code Crusader – – VDK Builder – vdkbuilder.sourceforge.net – Source-Navigator – sources.redhat.com/sourcenav C/C++ Users Journal, March 2001 –

10 Delphi Background Borlands Delphi = – Pascal, plus – Borlands 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 – Borlands 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 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+ Delphis 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 Integer – to Cardinal 0 to 4,294,967,785 Byte 0 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 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) private fReturnCheck : Boolean end; TCertificateof Deposit = class(TSavingsAccount) private fTerm : Cardinal; end;

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 begin Inc(Num); SetLength(ButtonArray, Num); ButtonArray[Num-1] := TButton(Components[i]); end;

26 Kylix Pascal Language – Comparison Pascal… var i : Integer; begin i := 1; C++… 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 begin 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); C++… 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 – access to all Qt Widget public Events and Properties Libc – access to all libc functions

31 Kylix GUI Applications Database Applications Console Applications Web Server Applications

32 Kylix Linux Multiprocessing 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, , []); – 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 | TCGIApplication

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 – s/download_kylix.html# s/download_kylix.html# – Kylix 3 currently available – Kylix 2 ??

41 Kylix FreeCLX Project Open Source CLX Class Library available at SourceForge.net 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, OReilly 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 Developers Guide and Reference, Jon Shemitz, Apress Mastering Kylix 2, Cantu & Barbini, SYBEX Borland Kylix Developers 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 Kylix – Rapid Application Development (RAD), GUI Development for Linux from Borland by Leland Brode ELB Software"

Similar presentations


Ads by Google