Les langages informatiques se sont développés du langage machine au langage de haut niveau, du complexe au simple (en fait, ce n'est pas simple), ce qui reflète le développement de l'informatique et de la technologie. Plus un langage informatique est avancé, plus il est abstrait et humain, moins il a à voir avec du matériel de bas niveau et plus il est pratique à utiliser. Mais aussi avancé que soit le langage informatique, il s'agit d'une abstraction de la couche du système d'exploitation, nous pouvons donc toujours découvrir les règles de compréhension des langages de haut niveau, c'est-à-dire : les codes écrits dans les langages de haut niveau ne sont que pour décrire les besoins des gens, et ces codes doivent être transmis par "Traducteur" qui les traduit sous forme de langage machine afin qu'ils puissent être reconnus et exécutés par l'ordinateur. Il existe deux méthodes dites de traduction : l'une est la méthode de compilation, dans laquelle le code est généré à l'avance en langage machine par le compilateur, puis planifié et exécuté par le système d'exploitation, comme le langage Delphi, le langage C++, etc. ; l'autre est la méthode d'interprétation, qui est un avantage dans le calcul. L'interprétation et l'exécution n'affectent pas le programme cible, comme le langage de base, le langage de script, etc. Les caractéristiques de la méthode d’interprétation sont une vitesse d’exécution lente et des exigences relativement élevées en matière de matériel informatique.
Les langages informatiques définissent des règles qui décrivent les besoins des gens. Derrière le langage se cache un compilateur ou un interprète. La tâche principale d'un compilateur ou d'un interprète est de traduire le code et de devenir le principal canal de communication entre les humains et les ordinateurs. De cette façon, lorsque le système d'exploitation reste inchangé, divers outils de développement montrent leurs capacités uniques, mais en fin de compte, ils doivent générer du code exécutable par ordinateur. Par conséquent, quel que soit le langage informatique dans lequel un programme est écrit, sa qualité dépend en grande partie du compilateur ou de l’interprète de ce langage. Le compilateur Delphi reste le compilateur le plus avancé, le meilleur et le plus efficace au monde.
Du point de vue des caractéristiques des langages de haut niveau, ils constituent essentiellement une encapsulation des interfaces de service fournies par le système d'exploitation et, sur cette base, ajoutent leurs propres fonctionnalités de langage, telles que la POO, les pointeurs, les modes de gestion de la mémoire, etc.
À partir de toute l'architecture du langage Delphi, lorsque nous écrivons des programmes, soit nous utilisons directement la VCL, soit nous appelons l'API fournie par le système d'exploitation, soit nous utilisons les services Com, soit nous utilisons directement le langage assembleur pour terminer notre travail.
L'essentiel et le plus important de Delphi est la bibliothèque de composants visuels (VCL - Visual Component Library) et la bibliothèque de composants multiplateformes (CLX - aComponent Library for Cross-Platform), qui sont similaires à Microsoft MFC, mais son architecture est au moins deux à trois ans de plus que MFC Trois générations. Lors de la programmation dans Delphi, vous pouvez choisir VCL ou ne pas repartir de zéro. Supposons que vous écriviez un programme qui crée une fenêtre et affiche « Hello world ». Si vous n'utilisez pas VCL, vous devez commencer par appeler CreateWindow de l'API. C'est une chose très gênante, mais cela dépend de vos besoins. Cela montre simplement qu'il n'est pas impossible d'utiliser la programmation Delphi sans VCL, comme les programmes console.
VCL est une puissante bibliothèque de classes, qui constitue l'essence et la cristallisation des fonctionnalités orientées objet du langage Delphi. La structure du diagramme de classes est la suivante :
Il s'agit d'une structure de diagramme de classes abrégée, mais elle est très représentative. À partir du diagramme de classes, nous pouvons voir que VCL n'a qu'une seule racine - TObjct, et que chacune de ses classes dérivées n'a qu'un seul ancêtre. C'est la fonctionnalité orientée objet du langage Delphi. L'ancêtre le plus original de toutes les classes est TObjcet, et la méthode d'héritage est l'héritage unique. Ce qu'il faut expliquer c'est :
l Bien que la conception VCL soit classique et énorme, ne vous laissez pas intimider par cela. Pour parler franchement, il s'agit d'une bibliothèque de classes dans laquelle de nombreuses classes associées sont rassemblées pour remplir certaines fonctions. Ces classes encapsulent les API Windows, appellent les services Windows COM ou utilisent l'assembly pour fonctionner directement. Comme mentionné précédemment, nous pouvons écrire des programmes avec ou sans VCL, ce qui signifie que VCL n'est pas nécessaire. Si nécessaire, nous pouvons hériter et étendre n'importe laquelle des classes pour en faire une classe qui répond à nos propres exigences. Par exemple, si l'on souhaite étendre la classe TPanal, les événements correspondants (OnMouseEnter/OnMouseLeave) peuvent être déclenchés lorsque la souris entre et sort, comme la fonction du panneau QQ.
u Créez une nouvelle unité à partir de [Fichier] -> [Nouveau] -> [Unité].
u Écrivez le code comme suit, puis enregistrez l'unité sous MyPanelUnit.
unité MyPanelUnit ;
interface
utilise des classes, des ExtCtrls, des messages, des contrôles ;
taper
TMouseActionEvent = PRocedure(Sender: TObject) de l'objet ;
TMyPanel = classe (TPanel)
privé
FOnMouseEnter, FOnMouseLeave :
FouseActionEvent ;
//Intercepter le message d'entrée de la souris
procédure WMMouseEnter (var Message :
TMessage); message CM_MOUSEENTER;
//Intercepter le message de déplacement de la souris
procédure WMMouseLeave (var Message :
TMessage); message CM_MOUSELEAVE;
publié
propriété OnMouseEnter : lecture de TMouseActionEvent
FOnMouseEnter écrire FOnMouseEnter ;
propriété OnMouseLeave : lecture de TMouseActionEvent
FOnMouseLeave écrit FOnMouseLeave ;
fin;
// Notez que le "R" dans "Register" doit être en majuscule. C'est le seul endroit dans le langage Delphi qui nécessite une attention particulière à la taille.
registre de procédure ;
mise en œuvre
{TMyPanel}
registre de procédure ;
commencer
//Enregistre le composant dans l'EDI de Delphi et affiche-le sur le panneau "MyControl"
RegisterComponents('MonContrôle', [TMyPanel]);
fin;
procédure TMyPanel.WMMouseEnter(var Message: TMessage);
commencer
//Détermine s'il y a du code lorsque la souris entre et s'il est exécuté
si assigné (FOnMouseEnter) alors
FOnMouseEnter(Soi);
fin;
procédure TMyPanel.WMMouseLeave(var Message: TMessage);
commencer
//Détermine s'il y a du code lorsque la souris entre et s'il est exécuté
si assigné (FOnMouseLeave) alors
FOnMouseLeave(Soi);
fin;
fin.
u Cliquez ensuite sur [Composant] -> [Installer le composant…], comme indiqué ci-dessous :
Sélectionnez l'unité que nous venons de créer, MyPanelUnit.pas, dans "Nom du fichier de l'unité" et laissez les autres options par défaut. Cliquez ensuite sur "OK", sélectionnez "Oui" dans "Le package dclusr.bpk sera construit puis installé, Continuer ?" et enregistrez-le après compilation et installation. De cette façon, le contrôle TmyPanel sera installé dans Delphi. Faites défiler le panneau de configuration Delphi jusqu'à la fin et vous verrez la page de contrôle MyControl comme indiqué ci-dessous :
u Créez ensuite un nouveau projet, cliquez sur [Fichier]->[Nouveau]->[application], faites glisser MyPanel de la page MyControl vers le formulaire, appuyez sur la touche F11 et passez à la page Événements, comme suit :
Comparez-le avec TPanel pour voir s'il y a plus d'événements OnMouseEnter et OnMouseLeave. Double-cliquez sur OnMouseEnter et écrivez le code comme suit :
procédure TForm1.MyPanel1MouseEnter(Expéditeur : TObject);
commencer
ShowMessage('La souris entre dans MyPanel1');
fin;
Appuyez ensuite sur F9 pour exécuter, déplacez la souris sur MyPanel1 et voyez le résultat.
C'est aussi simple que cela. Nous avons étendu TPanel pour avoir la capacité de gérer les événements d'entrée et de suppression de la souris, afin que la VCL ne soit pas mystérieuse. N'importe qui peut réécrire les composants (classes) à l'intérieur pour en faire ce qu'il veut.
l Delphi prend en charge l'héritage d'interface, qui, dans un sens, implémente l'héritage multiple. Par exemple, TComponent est défini comme suit :
TComponent = classe (TPersistent, IInterface,
IInterfaceComponentRéférence)
l Ne créez pas d'instances de classes abstraites. Tant qu’une méthode d’une classe est une méthode abstraite, alors la classe est une classe abstraite. Par exemple, TStrings est défini comme suit :
TStream = classe (TObject)
privé
…
protégé
…
publique
fonction Read(var Buffer; Count: Longint) : Longint ; virtuel ;
fonction Write(const Buffer; Count: Longint) : Longint virtuel ;
…
fin;
Tant qu'il y a un mot-clé abstrait dans la définition d'une méthode, c'est une méthode abstraite. Cela n'a aucun sens d'utiliser une classe abstraite pour créer une instance, car Read et Write ne sont pas implémentés et un exemple apparaîtra s'il est appelé.
(Inachevé, veuillez vous référer aux coulisses de Delphi --- Référence du débutant, partie 2 (2))
(Si vous devez réimprimer, veuillez indiquer la source et l'auteur http://haitian.myrice.com)