Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

c(++)érebro

[Resolvido] Classe para montagem de formulários em run-time

Recommended Posts

E aee Galera.

Não sei se é o lugar certo para isso, se não for avisem ae!

Estou postando o código que eu e meus amigos de escola desenvolvemos para a montagem de formulários em run-time,poupando assim tempo de desenvolvimento em design de telas.

Se alguém verificar algum erro ou tiver alguma sugestão para melhorar a classe, posta ae!!

Valeu!!

 

unit unclasscreateform;
{Classe que montará um formulário de
cadastro em run-time poupando tempo de
desenvolvimento com design de telas.
funciona melhor caso forem utilizados skins
já que assim a customização de componentes não se
faz necessária }

//Alunos do 3° módulo técnico em informática EtecAvaré-2009

interface
uses
  windows,forms,graphics,sysutils,db,dbclient,classes,dbctrls,stdctrls;

  type
  TCreateform=class
	private
	  // os quatro atributos comentados não serão necessários por enquanto
	  {dscreate:TDataSet;
	  colorfont:TColor;
	  sizefont:integer;
	  stylefont:TFontStyle;}
	  procedure createlabels(nomeform:TForm;dscreate:TDataSet);
	  procedure createedits(nomeform:TForm;dscreate:TDataSet);
	  procedure createframe(nomeform:tform);
	  function  createdatasource(ds:TDataSet):TDataSource;
	public
	  constructor Create(aowner:tcomponent;nomeform:tform;ds:TDataSet);reintroduce;
  end;
  var
  frmcreate:TCreateform;
implementation

uses Controls;

{ TCreateform }

constructor TCreateform.Create(aowner: tcomponent;nomeform:TForm;ds:TDataSet);
begin
{apos deserdar a classe, o construtor ficou mais tranquilo de se trabalhar}
  createlabels(nomeform,ds);
  createedits(nomeform,ds);
end;

function TCreateform.createdatasource(ds: TDataSet): TDataSource;
// essa função cria o datasource que será utilizado pela função create edits
var dsource:TDataSource;
begin
  dsource:=TDataSource.Create(nil);
  dsource.DataSet:=ds;
  Result:=dsource;
end;

procedure TCreateform.createedits(nomeform: TForm;dscreate:TDataSet);
var edits:array of TDBEdit;
	i:integer;
begin
  SetLength(edits,dscreate.FieldCount);
  for I := 0 to dscreate.FieldCount-1 do
  begin
	edits[i]:=TDBEdit.Create(nomeform);
	with edits[i]do
	begin
	  Parent:=nomeform;
	  Font.Color:=colorfont;
	  Font.Size:=sizefont;
	  Font.Style:=[stylefont];
	  Left:=150;
	  Top:=(i+1)*30;
	  DataSource:=createdatasource(dscreate);
	  DataField:=dscreate.Fields[i].FieldName;
	end;
  end;
	
end;

procedure TCreateform.createlabels(nomeform: TForm;dscreate:TDataSet);
var labels:array of TLabel;
	i:integer;
begin
{aqui serão criadas as labels
porem seria melhor customiza-las
alterando cor e fonte
isso já se torna um problema ja que não tenho na classe
atributos para isso
Idéias ae pessoal!!!!!
}
  SetLength(labels,dscreate.FieldCount);
  for i:=0 to dscreate.FieldCount-1 do
  begin
	labels[i]:=TLabel.Create(nomeform);
	with labels[i]do
	begin
	  Parent:=nomeform;
	  left:=50;
	  top:=(i+1)*30;
	  Caption:=dscreate.Fields[i].DisplayLabel;
	end;
  end;
end;

procedure TCreateform.createframe(nomeform: tform);
begin
// falta essa função que irá inserir o frame no form de cadastro
end;

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.