vendredi 29 décembre 2000

Barre d'outils

BARRE D'OUTILS

Les barres d'outils sont utilisées pour rendre les fonctions les plus utilisées plus accessibles à l'usager.
Delphi possède quelques composants pour construire des barres d'outils : ControlBar, CoolBar, ToolBar.

Type de barre d'outils

Toolbar

  • Ajouter un composant ToolBar sur la fiche
  • Sélectionner la ToolBar que vous venez de créer
  • Cliquer sur le bouton droit de la souris
  • Sélectionner ajouter un bouton
  • Ajouter un composant ImageList sur la fiche
  • Double cliquer sur le composant

  • Ajouter les images que vous désirez mettre sur les boutons
  • Sélectionner la propriété Image de ToolBar et inscrivez le nom du composant ImageList
  • Sélectionner un bouton et mettre sa propriété ImageIndex à l'image désirée


Quelques propriétés peuvent être modifiées afin de changer l'apparence des boutons et de la barre d'outils: EdgeInner, EdgeOuter, Flat, EdgeBorders. Ces propriétés sont valides pour toutes les barres d'outils mentionnés ci-dessus.
Code source disponible ici.

CoolBar

Ce composant permet de créer des barres d'outils ancrables, c'est à dire qu'elles ne sont pas fixes, on peut changer leurs positions durant l'exécution du programme.
  • Ajouter un composant CoolBar sur la fiche
  • Ajouter un composant ToolBar sur le composant CoolBar
  • Cliquer sur le bouton droit de la souris
  • Sélectionner ajouter un bouton
  • Ajouter un composant ImageList sur la fiche
  • Double cliquer sur le composant
  • Ajouter les images que vous désirez mettre sur les boutons
  • Sélectionner la propriété Image de ToolBar et inscrivez le nom du composant ImageList
  • Sélectionner un bouton et mettre sa propriété ImageIndex à l'image désirée
  • Mettre la propriété DragKind de CoolBar et ToolBar à dkDock et leurs propriétés DragMode à dmAutomatic


Code source disponible ici.

ControlBar

Lorsqu'on ajoute une ToolBar au dessus d'une ControlBar, la barre d'outils devient ancrable. Étant donné son indépendance face à la dll de Microsoft, je vous conseille fortement de l'utiliser. Elle est beaucoup plus aisée de l'utiliser et le résultat est d'allure vraiment professionnel. On peut aisément créer des barres d'outils comme celles de photoshop, delphi....



Barre d'état

Les barres d'états sont de plus en plus utilisées dans les programmes utilisés de nos jours. Elles permettent de donner de l'information à l'usager.

Barre d'état simple

Une barre d'état simple comporte qu'un seul volet, il n'y aura qu'une seule information qui sera affichée sur la barre. On affiche rarement qu'une seule information.
  • Ajouter le composant status bar sur la fiche
  • Mettre la propriété SimplePanel du composant à true
  • Inscrivez ce que vous désirez afficher sur la barre dans la propriété SimpleText
Code source disponible ici.

Barre d'état complexe

Une barre d'état complexe comporte plusieurs volets.
  • Ajouter le composant status bar sur la fiche
  • Ajouter autant de volets que vous le désirez grâce à la propriété Panels
  • Inscrivez ce que vous désirez afficher sur la barre dans la propriété Text
Étant donné qu'il y a plusieurs volets, vous devez spécifier l'index du panel.
statusbar.panels[1].text:= 'x: ' + inttostr(x)+' y: '+ inttostr(y);




Code source disponible ici.

jeudi 28 décembre 2000

Menu

MENU

Les menus sont un moyen efficace et simple d'accéder aux fonctions d'un programme. Nous allons voir comment en créer un. Il existe deux types de menus, les mainmenu et les popupmenu.

Type de menu

MainMenu

Ce type de menu est utilisé dans la plupart des programmes créés de nos jours.
  • Sélectionner le composant MainMenu de l'onglet Standard
  • Double cliquer sur l'icône du composant
L'Éditeur de menu apparaîtra

  • Inscrivez Fichier dans la propriété caption et menFichier pour son nom
  • Créez un nouveau item de menu, Envoyez
  • Faite un clique doit de la souris, un menu apparaîtra, sélection


Ces sous-menus sont utilisés dans de nombreuses applications dont ms office
La propriété Bitmap permet d'attribuer une image à un menu.

Standard

Les ... a la suite du nom dans un menu, signifie qu'il y aura une boîte d'édition qui sera affiché. Les barres de séparation permettent de grouper ensemble les menus.
Allez voir sur xp_netscape_menu pour avoir des menus dans le style netscape 6 et office xp

PopupMenu

Ce menu aussi appelé menu contextuel est accessible dans un programme lorsqu'on clique sur le bouton droit de la souris.
  • Sélectionner le composant popupmenu de l'onglet standard
  • Double cliquer sur l'icône du composant
  • Inscrivez un nom pour la propriété caption


Il ne faut pas oublier d'affecter le nom du popupmenu à la propriété PopupMenu des composants qui sont concernés par le menu.Ainsi lorsqu'on fera un clique droit de la souris sur les composants qu'on aura préalablement affectés au Popmenu, il s'affichera

Conseil

L'insertion et l'effacement d'un menu peuvent se faire avec le menu pop up du bouton droit de la souris
Un nouvel élément est ajouté en dessous du menu qu'on vient de créer, de plus, on peut en ajouter un autre à droit de celui qu'on avait créé.
  • Ajouter & dans la propriété caption permet de créer un raccourci
  • Ajouter un - dans la propriété caption permet de créer un séparateur
Ajouter un sous menu, ce fait en sélectionnant un menu et en appuyant sur ctrl -> ou en cliquant sur le bouton droit de la souris et en sélectionnant create submenu.

Pour rendre votre application plus aisée à manipuler, utilisez les mêmes touches raccourcies des autres programmes Windows et linux. La propriété ShortCut permet des créer des raccourcis comme ctrl x pour la commande couper.

Programme sur les menus disponible ici.

Fichier


FICHIER

Les fichiers sont absolument nécessaires lorsqu'on doit garder certaines informations lorsque le programme est terminé. Il existe de nombreuses routines pour manipuler les fichiers.

Opération sur les fichiers

Copier un fichierFichier

Les fichiers sont absolument nécessaires lorsqu'on doit garder certaines informations lorsque le programme est terminé. Il existe de nombreuses routines pour manipuler les fichiers.

Copier un fichier

Le premier paramètre est le nom du fichier à copier et le deuxième et le nom du fichier copié. Si le dernier paramètre est à false, le fichier sera écrasé s'il existe.
copyfile('c:\test\1.tmp','d:\2.tmp',false);

Renommer un fichier

La fonction RenameFile sert à renommer un fichier. On inscrit l'ancien nom de fichier et ensuite le nouveau nom voulu function
RenameFile('ancien.c','nouveau.c');

La fonction retourne true si l'opération a bien été réalisée. 

Déplacer un fichier

La fonction movefile sert à déplacer un fichier, le premier paramètre est la source, le deuxième est la cible.

movefile('d:\2.tmp','c:\1.tmp');

Effacer un fichier

Cette opération efface le fichier du disque et enlève son entré du disque.

DeleteFile(NomDuFichier);
Cette procédure retourne true si le fichier a été effacé avec succès.
On devrait demander confirmation avant d'effacer le fichier.

Trouver un fichier

Pour trouver un fichier, il existe 3 routines
  • FindFirst
  • FindNext
  • FindClose
FindFirst: recherche la première occurrence du fichier dans le répertoire et les attributs spécifiés.

FindNext: recherche la prochaine occurrence du fichier correspondant à l'appel de Find First.

FindClose: Libère la mémoire allouée par les précédentes routines.
On a avantage à utiliser la routine FileExists avec ces routines afin d'éviter les erreurs si le fichier n'existe pas.

Lorsqu'on trouve le fichier, on peut vérifier les attributs de celui-ci
Constant Value Descrition
faReadOnly $00000001 Lecture seulement
faHidden $00000002 Fichier caché
faSysFile $00000004 Fichier système
faVolumeID $00000008 Numéro de volume
faDirectory $00000010 Répertoire
faArchive $00000020 Archive
faAnyFile $0000003F N'importe quel fichier

Modifier les propriétés d'un fichier

Changer l'attribut d'un fichier, nécessite 3 opérations
  • Lecture
  • Changement
  • Configuration
On utilise la fonction FileGetAttr afin d'obtenir les attributs du fichier
Attr := FileGetAttr(txtNomFic.Text);

On modifie ses attributs en ajoutant ou en diminuant son nombre
AttrsChoisie:=AttrsChoisie+ fahidden;

On affecte les changements attribut au fichier
FileSetAttr(txtNomFic.Text, AttrsChoisie);


Le code source d'un programme permettant de modifier les attributs d'un fichier est disponible ici

Les types de fichiers en entrée/sortie

Lecture Ce type de fichiers comporte du texte tout simplement. L'utilisation d'une variable du type TextFile est nécessaire pour l'emploi d'un fichier texte. Il y a 4 étapes à la manipulation d'un fichier.
var
   Fic:Textfile;                         //1. Déclaration
begin
   AssignFile(Fic,'c:\autoexec.bat');    //2. Assignation
   //ou
   System.Assign(Fic,'c:\autoexec.bat');
                                         //3. Ouverture du fichier 
   reset(Fic);                              //en lecture
   rewrite(Fic);                            //en ecrire
   Append(Fic);                             //en ajout
   CloseFile(Fic);                       //4.fermeture du fichier
   //ou
   System.Close(Fic);
end;

Lecture d'un fichier texte

On utilise la procédure ReadLn pour la lecture d'un fichier texte, elle lie fichier, ligne par ligne.
var
   car:string;
begin
   readln( Fic, car);
end;
Étant donné qu'un fichier n'est pas infini, on doit vérifier s'il n'est pas rendu en fin de fichier.
while not Eof(Fic) do
   readln( Fic, car);
Finalement l'ouverture d'un fichier se ferait ainsi
var
   Fic:textfile;
   car:string;
begin
   AssignFile( Fic, 'c:\autoexec.bat');
   reset(Fic);
   try
     while not Eof(Fic) do
     readln(Fic,car);
   finally
     closefile(Fic);
end;

Écriture

L'écriture dans un fichier texte se fait par l'emploi de la méthode rewrite.
var 
   Fic:textfile;
   car:string;
begin
   assignfile(Fic,car);
   rewrite(Fic);
   Writeln(Fic,'Bienvenue dans le monde fabuleux de Delphi ');   
   Writeln(Fic,'Vous venez d'écrire dans un fichier texte, bravo');
   closefile(fic);
end;

Les fichiers binaires

Nous utiliserons la classe TFileStream pour faciliter la manipulation des fichiers binaires. Cette classe offre de multiples fonctionnalités aux niveaux des entrées-sorties
Création et ouverture de fichier
Valeur Description
fmCreate Ouvre le fichier en écriture, s'il existe
fmOpenRead Ouvre le fichier en lecteur seulement
fmOpenWrite Ouvre le fichier en écriture seulement
fmOpenReadWrite Ouvre le fichier pour le modifier
Nous déclarons une variable de type TFileStream
var
  fs: TFileStream;
Crée une instance(variable) de TFileStream
fs := TFileStream.create('c:\test.txt',fmCreate or fmOpenWrite');
Après ces deux opérations, nous pouvons écrire et lire dans le fichier

Boite de dialogue

Windows fournit plusieurs boîtes de dialogue que n'importe qu'elle programmeur peut aisément incorporer dans ses programmes. Nous allons nous attarder à celles utilisées pour ouvrir et sauvegarder un fichier.

La méthode exécutée

On doit utiliser la méthode exécutée pour utiliser une boîte de dialogue, cette méthode permet de créer et d'afficher la boîte de dialogue
If openDialog1.Execute then

Ouverture d'un fichier

L'ouverture d'un fichier se fait en employant la propriété filename
If openDialog1.Execute then
   Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Ces deux lignes de code affectent le contenu d'un fichier choisi à un mémo
La sauvegarde d'un fichier se ferait par

If saveDialog1.Execute then
  Memo1.Lines.savetoFile(saveDialog1.FileName);

Ces deux lignes de code sauvegardent le contenu du mémo dans un fichier.
Propriété de Topendialog et Tsavedialog
Voici quelques propriétés de ces composants

Title

Donne le titre de la boîte de dialogue opendialog1.Title:='Ouverture';

Filter

Extension de fichier admis pour ouvrir ou sauvegarder un fichier savedialog1.Filter:='Text files (*.txt)|*.TXT|Pascal files (*.pas)|*.PAS';

InitialDir

Change le répertoire courant pour celui spécifié savedialog1.InitialDir:='c:\';
Toutes les propriétés de ces composants peuvent être modifiées en mode création en sélectionnant le composant et en allant dans les propriétés qui nous intéressent dans l'inspecteur d'objet
Code source disponible ici.