Создание класса на основе ТStringGrid

DeXi
Дата: 07.12.2007 01:14:32
Ребята!
Подскажите пожалуйста, где я допускаю ошибку при написании программы? Никак не могу разобраться :(
Нужно создать собственный класс на основе ТStringGrid и задать в нём новые свойства:
INC типа Extended. Только для записи.
И процедура Inc должна увеличивать значения ячеек на заданную величину (допустим 23.4)


unit StringGrid333;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Graphics, Grids;

type
  TStringGrid333 = class(TStringGrid)
private
               { Private declarations }
protected
  procedure setInc (Value:Extended);
    { Protected declarations }
public
  Constructor Create (Aowner:Tcomponent);Override;
    { Public declarations }

published
   property Inc:Extended write setInc;
      { Published declarations }

  end;
procedure Register;

implementation

 Constructor TStringGrid333.Create(Aowner:Tcomponent);
 Var i,j :Integer;

Begin
   Inherited Create(Aowner);
   font.Charset:=russian_charset;
   font.Style:=[fsBold];
   ColCount:=4;
   RowCount:=3;
   for i:=0 to ColCount-1 do
       for j:=0 to RowCount-1 do

         Cells[i,j]:='0';
end;

    procedure TStringGrid333.SetInc(Value:Extended);

    Var i,j:integer;

begin
     for i:=0 to ColCount-1 do
       for j:=0 to RowCount-1 do
            Cells[i,j]:=FloatToStr(StrToFloat(Cells[i,j])+Value);
end;

   procedure Register;

begin
RegisterComponents('SamplesMyStringGrid333', [TStringGrid333]);
end;

begin
 TStringGrid333.SetInc(23.4);
end.


Но в конце на строке "TStringGrid333.SetInc(23.4);" - выдаёт ошибку:
This form of method call only allowed for class methods

Подскажите, пожалуйста, что делать?
Огромное спасибо за помощь заранее!
Граур Станислав
Дата: 07.12.2007 06:21:55
var
  sg : TStringGrid333;
begin
  sg := TStringGrid333.Create(self);
  sg.SetInc(23.4);

  sg.free;
end;


Лабы это круто.
DeXi
Дата: 07.12.2007 08:20:31
Спасибо огромное за совет, но теперь выдаёт ошибку:
Undeclared identifier: 'self'
Anatoly Podgoretsky
Дата: 07.12.2007 08:47:49
Ошибка в 17 строке
Megabyte
Дата: 07.12.2007 14:24:50
DeXi

1)begin
RegisterComponents('SamplesMyStringGrid333', [TStringGrid333]);
end;

...
2)begin
TStringGrid333.SetInc(23.4);
end.

1)Ты класс или компонент делаешь?
2)Это что вообще?
Naf
Дата: 07.12.2007 14:27:23
DeXi
Спасибо огромное за совет, но теперь выдаёт ошибку:
Undeclared identifier: 'self'


Ты то что тебе подсказали куда засунул?
DeXi
Дата: 08.12.2007 01:11:44
Megabyte
DeXi

1)begin
RegisterComponents('SamplesMyStringGrid333', [TStringGrid333]);
end;

...
2)begin
TStringGrid333.SetInc(23.4);
end.

1)Ты класс или компонент делаешь?
2)Это что вообще?


1. Мне нужно создать класс как компонент.
2. Я пытаюсь вызвать процедуру TStringGrid333.SetInc. Прочла в книжке что это делается так, как сделала я :( Но ничего не работает!
DeXi
Дата: 08.12.2007 01:12:51
Naf
DeXi
Спасибо огромное за совет, но теперь выдаёт ошибку:
Undeclared identifier: 'self'


Ты то что тебе подсказали куда засунул?


Я это засунула вместо:
"begin
TStringGrid333.SetInc(23.4);
end."

А куда нужно?
DeXi
Дата: 08.12.2007 01:16:38
Anatoly Podgoretsky
Ошибка в 17 строке

А в чём конкретно ошибка? Можно поподробнее прокомментировать?
Спасибо!
Anatoly Podgoretsky
Дата: 08.12.2007 11:27:28
DeXi
Я это засунула вместо:
"begin
TStringGrid333.SetInc(23.4);
end."

А куда нужно?

Все равно 17 строка, вот если появятся еще несколько строк перед begin - то тогда может быть предметрее, но и здесь вызывает сомнения форма TStringGrid333