Aba não aparece - Delphi 7
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
Curtidas 0
Respostas
Marcos
30/03/2010
será que é algo errado com o código?
É só um label com duas propriedades integer e uma boolean a mais.
Obrigado.
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.
GOSTEI 0
Marcos
30/03/2010
up
GOSTEI 0
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
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
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.
Espero ter colaborado.
GOSTEI 0
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.
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
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
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
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'
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
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
30/03/2010
Obrigado.
Já estava quase desistindo de criar componentes.
Agora deu certo. Isso vai me ajudar 1000%.
Valew meso!!
GOSTEI 0