Geeignet für Anfänger in Delphi, Personen mit objektorientiertem Wissen und Erfahrungen in Java- oder VC-Programmierung.
Wir sehen oft einen solchen Code in der Delphi -Klasse: Eigenschaft Eigenschaft Eigenschaft Eigenschaft Typ Name Lesezeichenfolge 1 Schreiben Zeichenfolge 2
Die Namen von Attributen hier können unterschiedlich sein. Alle sind in diesem Format: Eigenschaftsname Lesen Sie Zeichenfolge 1 Schreiben Sie Zeichenfolge 2
Ich habe Eigenschaft gelassen: Integer Read Fleft Write SetLeft; Links ist eine ganzzahlige Eigenschaft. Lesen Sie deklariert die Variable oder Methode, um auf die Variable zuzugreifen, und schreibt die Variable oder die Methode, um beim Ändern der Variablen zugreifen zu können. Hinweis: Es kann eine Variable oder eine Methode sein. Hier ist es eine Variable namens Fleft. Zum Zweck der Kapselung setzen wir in der Regel solche Variablen in der Mitte privat.
Fleft: Integer Code (für die Namensgewohnheiten nennen wir eine solche Variable als Kapital F vor dem Attributnamen). Auf diese Weise greifen Sie beim Lesen der Immobilie tatsächlich auf den Wert von Fleft zu. Sie können also einige Methoden schreiben, um Flex zu ändern und den Wert des linken Werts indirekt zu ändern. Dann schauen wir uns Setleft erneut an Stellungnahme:
Prozedur SetLeft (Wert: Ganzzahl);
und die folgende Code -Implementierung:
procedure tcontrol.setLeft (Wert: Ganzzahl);
Beginnen
Setbounds (Wert, FTOP, FWIDTH, FHEYS);
Inklusive (fscalingflags, sfleft);
Ende;
Wenn Sie den folgenden Code schreiben, um links zu ändern: Control1.Left: = 23, ruft das Programm die Funktion SETLEFT (23) auf, eine Funktion, die die Region verändert. Links verändert es die Größe des Bereichs gemäß der neuen Linke, und diese Funktion ändert auch die Größe der Fleft.
procedure tcontrol.setBounds (Aleft, ATOP, Awidth, AHELT: Ganzzahl);
Beginnen
Wenn checknewSize (awidth, ahyght) und
((Aleft <> fleft) oder (atop <> ftop) oder
(Awidth <> fwidth) oder (ahyth <> fheight)) dann
Beginnen
InvalyEdEcontrol (sichtbar, falsch);
Fleft: = Aleft;
Ftop: = atop;
Fwidth: = awidth;
Fheight: = ahyeight;
Updateanchorrulen;
Ungültig;
Perform (wm_windowposchanged, 0, 0);
Requestalign;
Wenn nicht (CSLOADING IN COMPONENTSTATE), dann ändern Sie die Größe;
Ende;
Ende;
Auf diese Weise sieht die Außenseite so aus, als würde der Wert des Attributs nur durch Zuordnungsoperationen geändert. Lesen und Schreiben können je nach Design Variablen oder Funktionen sein. Natürlich können Sie Folgendes schreiben: Eigenschaften Eigenschaften Eigenschaften Eigenschaft Typ Name Lesevariable 1 Schreiben Sie Variable 2. Variable 1 und Variable 2 können gleich sein. Sie können diese Eigenschaftseigenschaftseigenschafts -Eigenschaft Typ Name Lese -Methode 1 Schreibmethode 2 durchführen. Jede Kombination für Sie. Es gibt jedoch zwei Dinge zu beachten:
1. Die Namensregeln basieren am besten auf Gewohnheiten und sind leicht zu lesen.
2. Wenn es sich um eine Variable handelt, muss der Typ dem Typ des Attributs übereinstimmen.
Wir verwenden häufig die Ereignisattribute von Komponenten, wie z. B. Klickereignisse, aber es ist schwierig für uns, von der Oberfläche zu sehen, wie es aufgerufen wird und wie es ausgelöst wird. Ich werde dir unten antworten.
In dem Objektinspektor des Property Managers sehen wir, dass der Name einer Methode dem Recht auf der Ereignisseite Onclick entspricht. Tatsächlich können wir das Ereignis einer Komponente geben, das der vorherigen Methode entspricht. Nehmen Sie eine Form als Beispielform1 an. Beachten Sie, dass die Eingabeparameter der Methode von besonderer Bedeutung sind (Absender: Tobject)
Verwenden wir TControl als Beispiel, und wir finden diesen Code:
Eigentum Onmousedown: TMouseEvent Read Fonmousedown Schreiben Sie Fonmousedown;
TMouseEvent = procedure (Absender: tobject; Taste: tmouseButton; Shift: TShiftState; x, y: Integer) des Objekts;
Wie Sie sehen können, ist es tatsächlich eine Funktion, aber der blaue Teil begrenzt die Eingabeparameter. Dann weisen wir Form1 zu. Dann schreiben wir nur eine Funktion, die Mausmeldungen abfängt und direkt oder indirekt FonmouseDown aufruft, und dann werden wir der Nachricht und der Verarbeitungsfunktion entsprechen. Hier gibt es viele Schichten, die indirekt genannt werden, was zeitaufwändig ist und den Nachrichtentyp beinhaltet.
Das Folgende ist ein indirekter Anrufprozess.
Prozedur WMRBUTTONDBLCLK (VAR -Meldung: Twmrbuttondblclk);
procedure tcontrol.wmrbuttondblclk (var message: twmrbuttondblclk);
Beginnen
geerbt;
DomouseDown (Nachricht, Mbright, [ssDouble]);
Ende;
Prozedur DomuseDown (VAR -Nachricht: TwMMouse; Taste: TMouseButton;
Verschiebung: TShiftstate);
Prozedur TControl.DomouSedown (var message: twmmouse; button: tmouseButton;
Verschiebung: TShiftstate);
Beginnen
Wenn nicht (csnostDevents in Controlstyle) dann
mit Nachricht tun
if (Breite> 32768) oder (Höhe> 32768) dann
mit Calccursorpos
MouseDown (Taste, Keystoshiftstate (Tasten) + Verschiebung, x, y)
anders
MouseDown (Taste, KeystoshiftState (Schlüssel) + Shift, Message.xpos, Message.ypos);
Ende;
Verfahren MouseDown (Taste: TMouseButton; Shift: TShiftState;
X, y: Ganzzahl);
Verfahren tcontrol.mouseDown (Taste: TMouseButton;
Verschiebung: TShiftState; x, y: Ganzzahl);
Beginnen
wenn zugewiesen (fonmousedown), fonmousedown (self, button, schicht, x, y);
Ende;
Wenn Sie mehr von Ihren eigenen Klassen schreiben, werden Sie feststellen, wie bequem es ist, dies zu tun, ohne Getleft, Setleft wie Java zu schreiben und den Text in privat zu setzen. Von ihnen rufen nur Control1.text auf, um zugreifen zu können.
In Bezug auf Verarbeitungsnachrichten erklärt die Basisklasse Eigenschaften wie Onclick und OnmouseDown als geschützt. kann es nicht offenlegen.
Meine Forschung ist nicht tief, bitte korrigieren Sie mich, wenn Sie unangemessen haben :). Willkommen bei [email protected]