Fórum Desenvolvimento de componente para Form #204139

04/01/2004

0

Olá amigos,
Estou com um problemão e ninguém consegue me ajudar, espero que aqui encontre alguém capacitado para me dar esta força.

Estou criando um componente (não visual) que, ao coloca-lo no form,
quero que automaticamente ele mude a cor do Form para vermelho, mude o caption do form para ´Mensagem do tempo´, tudo isso em tempo de desenvolvimento... E MAIS ! quero que (em tempo de execução) ao ser pressionado a tecla F6 no form em que esteja este componente seja exibida um ShowMessage(´Mensagem padrão´), alguém sabe como posso fazer isso? como posso acessar as propriedades do Form em que está o componente??? e adicionar ao evento OnKeyPress do form o que mencionei acima... desde já agradeço!!!

Rubens

[b:2b36f8993d]Título editado pelo Moderador (AZ)[/b:2b36f8993d]


Rubens

Rubens

Responder

Posts

05/01/2004

Fórum Vini

Olá,
para mudar o caption e a cor basta sobrecarregar o construtor do componente, modificando o parâmetro AOwner.
Quanto ao evento, basta criar uma procedure com a mesma declaração do evento OnKeyPress e setá-la no evento do proprietário.
Exemplo:
unit MudaCor;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TMudaCor = class(TComponent)
  private
    { Private declarations }
    procedure NovoKeyPress(Sender: TObject;var Key: Char);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents(´NUI´, [TMudaCor]);
end;

{ TMudaCor }

constructor TMudaCor.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  if not(AOwner is TForm) then raise Exception.Create(´Este componente deve pertencer a um form!!´);
  (AOwner as TForm).Color:= clRed;
  (AOwner as TForm).Caption:= ´Novo caption´;
  (Aowner as TForm).OnKeyPress:= NovoKeyPress;
end;

procedure TMudaCor.NovoKeyPress(Sender: TObject; var Key: Char);
begin
  Showmessage(´Mensagem!!!´);
end;

end.

O código foi testado no Delphi 5, mas deve funcionar no Dephi 6 também.

Espero ter ajudado.
Vinicius.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar