HSG |
|
An einem Beispiel sollen die typischen Schritte beim Benutzen einer in einer externen Unit vorliegenden Klassenvereinbarung gezeigt werden:
Es soll ein Objekt der Klasse TNetzHW benutzt werden, um über die serielle Schnittstelle eine Leuchtdiode zum Leuchten zu bringen. Die Klassenvereinbarung befindet sich in der Unit mTNetzHW.pas (mTNetzHW.zip).
unit uNetzHWTest; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, mTNetzHW; // 2. Einbinden der Unit type TForm1 = class(TForm) .... procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure bTasterMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); .... private NetzHW : TNetzHW; // 3. Variablenvereinbarung .... public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin NetzHW := TNetzHW.Create; // 4. Erzeugung des Objekts netzHW.Start(1); end; procedure TForm1.FormDestroy(Sender: TObject); begin NetzHW.Free; // 6. Freigeben des Objekts end; .... procedure TForm1.bTasterMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin NetzHw.SetAus(true); // 5. Benutzung des Objekts end; .... end.
Benutze die Unit mathedit.pas (TTermEdit in mathedit.zip), um die Funktionsvorschrift einer Funktion f während der Laufzeit einzugeben und um die Funktion zu benutzen. Erstelle dazu ein kleines Testprogramm, das etwa nebenstehende Benutzungsoberfläche haben könnte.
Benutze die Klasse 'TMGraf' (MGraf.zip), um einen einfachen Plotter zu schreiben.
.... procedure TForm1.FormCreate(Sender: TObject); begin mTest := TMGraf.Create(nil); with mTest do begin Parent := Form1; Width := 640; Height := 480; Left := 20; Top := 50; xmin := -2; xmax := 3; ymin := -2; ymax := 1.5; zeichne_Rahmen; zeichne_Achsen; end; end; procedure TForm1.bZeichneClick(Sender: TObject); const dx = 0.001; var x,y : real; function f(x : real) : real; begin result := (2*x-1)/(sqr(2*x+1)-3*x); end; begin x := mTest.Getxmin; while x < mTest.Getxmax do begin y := f(x); mTest.SetzePunkt(x,y); x := x+dx; end; end; ....
Benutze den 'Bauplan' für eine Ampel (ampelform.zip), um eine Ampel zu erzeugen. Welche Botschaften kann man der Ampel senden, welche Anfragen kann man ihr stellen? Kann man auch mehrere Ampeln erzeugen?
.... procedure TfAmpeltest.FormCreate(Sender: TObject); begin ampel1 := TAmpel.Create(nil); ampel1.Visible := true; ampel1.Caption := 'Ampel 1'; ampel1.Left := 100; end; ....
Benutze den 'Bauplan' für einen Aufzug (aufzugform.zip), um einen Aufzug zu erzeugen. Was kann man mit dem Aufzug machen? Schreibe ein Experimentierprogramm.