Computersprachen haben sich von der Maschinensprache zur Hochsprache entwickelt, von komplex zu einfach (tatsächlich ist es nicht einfach), was die Entwicklung der Informatik und Technologie widerspiegelt. Je fortschrittlicher eine Computersprache ist, desto abstrakter und menschlicher ist sie, desto weniger ist sie mit Low-Level-Hardware verbunden und desto bequemer ist ihre Verwendung. Aber egal wie fortgeschritten die Computersprache ist, sie ist eine Abstraktion der Betriebssystemschicht, sodass wir immer die Regeln herausfinden können, die hinter dem Verständnis von Hochsprachen stehen, das heißt: Nur der in Hochsprachen geschriebene Code Um die Bedürfnisse der Menschen zu beschreiben, müssen diese Codes übergeben werden. „Übersetzer“ übersetzt sie in Maschinenspracheform, damit sie vom Computer erkannt und ausgeführt werden können. Es gibt zwei sogenannte Übersetzungsmethoden: Eine davon ist die Kompilierungsmethode, bei der der Code vorab vom Compiler in Maschinensprache generiert und dann vom Betriebssystem geplant und ausgeführt wird, z. B. in der Delphi-Sprache, der C++-Sprache usw. ; Die andere ist die Interpretationsmethode, die einen Vorteil bei der Berechnung und Ausführung hat und sich nicht auf das Zielprogramm auswirkt, z. B. auf die Basissprache, die Skriptsprache usw. Die Merkmale der Interpretationsmethode sind eine langsame Laufgeschwindigkeit und relativ hohe Anforderungen an die Computerhardware.
Computersprachen definieren Regeln, die die Bedürfnisse der Menschen beschreiben. Hinter der Sprache steht ein Compiler oder Interpreter. Die Hauptaufgabe eines Compilers oder Interpreters besteht darin, Code zu übersetzen und zum Hauptkanal für die Kommunikation zwischen Mensch und Computer zu werden. Auf diese Weise zeigen verschiedene Entwicklungstools ihre einzigartigen Fähigkeiten, wenn das Betriebssystem unverändert bleibt, aber am Ende müssen sie computerausführbaren Code generieren. Unabhängig davon, in welcher Computersprache ein Programm geschrieben ist, hängt es daher weitgehend vom Compiler oder Interpreter dieser Sprache ab, ob es gut oder schlecht ist. Der Compiler von Delphi ist immer noch der fortschrittlichste, beste und effizienteste Compiler der Welt.
Den Eigenschaften von Hochsprachen nach zu urteilen, kapseln sie grundsätzlich die vom Betriebssystem bereitgestellte Serviceschnittstelle und fügen auf dieser Basis eigene Sprachfunktionen wie OOP, Zeiger, Speicherverwaltungsmodi usw. hinzu.
In der gesamten Architektur der Delphi-Sprache verwenden wir beim Schreiben von Programmen entweder direkt VCL, rufen die vom Betriebssystem bereitgestellte API auf, verwenden Com-Dienste oder verwenden direkt die Assemblersprache, um unsere Arbeit abzuschließen.
Der Kern und das Beste an Delphi ist die Visual Component Library (VCL – Visual Component Library) und die plattformübergreifende Komponentenbibliothek (CLX – aComponent Library for Cross-Platform), die Microsoft MFC ähneln, aber in ihrer Architektur zumindest ähnlich sind zwei bis drei Jahre weiter fortgeschritten als MFC. Drei Generationen. Beim Programmieren in Delphi können Sie VCL wählen oder nicht ganz von vorne beginnen. Angenommen, Sie schreiben ein Programm, das ein Fenster erstellt und „Hallo Welt“ anzeigt. Wenn Sie VCL nicht verwenden, müssen Sie zunächst CreateWindow der API aufrufen, aber es hängt von Ihren Anforderungen ab. Dies zeigt nur, dass es nicht unmöglich ist, Delphi-Programmierung ohne VCL zu verwenden, beispielsweise als Konsolenprogramme.
VCL ist eine leistungsstarke Klassenbibliothek, die die Essenz und Kristallisation der objektorientierten Funktionen der Delphi-Sprache darstellt. Die Klassendiagrammstruktur ist wie folgt:
Dies ist eine abgekürzte Klassendiagrammstruktur, die jedoch sehr repräsentativ ist. Aus dem Klassendiagramm können wir ersehen, dass VCL nur eine Wurzel hat – TObjct, und jede ihrer abgeleiteten Klassen nur einen Vorfahren hat. Dies ist die objektorientierte Funktion der Delphi-Sprache. Der ursprünglichste Vorfahre aller Klassen ist TObjcet, und die Vererbungsmethode ist die Einzelvererbung. Was erklärt werden muss ist:
l Obwohl das VCL-Design klassisch und riesig ist, lassen Sie sich davon nicht einschüchtern. Um es ganz klar auszudrücken: Es handelt sich um eine Klassenbibliothek, in der viele verwandte Klassen zusammengestellt werden, um bestimmte Funktionen zu kapseln, Windows-COM-Dienste aufzurufen oder Assembler für den direkten Betrieb zu verwenden. Wie bereits erwähnt, können wir Programme mit oder ohne VCL schreiben, was bedeutet, dass VCL nicht erforderlich ist. Bei Bedarf können wir jede der Klassen erben und erweitern, um sie zu einer Klasse zu machen, die unseren eigenen Anforderungen entspricht. Wenn wir beispielsweise die TPanal-Klasse erweitern möchten, können die entsprechenden Ereignisse (OnMouseEnter/OnMouseLeave) beim Betreten und Verlassen der Maus ausgelöst werden, beispielsweise die Funktion des QQ-Panels.
u Erstellen Sie eine neue Einheit über [Datei] -> [Neu] -> [Einheit].
u Schreiben Sie den Code wie folgt und speichern Sie die Einheit dann als MyPanelUnit.
Einheit MyPanelUnit;
Schnittstelle
verwendet Klassen, ExtCtrls, Nachrichten, Steuerelemente;
Typ
TMouseActionEvent = PRocedure(Sender: TObject) des Objekts;
TMyPanel = Klasse(TPanel)
Privat
FOnMouseEnter, FOnMouseLeave:
FouseActionEvent;
//Mauseingabenachricht abfangen
procedure WMMouseEnter (var Nachricht:
TMessage); Nachricht CM_MOUSEENTER;
//Mausbewegungsnachricht abfangen
procedure WMMouseLeave (var Nachricht:
TMessage); Nachricht CM_MOUSELEAVE;
veröffentlicht
Eigenschaft OnMouseEnter: TMouseActionEvent gelesen
FOnMouseEnter write FOnMouseEnter;
Eigenschaft OnMouseLeave: TMouseActionEvent gelesen
FOnMouseLeave write FOnMouseLeave;
Ende;
//Beachten Sie, dass das „R“ in „Register“ großgeschrieben werden muss. Dies ist die einzige Stelle in der Delphi-Sprache, bei der auf die Größe geachtet werden muss.
Verfahren Registrieren;
Durchführung
{TMyPanel}
Verfahren Registrieren;
beginnen
//Registrieren Sie die Komponente in der Delphi-IDE und zeigen Sie sie im Panel „MyControl“ an.
RegisterComponents('MyControl', [TMyPanel]);
Ende;
procedure TMyPanel.WMMouseEnter(var Message: TMessage);
beginnen
//Bestimmen Sie, ob beim Betreten mit der Maus Code vorhanden ist und ob dieser ausgeführt wird
wenn Assigned(FOnMouseEnter) dann
FOnMouseEnter(Self);
Ende;
procedure TMyPanel.WMMouseLeave(var Message: TMessage);
beginnen
//Bestimmen Sie, ob beim Betreten mit der Maus Code vorhanden ist und ob dieser ausgeführt wird
wenn Assigned(FOnMouseLeave) dann
FOnMouseLeave(Self);
Ende;
Ende.
u Klicken Sie dann auf [Komponente] -> [Komponente installieren…], wie unten gezeigt:
Wählen Sie die soeben erstellte Einheit, MyPanelUnit.pas, unter „Einheitendateiname“ aus und belassen Sie die anderen Optionen als Standard. Klicken Sie dann auf „OK“, wählen Sie „Ja“ in „Paket dclusr.bpk wird erstellt und dann installiert, fortfahren?“ und speichern Sie es nach der Kompilierung und Installation. Auf diese Weise wird das TmyPanel-Steuerelement in Delphi installiert. Scrollen Sie durch das Delphi-Kontrollfeld bis zum Ende und Sie sehen die Kontrollseite MyControl wie unten gezeigt:
u Erstellen Sie dann ein neues Projekt, klicken Sie auf [Datei] -> [Neu] -> [Anwendung], ziehen Sie MyPanel von der MyControl-Seite in das Formular, drücken Sie die Taste F11 und wechseln Sie wie folgt zur Seite „Ereignisse“:
Vergleichen Sie es mit TPanel, um zu sehen, ob es weitere OnMouseEnter- und OnMouseLeave-Ereignisse gibt. Doppelklicken Sie auf OnMouseEnter und schreiben Sie den Code wie folgt:
procedure TForm1.MyPanel1MouseEnter(Sender: TObject);
beginnen
ShowMessage('Die Maus betritt MyPanel1');
Ende;
Drücken Sie dann zum Ausführen F9, bewegen Sie die Maus zu MyPanel1 und sehen Sie sich das Ergebnis an.
So einfach ist das. Wir haben TPanel um die Möglichkeit erweitert, Ereignisse beim Eintreten und Entfernen mit der Maus zu verarbeiten, sodass jeder die darin enthaltenen Komponenten (Klassen) nach seinen Wünschen umschreiben kann.
l Delphi unterstützt die Schnittstellenvererbung, die gewissermaßen eine Mehrfachvererbung implementiert. TComponent ist beispielsweise wie folgt definiert:
TComponent = class(TPersistent, IInterface,
IInterfaceComponentReference)
l Erstellen Sie keine Instanzen abstrakter Klassen. Solange eine Methode in einer Klasse eine abstrakte Methode ist, ist die Klasse eine abstrakte Klasse. TStrings ist beispielsweise wie folgt definiert:
TStream = Klasse(TObject)
Privat
…
geschützt
…
öffentlich
function Read(var Buffer; Count: Longint): Longint virtual;
function Write(const Buffer; Count: Longint): Longint virtual;
…
Ende;
Solange die Definition einer Methode ein abstraktes Schlüsselwort enthält, handelt es sich um eine abstrakte Methode. Es macht keinen Sinn, eine abstrakte Klasse zum Erstellen einer Instanz zu verwenden, da Lesen und Schreiben nicht implementiert sind und beim Aufruf ein Beispiel angezeigt wird.
(Unvollendet, siehe Hinter den Kulissen von Delphi – Referenz für Anfänger Teil 2 (2))
(Wenn Sie einen Nachdruck benötigen, geben Sie bitte die Quelle und den Autor an: http://haitian.myrice.com)