komponenty..?

0

Właśnie biorę się za pisanie własnych komponentów VCL i jak szybko zacząłem, tak szybko przerwałem.

unit DMC;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  DMC = class(TComponent)
  private

  protected

  public
    Constructor Create(AOwner: TComponent); override;

  published

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [DMC]);
end;

{ DMC }

constructor DMC.Create(AOwner: TComponent);
begin
  inherited;
end;

end.

Teraz biorę: Component --> Install Component --> Into New PackAges --> wybieram nazwe itd.. aż tu nagle:

<font color="blue">[Fatal Error] DMC.pas(1): Program or unit 'DMC.pas' recursively uses itself </span>

???????????

0

Zdublowany identyfikator, tak trudno zauważyć? Moduł nazywa się DMC, a w nim jest klasa "DMC". Co prawda komunikat o błędzie nie jest do końca poprawny, ale tak lexer zrozumiał idiotyczne przoczenie w nazwach. Właśnie dla tego nazwy klas powinny zaczynać się od "T", chyba zdążyłeś to zauważyć... Zmień nazwę klasy na TDMC i tyle. A na następny obejrzyj kod dokładniej...

0

Rozumiem, ale zmieniłem na zupełnie inną nazwę:

unit cmpDX;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  TDMC = class(TComponent)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TDMC]);
end;

{ TDMC }

constructor TDMC.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
end;

destructor TDMC.Destroy;
begin
  inherited Destroy;
end;

end.
 

i..

<font color="blue">[Fatal Error] cmpDX.pas(1): Program or unit 'cmpDX.pas' recursively uses itself</span>

0

Takiego błęda to jeszcze że nie widził mimo iż kilka komponentów to ja już zrobiłem.

Kliknij no na ten błąd w oknie raportowania błędów i napisz tutaj co na to help mówi

0

okej już działa.. o dziwo po zmianie katalogu z plikiem pas :|

Teraz mam taki problem.

Deklaruje klase pochodną:

Tklasa = class(TDMC);
public
function ... itd.

I dlaczego funkcje te nie są widoczne w inwokacji kodu, po kropce?

0

moze dlatego ze jest to klasa pochodna, a menu obsluguje glowna klase?

0

Pewnie będą jak na nowo skomplikujesz unit albo paczkę w której on jest. Tak samo z dodawaniem właściwości - nie ma ich w Object Inspectorze dopóki nie przekompiluję paczki (a moze i przeinstaluję? :P)

//PS. O, widze ze zabieracie się za tą zmianę kodowania polskich krzaczków... Szkoda tyulko, że coś nawaliło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1