Einzelnen Beitrag anzeigen

Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem mit Klasse (in Klasse)

  Alt 27. Mai 2005, 06:50
(1) private Variable in KLassen sollten mit einem F beginnen
(2) es sollte so aussehen
Delphi-Quellcode:
type
TPeg = class
  private
   FCode: integer;
   function GetCode: integer;
   procedure SetCode(newCode: integer);
  public
    property Code: integer read GetCode write SetCode;
//oder wenn in GetCode nichts weiter gemacht wird ausser Result := FCode
// geht bei SetCode auch!
  property Code: integer read FCode write SetCode;
end;
Zugriff
  NeueFigur.Code:=strtoint(StrArr[j]) (3) in TField ebenso
(4) natürlich muss du für jedes Feld eine neue Instanz erzeugen, sonst hättest Du nur eine Klasse und würdest mit jeder Variablenänderung dies in allen TPeg erhalten
(5) ich würde es allerdings so machen:
Delphi-Quellcode:
type
TPeg = class
  private
    FCode: integer;
  public
    property Code: integer read FCode write FCode;
    procedure Assign (ASource (TPeg);
end;

procedure TPeg.Assgin;
begin
  FCode := ASource.FCode;
end;

TField = class(TPanel)
private
  FPeg: TPeg;
  VPos: integer;
  HPos: char;
  Image: TImage;
  orgColor: TColor;
  procedure setPeg(NewPeg: TPeg);
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure init();
  procedure setPos(h:Char; v: integer);
  procedure HighlightField(state:integer);
  procedure SetNewPeg (ACode: integer); //alternativ
end;

constructor TField.Create(AOwner: TComponent);
begin
   ...
  FPeg := TPeg.Create;
end;

destructor TField.Destroy; override;
begin
   FPeg.Free;
  ...
end;

procedure TField.SetPeg(NewPeg: TPeg);
begin
  FPeg.Assign (NewPeg);
end;

procedure SetNewPegCode (ACode: integer); //alternativ
begin
  FPeg.Code := Value;
end;
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat