Создание своего класса в Delphi 7

Тема в разделе "Delphi - Компоненты", создана пользователем Greg, 13 ноя 2007.

  1. Greg

    Greg Гость

    Прошу помощи в создании своего класса )

    нужно создать свой класс фигуры для шахматной доски

    сама шахматная доска уже создана

    нужно создать свой класс имеющий некоторые свойства)

    у меня вот так:

    TFigure=Class(TObject)
    Private
    Color:Boolean; чёрная или белая
    TypeFigure:String;
    ImgFigure:TImage;
    Protected
    DestroyFigure:Boolean; срубление фигуры
    OcheredHodaFigure:Boolean;
    Function Coord1:TPanel;
    Procedure Coord2(Coord:Tpanel);
    Property CoordFigure:TPanel будет ходить по панелькам
    read Coord1
    write Coord2;

    Public
    Procedure HodFigure(a:TPAnel);

    Private
    constructor Fcreate (Coord:Tpanel);
    end;

    1) прошу помочь куда и как написать правильно конструктор с деструктором
    2) Как вообще правильно написать процедуру с функцией
    3) Как правильно написать read write
    4) и вообще что я сделал не так и почему не работает )
    СПАСИБО.
     
  2. Greg

    Greg Гость

    Для: sax_ol
    всё это выглядит вот так теперь:
    TFigure=Class(TObject)
    Private
    Color:Boolean;
    TypeFigure:String;
    ImgFigure:TImage;
    Protected
    DestroyFigure:Boolean;
    OcheredHodaFigure:Boolean;
    Private
    Function GetCoordFigure:TPanel;
    Procedure SetCoordFigure(const Value:Tpanel);
    public
    Property CoordFigure:TPanel
    read GetCoordFigure
    write SetCoordFigure;
    end;
    Public
    Function GetHodFigure:TPanel;
    Procedure SetHodFigure(a:TPAnel);
    end;

    Private
    constructor Fcreate (Coord:Tpanel);
    end;
    подскажи почему ошибка там где красное?
     
  3. Silver Wind

    Silver Wind Гость

    <!--QuoteBegin-Greg+13:11:2007, 19:30 -->
    <span class="vbquote">(Greg @ 13:11:2007, 19:30 )</span><!--QuoteEBegin-->end;
    Public
    [snapback]85508" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Может быть по этому? А вообще сообщение об ошибке надо тоже прилагать - здесь не телепаты собрались.
     
  4. Greg

    Greg Гость

    Для: Silver Wind
    конечно не телепаты
    но я надеюсь понимающие и разбирающиеся люди

    ошибка вот что говорит '=' expected but 'FUNCTION' found

    если убрать end;
    то ошибка сдесь:
    Код (Text):
    TFigure=Class(TObject)
    Private
    Color:Boolean;
    TypeFigure:String;
    ImgFigure:TImage;
    Protected
    DestroyFigure:Boolean;
    OcheredHodaFigure:Boolean;
    Private
    [b]Function GetCoordFigure:TPanel;[/b]
    Procedure SetCoordFigure(const Value:Tpanel);
    public
    Property CoordFigure:TPanel read GetCoordFigure write SetCoordFigure;

    Public
    Function GetHodFigure:TPanel;
    Procedure SetHodFigure(a:TPAnel);
    end;

    Private
    constructor Fcreate (Coord:Tpanel);
    end;
    Модератор: код читается лучше, если он оформлен, соответственно!
     
  5. Silver Wind

    Silver Wind Гость

    Попробуй так:
    Код (Text):
    TFigure=Class(TObject)
    Private
    Color:Boolean;
    TypeFigure:String;
    ImgFigure:TImage;

    Function GetCoordFigure:TPanel;
    Procedure SetCoordFigure(const Value:Tpanel);

    constructor Fcreate (Coord:Tpanel);
    Protected
    DestroyFigure:Boolean;
    OcheredHodaFigure:Boolean;
    public
    Property CoordFigure:TPanel read GetCoordFigure write SetCoordFigure;
    Function GetHodFigure:TPanel;
    Procedure SetHodFigure(a:TPAnel);
    end;
    Т.е. не надо плодить так много секций, и тем более несколько одинаковых секций вподряд. Это может и не неправильно с точки зрения синтаксиса, но уж больно путано и глаза режет. Смотри как сделаны классы в стандартных модулях Delphi, хотябы на примере TPanel.

    Ну и еще один "end" конечно же был лишний.

    Кстати, что за приватный конструктор класса такой с нестандартным названием? Как же этим классом пользоваться тогда? Или это не весь класс?
     
  6. Greg

    Greg Гость

    Для: Silver Wind
    Спасибо попробывал, но
    Код (Text):
    TFigure=Class(TObject)
    Private
    Color:Boolean;
    TypeFigure:String;
    ImgFigure:TImage;

    !!!Function GetCoordFigure:TPanel;!!!
    Procedure SetCoordFigure(const Value:Tpanel);

    constructor Fcreate (Coord:Tpanel);
    Protected
    DestroyFigure:Boolean;
    OcheredHodaFigure:Boolean;
    public
    !!Property CoordFigure:TPanel read GetCoordFigure write SetCoordFigure;!!
    Function GetHodFigure:TPanel;
    Procedure SetHodFigure(a:TPAnel);
    end;
    вот тут ошибка где !!!)Unsatisfied forward or external declaration: 'TFigure.GetCoordFigure'
    а если эту функцию с процедурой убрать, то
    ошибка там где !! отмечено - Field or method identifier expected
     
  7. Greg

    Greg Гость

    вот теперь полный код для всей программы
    всё стало работать нужно было просто заглушки поставить

    теперь нужно создать конструкторы для каждого подкласса (фигурки)
    или один конструктор для класса Figure
    подскажите как проще
    и как правильно написать синтаксически и вообще)
    спасибо.
    Код (Text):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, StdCtrls;

    type
    TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    TFigure=Class(TObject)
    Private
    Color:Boolean;
    TypeFigure:String;
    ImgFigure:TImage;
    Protected
    DestroyFigure:Boolean;
    OcheredHodaFigure:Boolean;
    Private
    Function GetCoordFigure:TPanel;
    Procedure SetCoordFigure(const Value:Tpanel);

    public
    Property CoordFigure:TPanel
    read GetCoordFigure
    write SetCoordFigure;


    Public
    Function GetHodFigure:Boolean;virtual;
    Procedure SetHodFigure(a:TPAnel);

    Private
    constructor Fcreate (Coord:Tpanel);

    end;
    TKing=class(TFigure)
    constructor Fcreate(a:boolean);
    Function GetHodFigure:Boolean;override;
    end;
    TKoroleva=class(TFigure)
    Function GetHodFigure:Boolean;override;
    end;
    TPeshka=class(TFIgure)
    Function GetHodFigure:Boolean;override;
    end;
    TLoshad=class(TFigure)
    Function GetHodFigure:Boolean;override;
    end;
    TLadya=class(TFigure)
    Function GetHodFigure:Boolean;override;
    end;
    TSlon=class(TFigure)
    Function GetHodFigure:Boolean;override;
    end;

    TDoska = class (TObject)

    private
    mass:array [0..7,0..7] of TPanel;

    Constructor Create();
    end;

    var
    Form1: TForm1;
    implementation

    {$R *.dfm}

    Constructor TDoska.Create();
    var pan:TPanel; i,j,y:integer; color:TColor;
    lab:TLabel;
    begin
    Inherited Create;
    color:=$ffffff;
    for i:=0 to 7 do
    begin
    for y:=0 to 1 do
    begin
    lab:=TLabel.Create(Form1);
    lab.Top:=60+i*60;
    lab.Left:=30+510*y;
    lab.AutoSize:=true;
    lab.Caption:=Inttostr(i+1);
    lab.Parent:=Form1;
    end;
    for j:=0 to 7 do
    begin
    for y:=0 to 1 do
    begin
    lab:=TLabel.Create(Form1);
    lab.Top:=20+505*y;
    lab.Left:=80+j*60;
    lab.AutoSize:=true;
    lab.Caption:=chr(65+j);
    lab.Parent:=Form1;
    end;
    mass[i,j]:=TPanel.Create(Form1);
    mass[i,j].Left:=50+j*60;
    mass[i,j].Top:=40+i*60;
    mass[i,j].Height:=60;
    mass[i,j].Width:=60;
    mass[i,j].BevelOuter:=bvNone;
    mass[i,j].Parent:=Form1;
    mass[i,j].Color:=color;
    if j=7 then Continue;
    if (color=$ffffff) then
    color:=$000000
    else
    color:=$ffffff;
    end;
    end;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    var doska:TDoska;
    begin
    doska:=TDoska.Create();

    end;

    Function TFigure.GetCoordFigure:TPanel;
    begin
    end;

    Procedure TFigure.SetCoordFigure(const Value:Tpanel);
    begin
    end;

    Function TFigure.GetHodFigure:Boolean;
    begin
    end;

    Procedure TFigure.SetHodFigure(a:TPAnel);
    begin
    end;

    constructor TFigure.Fcreate (Coord:Tpanel);
    begin
    end;
    Function TKing.GetHodFigure:Boolean;
    begin
    end;
    constructor Tking.Fcreate(a:boolean);
    begin
    end;
    Function TKoroleva.GetHodFigure:Boolean;
    begin
    end;
    Function TPeshka.GetHodFigure:Boolean;
    begin
    end;
    Function TLoshad.GetHodFigure:Boolean;
    begin
    end;
    Function TLadya.GetHodFigure:Boolean;
    begin
    end;
    Function TSlon.GetHodFigure:Boolean;
    begin
    end;
    end.
     
  8. Greg

    Greg Гость

    ок) спасиб
     
  9. Greg

    Greg Гость

    подскажите пожалуйста как загрузить картинку и указать для неё координаты?
     
  10. Greg

    Greg Гость

    в мою эту доску
     
  11. Greg

    Greg Гость

    уважаемый sax_ol это я всё понимаю))
    а как это написать на языке делфи?))
     
Загрузка...

Поделиться этой страницей