ich beschäftige mich gerade mit Class, Instanz und Komponenten.
Das klappt auch schon ganz gut.
Ich kann Class TScore anlegen und auch damit als Instanz arbeiten.
In meinem Übungsprogramm habe ich zwei Units.
Unit Component ist main Mainunit mit dem Formular
Code: Alles auswählen
unit Component;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics,
Dialogs, StdCtrls, Score;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TScore;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Label2.Destroy;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label2:=TScore.Create(Form1, 'Tom');
end;
end.
[code]
Unit Score ist meine eigene class TScore
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics,
Dialogs, StdCtrls;
type
TScore = class (TLabel)
private
Vname: string;
public
Stand: integer;
constructor Create(Besitzer: TForm; Vorname: string);
procedure erhoehen;
function getName: string;
end;
implementation
constructor TScore.Create(Besitzer: TForm; Vorname: string);
begin
inherited Create(Besitzer);
Alignment:=taCenter;
Autosize:=False;
Color:=clNavy;
Font.Color:=clYellow;
Font.Name:='Arial Black';
Font.Size:=16;
Font.Style:=[fsBold];
Height:=32;
Left:=10;
Top:=100;
Transparent:=False;
Visible:=True;
Width:=962;
Vname:=Vorname;
Stand:=0;
end;
procedure TScore.erhoehen;
begin
Stand:=Stand+100;
end;
function TScore.getName: string;
begin
Result:=Vname;
end;
end.
[/code]
Nun zu meinem Problem.
1. Wie Ihr sehen könnt habe ich TScore im mainunit in der Form1 als Label2 eingefügt
Aber es wird nicht angezeigt. Warum?????????????
2. Ich würde gerne in meiner class TScore ein Event OnChange einfügen.
Der Event soll aufgerufen werden, wenn sich der Wert in Stand ändert.
Habe aber keine Ahnung wie man das macht.
Könnt Ihr mir helfen?
Am besten mit Beispielcode.
Danke für die Hilfe
und Gruß
Jürgen