Aba não aparece - Delphi 7

Delphi

30/03/2010

Olá. Criei um componente em uma nova aba, pra fim de aprendizado, mas a aba não aparece. Mesmo se instalar o componente em uma aba existente, ele não aparece. Durante a instalação não há nenhuma mensagem de erro, e o componente e aba aparencem no "Configure Palette". Alguem pode me ajudar ? Obrigado.
Marcos

Marcos

Curtidas 0

Respostas

Marcos

Marcos

30/03/2010

será que é algo errado com o código?  É só um label com duas propriedades integer e uma boolean a mais.
 
unit Qlabel4;
interface
uses
  SysUtils, Classes, QControls, QStdCtrls;
type
  tlabel4 = class(TLabel)
  private
    { Private declarations }
    FGx:Integer;
    FGy:Integer;
    FCarry:Boolean;
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOWner: TComponent); override;
    destructor Destroy;override;
 
  published
    { Published declarations }
    property Gx:Integer read FGx write FGx;
    property Gy:Integer read FGy write FGy;
    property Carry: Boolean read FCarry write FCarry;
  end;
procedure Register;
implementation
procedure Register;
begin
  RegisterComponents('MyPalete', [tlabel4]);
end;
{ tlabel4 }
constructor tlabel4.Create(AOWner: TComponent);
begin
  inherited;
end;
destructor tlabel4.Destroy;
begin
  inherited;
end;
end.
 
  Obrigado.      
GOSTEI 0
Marcos

Marcos

30/03/2010

up  
GOSTEI 0
Wesley Batista

Wesley Batista

30/03/2010

Olá amigo, você criou um package? Senão criou, crie um file/new/package, adicione esta tua unit no mesmo, depois salve.
  Ao salvar o projeto, clique com o Botão direito em cima do mesmo no project manager, e " Install " , seu componente será instalado normalmente.


Espero te ajudado

Um abraço

Wesley Batista
e-mail : wesley@tdstecnologia.com.br
site : www.tdstecnologiarj.com.br


GOSTEI 0
Wilson Junior

Wilson Junior

30/03/2010

No Delphi 7 não é obrigatório criar um Package para instalar um componente. Pois se não possuir um package, ele já inclui no dclusr.dpk automaticamente.

Espero ter colaborado.
GOSTEI 0
Vtrx

Vtrx

30/03/2010

Experimenta assim; unit Qlabel4;
interface
uses
  SysUtils, Classes, QControls, QStdCtrls;
type
  tlabel4 = class(TLabel)
  private
    { Private declarations }
    FGx:Integer;
    FGy:Integer;
    FCarry:Boolean;
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOWner: TComponent); override;
    destructor Destroy;override;
 
  published
    { Published declarations }
    property Gx:Integer read FGx write FGx;
    property Gy:Integer read FGy write FGy;
    property Carry: Boolean read FCarry write FCarry;
  end;
procedure Register;
implementation constructor tlabel4.Create(AOWner: TComponent);
begin
  inherited;
end;
destructor tlabel4.Destroy;
begin
  inherited;
end;
procedure Register;
begin
  RegisterComponents('MyPalete', [tlabel4]);
end;
end.
GOSTEI 0
Marcos

Marcos

30/03/2010

Obrigado pela dica, mas ainda não funcionou.   Quando compilo a Unit do novo componente, a aba aparece. Mas quando vou testar o componente, abro um novo formulário e a aba some, e depois não aparece mais.  
GOSTEI 0
Vtrx

Vtrx

30/03/2010

Fiz uma simulação aqui e tive vários problemas. Acho que está relacionado a forma como voce montou o componente,tem muita referência a palavras reservadas. Crie um projeto e inclua unit Qlabel4. Rode e verá um erro.
GOSTEI 0
Marcos

Marcos

30/03/2010

Fiz o seguinte: {$R *.dfm}
USES
Qlabel4 ;          //como não aprece a aba, tentando criar em runtime.... procedure TForm1.Button1Click(Sender: TObject);
var
  MM:TLabel4;
begin
  MM:=TLabel4.Create(self);
  MM.Parent:=self;     //aqui dá erro...
  MM.Caption:='Olá Mundo!';
end; end.     Então dá o seguinte erro:   [Error] Unit1.pas(33): Incompatible types: 'TWidgetControl' and 'TForm1' [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
GOSTEI 0
Robert Cortez

Robert Cortez

30/03/2010

Caro Marcos, o problema do seu componente é o seguinte: Na cláusula uses você esta usando QStdCtrls e QControls e o correto seria StdCtrls e Controls, sem os "Q". Ocorre que, as classes QtdCtrls e QControls, são classes CLX, ou seja, seu componente é instaldo com sucesso e da a impressão que ele não aparece na aba, mas se você abrir um novo projeto CLX verá que o componente aparecerá normalmente na paleta de componente. Retirando os "Q", o delphi usará as classes da VCL, tornando o componente visível na aba para projetos VCL e invisível para projetos CLX. Espero ter ajudado.   Robert Cortez Publicus Informática
GOSTEI 0
Marcos

Marcos

30/03/2010

Obrigado.   Já estava quase desistindo de criar componentes. Agora deu certo. Isso vai me ajudar 1000%.   Valew meso!!
GOSTEI 0
POSTAR