Jump to content
Fórum Script Brasil
  • 0

Criação de Componentes


robinhocne

Question

Criei um componente do TEdit para ter opção de Cor no onExit e onEnter, agora queria criar uma propriedade assim:

Propriedades

>1ª Tabela

queria listar as tabelas do banco e ai selecionar qual é a tabela desse componente

>2ª Campo

queria listar os campos da tabela marcada na 1ª Propriedade e selecionar o campo do TEdit

>3ª Tipo de Campo

queria listar os tipos de campos (integer,string,date,time...etc), mas trazer marcado o tipo de campo da 2ª Propriedade

>4ª Obrigatório

queria marcar se esse campo vai ser obrigatório ou não

Se alguém poder me ajudar eu agradeceria muito, pois não sei como estar fazendo isso em um componente.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Volto no ponto da criação de componente,

Queria criar um Edit para todos os tipos de campos, porém não vou utilizar com ligação a uma tabela do banco.

Como faço para criar uma propriedade nesse componente chamado:

>Tipo de Campo (esse tipo de campo deverá conter uma caixa de seleção onde irei selecionar se ele recebe integer, float, string, date, time ou intstr)

Quando selecionar a propriedade integer, ele só pode aceitar numeros.

Quanto selecionar a propriedade float ele só deve aceitar valores com decimais, ai diante dessa propriedade precisarei de um campo para mascara desse campo e quantidade de casas decimais.

Quando for string só aceitar letras.

Quando for date só aceitar tipo data e jogar automaticamente o formato de data.

Quando for date só aceitar tipo hora e jogar automaticamente o formato de hora.

Quanto for IntStr poder aceitar numeros e letras.

Como eu posso fazer isso ?

Hoje tenho o componente TTexto criado onde herda do TEdit, segue abaixo....

unit Texto;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Graphics, Messages;

type
  TTexto = class(TEdit)
  private
    OnEnterColor: TColor;
    OnExitColor: TColor;
    procedure ExportaColor(const Value: TColor);
    procedure ImportaColor(const Value: TColor);
  protected
    procedure ColocaCor(Sender: TObject);
    procedure RetiraCor(Sender: TObject);
    procedure ImportaCor(Value: TColor);
    procedure ExportaCor(Value: TColor);
  public
    constructor Create(Aowner: TComponent); override;
    procedure CMEnter(var Msg: TMessage); message CM_ENTER;
    procedure CMExit(var Msg: TMessage); message CM_EXIT;
  published
    property CorOnEnter: TColor read OnEnterColor write ImportaColor;
    property CorOnExit: TColor read OnExitColor write ExportaColor;
    property AutoSize;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Comps', [TTexto]);
end;

{ TTexto }

procedure TTexto.CMEnter(var Msg: TMessage);
begin
  ColocaCor(Self);
  inherited
end;

procedure TTexto.CMExit(var Msg: TMessage);
begin
  RetiraCor(Self);
  inherited
end;

procedure TTexto.ColocaCor(Sender: TObject);
begin
  if Sender is TEdit then
    TEdit(Sender).Color := OnEnterColor;
end;

constructor TTexto.Create(Aowner: TComponent);
begin
  inherited;
  OnEnterColor := clSkyBlue;
  OnExitColor  := clWindow;
  OnEnter      := ColocaCor;
  OnExit       := RetiraCor;
  AutoSize     := false;
  Height       := 20;
end;

procedure TTexto.ExportaColor(const Value: TColor);
begin

end;

procedure TTexto.ExportaCor(Value: TColor);
begin
  OnExitColor := Value;
end;

procedure TTexto.ImportaColor(const Value: TColor);
begin

end;

procedure TTexto.ImportaCor(Value: TColor);
begin
  OnEnterColor := Value;
end;

procedure TTexto.RetiraCor(Sender: TObject);
begin
  if Sender is TEdit then
    TEdit(Sender).Color := OnExitColor;
end;

end.

Link to comment
Share on other sites

  • 0

Amigo, voce precisa ler mais sobre a ciração de componentes em delphi

http://www.google.com.br/search?q=cria%C3%...p;aqi=&aql=

Dica: a criação de componentes segue quase o mesmo raciocinio:

imagine que voce quer que o seu edit aceite somente numeros ... voce vai utilizar o evento OnKeyPress do componente para fazer isso

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   // somente numeros
   if not (Key in['0'..'9',Chr(8),',']) then Key:= #0;
end;

a lógica para a criação do componente com esse recurso segue o mesmo principio

OBS: Tente fazer ... caso tenha muitas duvidas, veja no link ( tutoriais e apostilas de como criar componentes no delphi)

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...