Avec le temps, vos projets, Project, deviennent de plus en plus
vastes. Il vous faut vous déplacer dans le code. Pour cela (ces
fonctionnalités nécessiteront peut-être une première
compilation pour être opérationnelles) :
Dans une Unité, Unit, Control + Majuscule + flèche vers le haut permet de passer alternativement de la déclaration d'une procédure, à son implémentation (le code à l'intérieur de cette procédure). Flèche vers le bas convient aussi.
Pour obtenir un modèle de code : Control + J
Exemple : Entrez If, puis faites Control + J. Delphi vous propose diverses
possibilités. Faites un double clic sur celle qui vous intéresse
; Delphi écrit pour vous la structure du code. Ceci se paramètre
dans Outils | Options d'environnement | Expert de code.
Laissez le curseur quelques instants sur le nom d'une variable ; Delphi affiche dans une bulle d'aide la déclaration de cette variable et la ligne correspondante. Faites un clic droit sur le nom de variable, puis Chercher la déclaration ; Delphi vous y conduit. Exemple : Soit le fragment de code suivant :
implementation
var i : integer ;
procedure Essayer ;
// var i : real ;
begin
i := 3 ;
end ;
Quel est le i employé par la procedure (avant que // soit écrit
dans // var i : real ;) ?
Placez les //, puis enlevez-les et comparez la bulle d'aide, ou comparez
la déclaration à laquelle vous conduit Delphi, par clic droit.
Lorsque vous entrez du code, ne vous précipitez pas. Par exemple,
entrez Form1. ; attendez une fraction de seconde ; Delphi vous présente
tous les objets, fonctions et procédures associés à
Form1.
Entrez Form1.Edit1.Color := puis frappez Control + Espace. delphi vous
propose une liste d'argument valides (mais pas forcément pertinents
selon ce que vous souhaitez faire).
Dans Projet | Options | Compilateur | Débogage, cochez Information de débogage. A la prochaine compilation, Delphi placera dans la gouttière des points bleus en face des lignes de code effectivement compilées dans l'exécutable. Les endroits qui ne comportent pas de point bleu seront ignorés ; par exemple si vous avez créé une procédure, mais si vous avez oublié de l'utiliser.
Un programme idéal serait un programme d'emploi intuitif,
réalisant ce qu'on attend de lui, et surtout ne 'plantant' pas.
Il paraît que les utilisateurs de Mac (sur un Personal Computer,
un usage collectif serait sans doute moins serein) connaissent ce Nirvana.
Delphi permet de s'en approcher sur un PC avec Windows en système
d'exploitation. Oui oui !
Quelles sont les causes les plus fréquentes d'erreurs graves
?
Pour tous ces cas, Delphi possède un remède miracle, l'instruction Try Except End, ou Try Finally End. Rendez-vous dans l'aide en ligne pour plus de détails.
Pour éviter les boucles dont le programme ne sort pas, personnellement je préfère employer l'instruction For i := 1 To 1000 Do, plutôt que While... C'est parfois plus lourd, mais au moins, on finit par en sortir.
Vous avez réalisé une belle application en Delphi
(pensez à télé charger notre librairie de pilotage
des cartes Candibus), mais vous voudriez lui donner une allure plus
professionnelle. Pour cela, vous devez :
Delphi est livré avec un outil de dessin suffisant pour ce
travail, qui permet aussi de créer des ressources.
Dans Delphi, faites : Outils | Éditeur d'images | Fichier |
Nouvelle | Icône | 32 x 32, 16 couleurs.
Un clic gauche sur l'un des pavés de couleur permet de dessiner
avec cette couleur, en choisissant un outil, par exemple crayon (différentes
épaisseurs possibles), et en maintenant le bouton gauche de la souris
enfoncé.
Un clic droit sur l'un des deux pavés portant un dessin en forme
de S permet de choisir la couleur du fond transparent, qui sera lui aussi
dessiné à l'aide d'un outil, en maintenant enfoncé
le bouton droit de la souris.
Pensez à faire : Icône | Tester, sur différentes
couleurs de fond.
Sauvegardez votre travail.
Fermez l'éditeur d'images.
Dans Delphi, sélectionnez la Form, par un clic gauche. Si vous
n'y parvenez pas, parce qu'elle est couverte de composants, retrouvez la
en haut, dans la liste déroulante de l'inspecteur d'objet. Dans
cet inspecteur, au niveau de Icon, faites un double clic sur [vide], puis
Charger | Choix dans la boîte de dialogue | OK.
Il vous faudra aussi associer cette icône à l'objet
Application, pour que cette même icône, réduite, apparaisse
lorsque la fenêtre de votre application est réduite. Pour
cela, faites : Projet | Options | Application | Charger icône.
Retour en haut de cette page
Ceci permet de réduire considérablement la taille
des fichiers exécutables ; en contrepartie, il vous faudra fournir
les paquets (paquetages serait un terme plus élégant) Delphi
correspondants. Ce n'est donc intéressant que si vous créez
et livrez plusieurs logiciels.
Voici un exemple numérique :
Nous vous proposons sur ce site une suite logicielle contenant pour
l'instant 12 exécutables. Ceux-ci utilisent tous une base commune
de ressources permettant la gestion des fenêtres (TForm), des graphiques
(TChart)...
Soit cette base est incluse dans chaque logiciel ; chacun est totalement
complet et indépendant, mais de taille importante ; soit la base
est livrée à part, une seule fois.
Nom de l'exécutable | Taille de l'exécutable complet | Taille de l'exécutable, sans paquetages |
NavPhy | 560 640 octets | 41 984 octets |
AcquisC | 677 376 | 123 392 |
AcSurBas | 940 032 | 328 192 |
etc.
Pour 7 exécutables, la taille totale passe de 5 899 776 à
1 743 872 octets. Le gain est de 4 010 464 octets, mais il faut livrer
en plus les fichiers VCL40.bpl et TEE40.bpl de 1 884 136 et 382 456 octets.
Le gain est alors de 1 889 312 octets. Ce gain va s'améliorer à
mesure que la suite de logiciels s'étoffera.
Pour 12 exécutables, le gain total est de 3,4 mégaoctets ; Ils tiennent une fois compressés par Install Shield facilement sur 2 disquettes, et il est possible d'en ajouter encore, car maintenant, chaque nouveau logiciel est très compact.
Cela nécessite par contre une planification préalable, car chaque logiciel devra être compilé en lui retirant les mêmes paquetages. Il ne faudra pas oublier de livrer ceux-ci (ils font partie des fichiers installé avec Delphi, dans C \ Windows \ system). Compte tenu de la taille des paquetages, il faut étudier le moyen de n'avoir à les livrer qu'une seule fois.
Cela est plus simple qu'il n'y paraît, car Install Shield détecte
automatiquement les paquetages qui doivent être ajoutés à
la suite logicielle et propose de les inclure dans les fichiers compressés.
Retour en haut de cette page
Deux techniques s'offrent à vous :
1 réaliser un fichier .hlp Windows, à l'aide d'un logiciel spécialisé (vous pouvez le réaliser avec un traitement de textes basique, puis le compiler à l'aide d'un outil livré avec Delphi, mais bonjour la galère), et le lier à votre exécutable,
2 ou un fichier HTML, mais dans ce cas, vous devrez associer un explorateur
Intranet à votre logiciel. Cette deuxième méthode
conduit cependant à un emploi plus lourd et plus lent de l'aide.
Pour créer le navigateur Intranet, cherchez dans les exemples livrés
avec Delphi, à Borland \ Delphi3 (ou 4) \ Demos \ CoolStuf \ ou
bien utilisez les outils Internet disponibles dans la palette d'outils,
à l'onglet Internet.
Pour la première méthode, il existe un logiciel américain,
HelpScribble, tout en anglais, dont l'adresse figure à la page de
bonnes adresses, accessible par la Home Page.
Mais nous avons préféré un logiciel français,
certes un peu "rigide" par moment, mais qui permet beaucoup de choses amusantes,
bandeaux défilants ... Il s'agit d'Help et Web de Escot - SEP Christophe
6, rue Saunière 31000 Toulouse. (Voir aussi nos pages de bonnes
adresses).
Ce logiciel
est hyper simple d'emploi, mais n'aime pas certaines fantaisies. Une fois
que vous aurez réalisé un fichier d'aide, vous ne pourrez
pas changer son adresse sur votre disque dur (ou du moins c'est difficile).
Lorsque vous nommez des cibles, donnez à chacune un nom différent
(il n'aime pas les changements à posteriori). Si vous joignez une
image, choisissez un fichier bitmap (de toute façon, Help et Web
compressera votre fichier d'aide), car les autres formats, jpeg ... ne
sont pas tous standards et peuvent provoquer des plantages. A part cela,
il marche bien.
Dans Help et Web, faites Fichier | Nouveau projet | Création
d'un projet vierge | Répertoire | Sélectionner ... Nom du
projet ... OK.
Vous êtes en présence de deux zones de travail redimensionnables,
un explorateur montrant l'arborescence de votre aide et une zone d'aperçu
de la page sur laquelle vous travaillez. Vérifiez que vous êtes
en mode édition (la fenêtre de droite est quadrillée).
Dans la zone explorateur de la structure du document, ajoutez vos chapitres
(icône en forme de livre) et les pages de ces chapitres (icône
en forme de feuille de papier). Sélectionnez une page, et passez
dans la fenêtre de droite pour éditer cette page. Vous pouvez
entrer le texte au clavier (mode aperçu), ou mieux par copier coller
depuis Word (en mode source, en collant après <<FIN ZONE FIXE>>.
Soyez patients, la gestion de l'espacement des caractères n'est
pas parfaite et il faut parfois être délicat pour placer le
curseur ; les flèches de défilement peuvent se révéler
utiles.
Une fois vos pages remplies, il vous faut placer les cibles ou signets.
Cliquez à côté d'un texte (mode aperçu), faites
clic droit et dans le menu qui se déroule, choisissez Poser un signet
(cible intra-rubrique ... ). Donnez un nom au signet (pas deux signets
portant le même nom ! ) | OK un drapeau apparaît.
Établissez maintenant vos liens hyper texte. Pour cela, sélectionnez un mot, ou un groupe de mots. Si la cible est dans la même page (exemple, retour en haut de page), allez dans la fenêtre de gauche, déroulez la liste Signets et cliquez sur celui que vous avez choisi. Si la cible est sur une autre page, faites clic droit | dans le menu qui se déroule choisissez Lien étendu (signet, autre projet ... ) | Dans l'explorateur qui s'ouvre sélectionnez le chapitre et la page (en ce cas, la cible sera le haut de la page) ou encore déroulez la liste déroulante et choisissez une cible dans la page | Validez.
Enregistrez votre projet.
Compilez le par Compiler | Compiler le projet | Onglet HLP | Compiler. Vous obtenez dans le sous dossier Help32, à l'adresse que vous aviez choisie, un fichier d'aide 32 bits pour Windows 95. Vous pouvez aussi obtenir des fichiers pour Windows 3.1 ou 98, ou pour un site Web. Dans Help32 figure aussi HelpID.pas, Unit pascal que vous pouvez associer à votre Project, si vous voulez que l'aide ouvre directement certaines pages particulières. En fait, chaque numéro de page est associé à un nom de variable pascal, et si vous changez l'ordre des pages, cela n'affecte pas ces noms de variables, que vous associez à l'appui de la touche F1.
Retour en haut de cette page
Sur le CD de Delphi, le programme InstallShield est proposé.
Installez le sur votre disque dur, il est très utile.
Supposons que vous, Monsieur Lemeilleur, créateur de la startup
(ou startdown ?) Lemeilleur, ayez rédigé les exécutables
Toto1.exe et Toto2.exe (Toto1 est le principal, celui qu'il faudra
lancer par un raccourci sur le bureau, employant des fonctionnalités
de Toto2 qui lui n'aura pas de raccourci) destinés à la mesure
de la température d'une tortue (transdisciplinarité oblige)
et que vous souhaitiez que par défaut, ils s'installent sur le disque
dur de la personne intéressée en C :\ Program Files \ Lemeilleur
\ Physique \ Toto1.exe (et Toto2.exe).
Toto1.exe est livré avec une aide en ligne nommée AideToto1.hlp
qui doit être rangée en : C :\ Program Files \ Lemeilleur
\ Physique \ Aides \ AideToto1.exe.
C'est à dire que le dossier Physique doit contenir les exécutables
Toto1.exe (avec raccourci sur le bureau), Toto2.exe et un sous dossier
Aides contenant AideToto1.hlp.
A l'aide de l'explorateur Windows, créez un répertoire
où sera rangé votre travail avec InstallShield, par exemple
C :\ Mesdoc \ LogicielTortue
Dans InstallShield faites : Fichiers | Nouveau | Nouveau projet.
Nom du Projet : C'est le nom qui s'affichera dans Démarrer |
Programmes | Nom du Projet | Raccourcis. Donc ici, Toto, ou quelque chose
de plus descriptif comme TortueT.
Chemin du projet : Adresse de sauvegarde de l'exécutable (Setup.exe)
compressé et des autres fichiers créés par InstallShield,
sur VOTRE disque dur (il faut bien que vous retrouviez votre travail !
), donc ici C :\ Mesdoc \ LogicielTortue.
Nouveau sous répertoire : Inutile, car l'explorateur est plus
pratique, laissez vide.
Ne pas inclure d'installation personnalisée, trop complexe à
gérer.
Créer.
InstallShield crée un fichier nommé TortueT.iwz, rangé
dans C :\ Mesdoc \ LogicielTortue, contenant vos informations, plus un
sous dossier TortueT, où seront rangés d'ici peu tous les
fichiers que vous devrez diffuser.
Dans une fenêtre à fond jaune, apparaît une liste de tâches à accomplir. Vous pouvez suivre un ordre quelconque et revenir en arrière.
Commencez par Définir la conception visuelle | Infos Application
| Cliquer. Dans Répertoire de destination par défaut, effacez
TortueT, et inscrivez Physique. Remarquez que ce ne sera pas très
parlant pour l'utilisateur, et qu'il vaudrait peut-être mieux nommer
ce sous dossier TortueT, comme vous le propose InstallShield, ce qui conduirait
pour les fichiers sur le disque dur de l'utilisateur au chemin suivant
: C :\ Program Files \ Lemeilleur \ TortueT \ ...
Nom de l'application : Lemeilleur.
Version : Remplacez 1.0 par le numéro qui vous convient (cela
sera utilisé par InstallShield pour les mises à jour ultérieures).
En automatique, InstallShield vous indique que l'exécutable
de votre application sera dans <Program Files Dir> \ Le meilleur \ Physique.
<Program Files Dir> signifie donc pour lui : C :\ Program Files.
Onglet Fenêtre principale | Titre principal | Écrire votre
publicité : "TortueT, le logiciel de la société Lemeilleur,
capable de mesurer la température d'une tortue, même quand
elle court" (par exemple).
Onglet Fonctionnalités | Désinstalleur automatique.
Faites OK. Vous retournez à la fenêtre jaune.
Dans Sélectionner les objets InstallShield pour Delphi | Options
générales | onglet Général, vous pouvez associer
à vos deux exécutables des paquets Delphi (pour programmation
avancée uniquement, sinon, ignorez cette tâche). OK.
Les paquets consistent en gros en ceci : si Toto1.exe et Toto2.exe
utilisent des composants visuels, ou une même librairie, les ressources
nécessaires sont stockées dans les deux, d'où un gaspillage.
Vous pouvez les compiler les deux sans ces ressources et adjoindre celles-ci
une seule fois à l'ensemble.
Dans Spécifier les composants et fichiers | Groupes et fichiers
| faire Nouveau groupe | dans Nom de groupe, faire Aide en ligne (c'est
un nom uniquement descriptif) | dans Répertoire de destination |
faire <installdir> \ Aides, ce qui créera le sous dossier Aides
pour le fichier AideToto1.hlp. | OK
Remarquez que vous sont proposées des options avancées
de mise à jour, permettant que les nouveaux dossiers n'écrasent
les anciens que sous certaines conditions (date, numéro de version
... ).
Vous revoilà dans Groupes et fichiers. Cliquez sur Aide en ligne,
dans l'arborescence du petit explorateur, et faites Insérer des
fichiers. Ajoutez AideToto1.hlp par double clic dans la boîte de
dialogue qui s'ouvre.
De même dans Fichiers programme, insérer Toto1.exe et
Toto2.exe. faites OK. Notez que les composants servent uniquement à
une installation personnalisée.
Par Clic droit | Propriétés, vous pouvez vérifier
que tout va bien. par exemple pour le dossier Aides, le répertoire
de destination des groupes est : <Installdir> \ Aides, ce qui signifie
: C :\ Program Files \ Lemeilleur \ Physique \ Aides.
Dans Spécifier les dossiers et icônes, faites Options générales
| Général | Commande à exécuter | Clic sur
...
Choisir le fichier exécutable dont le raccourci doit figurer
dans : Démarrer | Programmes | Lemeilleur. Ici, Toto1.exe | OK.
Puis cliquer sur Ajouter icône | OK.
dans Générateur de disques | Taille disque, choisissez
entre disquettes 1,40 Mo, ou CD-ROM | Générer.
Installshield compresse vos fichiers de façon efficace et range
le tout dans C :\ Program Files \ Lemeilleur \ Physique \ TortueT. | Fermer.
Suite à un bug, le test ne marche pas directement ; il faut dans le menu déroulant faire Liste de contrôle | 8 : Tester l'installation.
Enfin vous disposez de la possibilité d'enregistrer directement les disquettes à diffuser, par Menu déroulant | Liste de contrôle | 9 : Créer un support de distribution | Copier toutes les images disque, ou bien en changeant de fenêtre à fond jaune, pour passer à la page 3, par un clic en bas, à droite, et en faisant Créer un support de distribution | Copier sur disquettes.
Dans les deux cas, vous obtenez un dossier compressé, contenant plusieurs fichiers, diffusable par disquettes, ou CD-Rom (lancement de l'installation par double clic sur Setup.exe).
Par contre,
pour une diffusion par Internet, il faudra ensuite regrouper tous les fichiers
en un seul exécutable, à l'aide de Winzip (Il faut bien que
tout le monde vive ! ).
Retour en haut de cette page
Pour employer efficacement les concepts évoqués dans cette page, vous devez posséder un minimum de maîtrise de Delphi. Vous ne devez pas entrer tout le code dans une Unit Delphi, mais seulement certaines parties. De plus certaines procédures associées à une action sur des composants, par exemple un clic gauche sur un bouton
procedure TForm1.NouvPartieClick(Sender: TObject); begin end ;
doivent être ouvertes par Delphi (ici par double clic sur le bouton dont le Name est NouvPartie). Vous devez seulement copier le code entre begin et end;.
Disons, pour Delphi, que cela revient à passer d'une programmation très linéaire, à un début de programmation parallèle.
Pour Mathematica, la possibilité de créer des ensembles, pourvus d'opérations, d'objets mathématiques, dotées de propriétés permet de se livrer à une véritable recherche à la fois fondamentale et expérimentale.
Vous pouvez aussi consulter dans ce même chapitre, une page proposant une technique différente, employant des tableaux d'objets.
Nous pourrions tout écrire à la main, mais il est plus commode, beaucoup plus rapide, et plus esthétique d'utiliser des objets Delphi tout faits, appelés composants. De plus, utiliser des composants, limite les risques d'erreur de programmation, car chacun a été longuement testé par Borland.
Nous allons employer des Edit.
Seulement voilà : les mots n'ont pas tous la même longueur ; il nous faut un nombre d'Edit variables. Nous pourrions en placer un peu trop et rendre invisibles les excédentaires.
Chaque objet Edit a des propriétés, dont l'une se nomme Visible.
Edit1.Visible:=False masque l'Edit1.
On appelle propriété d'un objet informatique une entité constituée d'un champ et d'une action. La propriété Visible a un champ qui contient la valeur de la propriété ; ici, il s'agit d'un Boolean qui peut être True ou False. L' action est ce qui se passe lorsque la valeur du champ est modifiée ; ici, l'Edit apparaît, ou disparaît.
Retour en haut de cette page
Afin de vous permettre de savoir où entrer votre code, nous avons laissé du code que Delphi crée en automatique. Ne le retapez pas. Ouvrez un nouveau Project et faites Sauver Sous. Nommez l'Unit1 UnitPenduPrincipale. Créez une deuxième Unit par Fichier | Nouvelle fiche, faites sauver Sous et nommez la UnitCreerEdit. Placez dans la Form associée à cette Unit un Edit.
Puis entrez du code, pour que cette Unit ressemble à ceci :
unit UnitCreerEdit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm2 = class(TForm)
Edit1: TEdit;
private
{Déclarations privées}
public
{Déclarations publiques}
end;
Type
TEditSpecial=Class(TEdit)
public
Constructor Create(Owner : TComponent); Override;
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
Constructor TEditSpecial.Create(Owner : TComponent);
begin
Inherited Create(Owner);
Width := 27; Height := 27 ;
end;
end.
ATTENTION
! La déclaration de compilation {$R *.DFM} que Delphi écrit
automatiquement ne doit figurer qu'une seule fois dans votre Unit. Lorsque
vous allez entrer le code donné dans cette page, le plus sur est
de procéder par Copier Coller.
Vous pouvez, pour commencer, coller tout le texte, après le
End. final de votre Unit, puis transférer en bonne place des fragments
de code. Même placé après le End. final, la directive
de compilation provoque une erreur nommée Duplicating ressources.
Nous voyons que notre Classe TEditSpeciale dérive de la classe TEdit ; elle hérite donc de tous ses champs, méthodes, propriétés, événements.
La méthode Create est un constructeur. Elle sert à Delphi, lors de la création dynamique, d'un Edit, ici. Nous décidons de la surcharger, pour imposer à nos futurs objets EditSpecial une hauteur et une largeur commune. C'est la signification de la directive Override, ajoutée à la redéclaration de la méthode.
Dans la partie Implementation, nous redéfinissons la méthode Create. Mais nous souhaitons garder les autres propriétés de la méthode Create des TEdit. D'où la déclaration :
Inherited Create(Owner); qui permet à notre nouvelle méthode Create d'hériter de toutes les propriétés de celle dont elle dérive.
Seuls Width := 27; Height := 27 ; seront modifiés.
Retour en haut de cette page
Exemple : Var afficheLettre1 : TEditSpecial ;
et plus loin, il faudra procéder à la création par : afficheLettre1 := TEditSpecial.Create(Application) ;
Mais cette méthode est encore trop rigide, car tous les EditSpecial devront être déclarés par avance.
Voici comment faire, pour créer dynamiquement un objet, en lui donnant un Name de façon dynamique :
La encore, entrez le code avec discernement. par exemple, procedure NouvPartieClick(Sender: TObject); est créé automatiquement par Delphi, lorsque vous double cliquez sur le bouton de Name NouvPartie.
Retour en haut de cette page
implementation
{$R *.DFM}
Uses
UnitCreerEdit ;
procedure TForm1.NouvPartieClick(Sender: TObject);
Var i : Integer ;
begin
{On détruit les anciens Edit d'affichage du texte}
For i := 1 To Length(MotRecherche) Do
(Form1.FindComponent('afficheLettre' + IntToStr(i)) as TEditSpecial).Free
;
{remarquez comment on transforme une String en nom d'un objet. La méthode
Free a l'avantage de ne pas déclencher une exception si l'objet
n'existe pas, contrairement à Destroy}
{on crée maintenant les EditSpecial en quantité suffisante.
Attention, cette méthode est très lente. Les Name sont créés
dynamiquement par : Name := 'afficheLettre' + IntToStr(i) ;
Notez que Create(Self) ne marche que si la procédure est créée
par Delphi lui-même, ici, par double clic sur un Button}
motRecherche := 'Essayerais' ;
{On crée les Edits d'affichage du mot à rechercher}
For i := 1 To Length(motRecherche) Do Begin
With UnitCreerEdit.TEditSpecial.Create(Self) Do // Self->Application
begin {ne marche que dans un clic bouton}
Parent := Self ;
Left:= Trunc(L - 35*Length(MotRecherche)/2 + 35 * i) ;
Top:= Trunc(0.75 * H) ;
ReadOnly := True ;
Name := 'afficheLettre' + IntToStr(i) ;
Visible := True ;
If ((i=1) Or (i= Length(MotRecherche))) Then Text:= MotRecherche[i]
Else Text := '' ;
end; End ;
end;
end.
Retour en haut de cette page
Cet exemple utilise l'événement OnActiveControlChange pour détecter si la focalisation est modifiée sur la fiche. Le cas échéant, le contrôle actif est dessiné en rouge. Tous les autres contrôles sont de la couleur de la fenêtre donnée dans le panneau de contrôle.
type
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
private
{ déclarations privées }
public
procedure ColorControl(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ControlerCouleur(Sender: TObject);
var
I : Integer;
begin
for I:= 0 to ControlCount -1 do
begin
if Controls[I] is TWinControl then
begin
if (Controls[I] as TWinControl).Focused then
Controls[I].Color := clRed
else
Controls[I].Color := clWindow;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange := Controler Couleur ;
end;
Retour en haut de cette page
Retour en haut de cette page
En temps
normal, il vaut mieux employer des fonctions Delphi encapsulant les API.
Car cela permet au code source d'être indépendant du système
d'exploitation (Win 3.1, 95, Linux ... ). Les deux fonctions qui suivent
se trouvent aussi dans la librairie Delphi, nommée pour l'instant
Candibus, avec des noms plus simples et un seul paramètre (Voir
le chapitre IESP) :
AccederAUnSiteInternet(adresseSite : String)
EcrireAuxAuteurs (adresseMail : String).
uses WinTypes, ShellAPI;
begin
ShellExecute( 0, Nil, PChar('http://perso.wanadoo.fr/jussiaux.software/'),Nil,
Nil, SW_NORMAL );
end;
Qui peut avec la librairie additionnelle s'écrire :
Candibus.AccederAUnSiteInternet('http://perso.wanadoo.fr/jussiaux.software/')
Les deux adresses sont de type String.
Ceci peut, avec la librairie additionnelle que nous vous proposons, s'écrire :
Candibus.EcrireAuxAuteurs ('Jean.Michel.Jussiaux@wanadoo.fr').
En donnant un nom plus simple à ces deux fonctions, vous pouvez vous aussi les inclure dans une bibliothèque personnelle de Delphi, et permettre ainsi à vos élèves d’IESP de rédiger en quelques secondes un logiciel capable d’accéder à Internet. C'est ce que nous avons fait dans la bibliothèque Candibus pour Delphi 4, que nous vous proposons en télé chargement., dans le chapitre Logiciels, ou dans TP, IESP, page 1.
Retour en haut de cette page
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
IF (Key=VK_ESCAPE ) Then Form1.Edit1.Text := 'ça marche
!' ;
end;
Le deuxième affiche une boîte de message, contenant la lettre qui a été pressée
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
MessageDlg(Key + ' a été appuyée',
mtInformation, [mbOK], 0)
end;
Remarquez que la variable Key n'appartient pas à la même classe dans les deux cas (Word, ou Char).
Ces codes sont du type Word. Ils n'ont pas tous été
testés. Les codes souris ne marchent pas dans les procédures
précédentes.
VK_LBUTTON ($01) | bouton Gauche Souris | VK_RBUTTON ($02) | bouton Droite Souris |
VK_NUMPAD3 ($63) | Touche pavé numérique 3 | VK_NUMPAD4 ($64) | Touche pavé numérique 4 |
VK_NUMPAD5 ($65) | Touche pavé numérique 5 | VK_NUMPAD6 ($66) | Touche pavé numérique 6 |
VK_INSERT ($2D) | Insérer | VK_DELETE ($2E) | Supprimer |
VK_HELP ($2F) | Aide | VK_NUMPAD0 ($60) | Touche pavé numérique 0 |
VK_NUMPAD1 ($61) | Touche pavé numérique 1 | VK_NUMPAD2 ($62) | Touche pavé numérique 2 |
VK_HOME ($24) | Début | VK_LEFT ($25) | Flèche gauche |
VK_UP ($26) | Flèche haut | VK_RIGHT ($27) | Flèche droite |
VK_DOWN ($28) | Flèche bas | VK_SNAPSHOT ($2C) | Impression d'écran |
VK_MBUTTON ($04) | bouton Central Souris | VK_TAB ($09) | Tabulation |
VK_BACK ($08) | Retour Arrière | VK_RETURN ($0D) | Entrée |
VK_SHIFT ($10) | Touche de contrôle MAJ | VK_CONTROL ($11) | Touche de contrôle CTRL |
VK_MENU ($12) | Touche de contrôle ALT | VK_PAUSE ($13) | Pause |
VK_ESCAPE ($1B) | Echappement | VK_SPACE ($20) | Barre d'espace |
VK_PRIOR ($21) | Page Haut | VK_NEXT ($22) | Page Bas |
VK_CANCEL ($03) | Arrêt Exec. programme | VK_END ($23) | Fin |
VK_F19 ($82) | Touches de fonction F19 | VK_F18 ($81) | Touches de fonction F18 |
VK_NUMPAD8 ($68) | Touche pavé numérique 8 | VK_NUMPAD7 ($67) | Touche pavé numérique 7 |
VK_MULTIPLY ($6A) | Touche pavé numérique * | VK_NUMPAD9 ($69) | Touche pavé numérique 9 |
VK_SEPARATOR ($6C) | Touche pavé numérique Entrée | VK_ADD ($6B) | Touche pavé numérique + |
VK_DECIMAL ($6E) | Touche pavé numérique . | VK_SUBTRACT ($6D) | Touche pavé numérique - |
VK_F1 ($70) | Touches de fonction F1 | VK_DIVIDE ($6F) | Touche pavé numérique / |
VK_F3 ($72) | Touches de fonction F3 | VK_F2 ($71) | Touches de fonction F2 |
VK_F5 ($74) | Touches de fonction F5 | VK_F4 ($73) | Touches de fonction F4 |
VK_F7 ($76) | Touches de fonction F7 | VK_F6 ($75) | Touches de fonction F6 |
VK_F9 ($78) | Touches de fonction F9 | VK_F8 ($77) | Touches de fonction F8 |
VK_F11 ($7A) | Touches de fonction F11 | VK_F10 ($79) | Touches de fonction F10 |
VK_F13 ($7C) | Touches de fonction F13 | VK_F12 ($7B) | Touches de fonction F12 |
VK_F15 ($7E) | Touches de fonction F15 | VK_F14 ($7D) | Touches de fonction F14 |
VK_F17 ($80) | Touches de fonction F17 | VK_F16 ($7F) | Touches de fonction F16 |
VK_F21 ($84) | Touches de fonction F21 | VK_F20 ($83) | Touches de fonction F20 |
VK_F23 ($86) | Touches de fonction F23 | VK_F22 ($85) | Touches de fonction F22 |
VK_NUMLOCK ($90) | Verrouillage pavé numérique | VK_F24 ($87) | Touches de fonction F24 |
VK_CAPITAL | Verrouillage majuscules | VK_SCROLL ($91) | Verrouillage scrolling |
Retour en haut de cette page