la programmation objet application : turbo vision c. application : turbo-vision généralités...

22
La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie des classes Exemple commenté Le programme Commentaires

Upload: euphemie-chevrier

Post on 04-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

C. Application : TURBO-VISION

Généralités

Introduction

Objets visuels

Événements

Objets muets

Hiérarchie des classes

Exemple commenté

Le programme

Commentaires

Page 2: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Généralités : Introduction

• Turbo Vision est une bibliothèque de classes, certaines à caractère général (collection, flux); d'autres orientées vers la création d'interface homme_machine.

• Diverses techniques portant sur les fenêtres, les boites de dialogues, les menus déroulant, la souris,... sont mis à notre disposition exigeant de nous des connaissances en matière de programmation orientée objet.

Page 3: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Généralités : Introduction

• Une application basée sur Turbo Vision représente une société dans laquelle collaborent trois types de composants :

— Les elvis (objets pouvant être affichés à l'écran)

— Les événements

— Les objets muets

Page 4: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Généralités : Elvis (Views)

• On appelle elvis tous les objets qui peuvent se manifester de manière visible à l'écran : les fenêtres de tous types, les menus, la ligne d'état,....

• Tous les elvis sont des descendants de l'objet TView.

• Un elvis se définit à l'aide de deux points : le coin supérieur gauche et le coin inférieur droit. Ces coordonnées sont stockées dans un champ TPoint. Comme un elvis peut se déplacer sur l'écran, un champ TRect contiendra les deux valeurs : position définie et la position courante.

Page 5: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Généralités : Évènements (Events)

• Un événement est une action en provenance de l'extérieur et à laquelle votre application doit en règle générale répondre.

• Les événements proviennent du clavier, de la souris ou encore de certaines autres parties de Turbo Vision.

• Les événements sont stockés dans une file d'attente par le squelette d'application de Turbo Vision dans l'ordre de leur arrivée.

• Ils sont ensuite analysés dans cet ordre par un gestionnaire d'événements.

Page 6: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Généralités : Objets muets (mute objects)

• Le terme objet muet correspond à tout objet du programme qui n'est pas un elvis.

• Ce type d'objet est muet parce qu'il ne réalise aucune interaction avec l'écran.

• Les objets muets permettent de réaliser des calculs, de communiquer avec les périphériques et de manière générale de réaliser les traitements de l'application.

• Lorsqu'un objet muet a besoin d'afficher des informations, il collabore avec un elvis.

• Le concept de Stream par exemple facilite les opérations d'entrées/sorties.

Page 7: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Généralités : Hiérarchie des classes

• Les langages orientés objets font très généralement dériver toutes les classes d'une classe de base. Toutes les classes de Turbo Vision dérivent de <TObject> qui définit un constructeur <Init>, un destructeur <Done> et une méthode de libération <Free>.

• L'examen de la hiérarchie montre un ensemble patronné par <TView> qui gère les éléments visuels (fenêtres, boutons,...) et quelques autres lignes à caractère plus général (<TCollection>, <TStream>, ...).

Page 8: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Généralités : Hiérarchie des classes

• On remarquera la classe <TApplication> encadrée dont héritera une application Turbo Vision.

• Cette classe met en place trois éléments visuels fondamentaux : — une barre horizontale destinée à accueillir les options du menu, — le bureau — et une ligne d'état située en bas de l'écran et dont laquelle on

remarquera le fameux raccourci clavier <Alt-X>.

• Ces derniers sont respectivement désignés par <MenuBar>, <DeskTop> et <StatusLine>.

Page 9: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme

program TVGUID05;

uses Objects, Drivers, Views, Menus, App;

const WinCount: Integer = 0;

cmFileOpen = 100; cmNewWin = 101;

{ Définition des objets }

type TMyApp = object(TApplication)

procedure HandleEvent(var Event: TEvent); virtual;

procedure InitMenuBar; virtual;

procedure InitStatusLine; virtual;

procedure NewWindow;

end;

Page 10: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme PDemoWindow = ^TDemoWindow; TDemoWindow = object(TWindow) constructor Init(Bounds: TRect; WinTitle: String; WindowNo:

Word); end;

PInterior = ^TInterior; TInterior = object(TView) constructor Init(var Bounds: TRect); procedure Draw; virtual; end;

Page 11: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme { TInterior } constructor TInterior.Init(var Bounds: TRect); begin TView.Init(Bounds); GrowMode := gfGrowHiX + gfGrowHiY; Options := Options or ofFramed; end; procedure TInterior.Draw; const Greeting: string = 'Hello, World!'; begin TView.Draw; WriteStr(4, 2, Greeting,$01); end;

Page 12: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme { TDemoWindow } constructor TDemoWindow.Init(Bounds: TRect; WinTitle: String; WindowNo:

Word); var S: string[3]; Interior: PInterior; begin Str(WindowNo, S); TWindow.Init(Bounds, WinTitle + ' ' + S, wnNoNumber); GetClipRect(Bounds); Bounds.Grow(-1,-1); Interior := New(PInterior, Init(Bounds)); Insert(Interior); end;

Page 13: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le ^programme { TMyApp } procedure TMyApp.HandleEvent(var Event: TEvent); begin TApplication.HandleEvent(Event); if Event.What = evCommand then begin case Event.Command of cmNewWin: NewWindow; else Exit; end; ClearEvent(Event); end; end;

Page 14: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme procedure TMyApp.InitMenuBar; var R: TRect; begin GetExtent(R); R.B.Y := R.A.Y + 1; MenuBar := New(PMenuBar, Init(R, NewMenu( NewSubMenu('~F~ile', hcNoContext, NewMenu( NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext, NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext, NewLine( NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, hcNoContext, nil))))),

Page 15: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme

NewSubMenu('~W~indow', hcNoContext, NewMenu(

NewItem('~N~ext', 'F6', kbF6, cmNext, hcNoContext,

NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcNoContext,

nil))),

nil))

)));

end;

Page 16: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme procedure TMyApp.InitStatusLine; var R: TRect; begin GetExtent(R); R.A.Y := R.B.Y - 1; StatusLine := New(PStatusLine, Init(R, NewStatusDef(0, $FFFF, NewStatusKey('', kbF10, cmMenu, NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit, NewStatusKey('~F4~ New', kbF4, cmNewWin, NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose, nil)))), nil) )); end;

Page 17: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme procedure TMyApp.NewWindow; var Window: PDemoWindow; R: TRect; begin Inc(WinCount); R.Assign(0, 0, 24, 7); R.Move(Random(55), Random(16)); Window := New(PDemoWindow, Init(R, 'Demo Window', WinCount)); DeskTop^.Insert(Window); end;

Page 18: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Le programme

var

MyApp: TMyApp;

begin

MyApp.Init;

MyApp.Run;

MyApp.Done;

end.

Page 19: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Commentaires• Création d'un interface avec une barre de menu (MenuBar), une ligne

d'état (StatusLine) et un bureau (DeskTop).

• Création de 3 objets Tmyapp, TdemoWindow et Tinterior qui dérivent (héritent) des objets Tapplication, Twindows et Tview respectivement.

• Les modules InitMenuBar, InitStatusLine et HandleEvent de Tapplication ont été surchargés. De plus, Tapplication est étendu par le module NewWindow.

• InitMenuBar permet de créer la barre du menu,

Page 20: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Commentaires

• InitStatusLine permet de créer la ligne d'état.

• Grâce à HandleEvent, le lien est fait entre les commandes (cmxx) et les actions à entreprendre.

• Il existe des commandes prédéfinies ( cmNext, CmZoom, cmQuit, ...).

• Les commandes créées par l'utilisateur doivent être définies dans la partie Const par des valeurs comprises dans un intervalle prédéfini.

Page 21: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

La programmation objetApplication : Turbo Vision

� Exemple : Commentaires

• La méthode NewWindow crée une fenêtre et la place à un endroit aléatoire du bureau. Remarquez que la fenêtre n'est pas un elvis modal, ce qui veut dire que l'on peut cliquer n'importe où.

• Pour afficher un message à l'intérieur de la fenêtre, il faut toujours créer un elvis "interieur". Comme le cadre de ce dernier est confondu avec celui de la fenêtre, on ne le voit pas.

• Les écritures ne peuvent être faites qu'à partir des méthodes Draw des elvis.

• Le corps du programme principal contient généralement les appels aux méthodes ( Init, Run et Done).

Page 22: La programmation objet Application : Turbo Vision C. Application : TURBO-VISION Généralités Introduction Objets visuels Événements Objets muets Hiérarchie

� Exécution après avoir créé une fenêtre et cliqué sur File.

La programmation objetApplication : Turbo Vision