Disponibilizar os DBEdits autom., será que tem jeito?

26/12/2005

Olá amigos, estou pensando em fazer algo desse tipo:

Teria um Dicionario de dados, no seguinte modelo (resumido)
NOMECAMPO
TAMANHO
TIPO

Pois bem, com isso eu leria este dicionário e montaria a tela (Form) automaticamente, leria tudo de uma tabela, e colocaria os DBEdits, Labels e etc.. tudo automatico, informando o tamanho e Caption e etc.. tudo isso guardado no dicionário de dados.,..


Será que é interessante isso? Alguém já fez algo parecido?

Desde já agradeço...


Titanius

Respostas

26/12/2005

Eixox

Havia um tempo atrás aqui no Fórum, um cara que tentava executar a mesma tarefa.

Acho que alguém indicou algo a ele. Porém, acredito que existe uma certa problemática envolvida em sua questão.

Você não terá somente que criar os campos, mas também deverá se preocupar com o tamanho do formulário, o número de campos inseridos e os seus respectivos tamanhos em pixels. Você deverá colocá-los de alguma forma ordenada em seu form e estabelecer um número mínimo e máximo de componentes para isso.

Existe um ferramenta comercial que faz isso. É ferrada e cada módulo é caríssimo. Você compra em pacotes e define em tempo real a criação da tabela, dos campos, dos tipos e relacionamentos - além disso, ainda pode organizar os elementos na janela de acordo com a sua vontade e também estabelecer a ordem de tabulação.

Realmente a aplicação é ferrada de boa - você ainda pode escolher até o tipo de banco de dados que irá trabalhar.

A sua pergunta é extremamente interessante, até porque nada disso é colocado na revista pelo que posso ver. Seria um artigo interessante e bacana para compor uma das matérias da Clube Delphi.

E outra coisa, já ví fazerem coisas do arco da velha com Delphi, acredito que isso não seria impossível de ser feito. Os próprios Wizards de formulários de banco de dados do Delphi fazem isso. Criam um form padrão para você.

Não ajudei muito, mas dei o pontapé inicial para a discussão


Responder Citar

27/12/2005

Thomaz_prg

Eu fiz algo mais ou menos dessa forma... eu setava no banco qual a tabela que seria usada, qual o Caption do form, e quais campos da tabela eu gostaria que fossem mostrados... eu criava o form, o dataset, o datasource e 1 dbnavigator em tempo de execução a partir de uma matriz (herança). Os campos, eu deixei a cargo de um componente chamado DBPanel. Ele carregava os campos, já colocando os dbedit´s e label´s. Ficou razoável, pois ele não inseria os lookup´s então, só serviu para entrada de dados simples. Acabou compensando por tudo em dll´s e mandar a dll para o cliente, tipo, ele fazia o pedido, eu mando a dll com um script (para ser rodado no banco). O script já insere no menu o novo form.


Responder Citar

27/12/2005

Thomaz_prg

Eu fiz algo mais ou menos dessa forma... eu setava no banco qual a tabela que seria usada, qual o Caption do form, e quais campos da tabela eu gostaria que fossem mostrados... eu criava o form, o dataset, o datasource e 1 dbnavigator em tempo de execução a partir de uma matriz (herança). Os campos, eu deixei a cargo de um componente chamado DBPanel. Ele carregava os campos, já colocando os dbedit´s e label´s. Ficou razoável, pois ele não inseria os lookup´s então, só serviu para entrada de dados simples. Acabou compensando por tudo em dll´s e mandar a dll para o cliente, tipo, ele fazia o pedido, eu mando a dll com um script (para ser rodado no banco). O script já insere no menu o novo form.


Responder Citar

27/12/2005

Titanius

Olá amigos, acho esta discussão muito boa, pois infelizmente hoje nós trabalhamos com tempo curtíssimo, e se cada cliente pedir algo e você ter que mudar a tela toda é foda... Então pensei nisso, você ter algo do tipo Dicionário de Dados, e apartir dele você montar sua tela, claro que tem como montar Lookups, Grids e etc... com algum trabalho extra é lógico, como disso o amigo, já fizeram tanta coisa no delphi, que acredito eu isso ser fácil....

No BDS 2006, tem um componente chamado [b:1856742eae]FlowPanel[/b:1856742eae], que você informa a ele o que você quer criar, e ele monta a tela de acordo com o tamanho e etc.. porém isso é só no BDS2006, eu queria era mesmo montar algo desse tipo, pra ficar livre de Delphi, ou seja, eu poder migrar de um delphi para o outro sem problemas...


thomaz_prg, você poderia nos dar um exemplo de como você fez isso?Seria de grande ajuda.


[]s


Responder Citar

27/12/2005

Michael

Olá!

Eu ia justamente sugerir o uso do [b:b901965f5c]TFlowPanel[/b:b901965f5c], introduzido no Delphi 2006. Eu já até pensei em incluí-lo em meus frameworks OO, para montar telas de entrada de dados automaticamente, exatamente como vc tbm pensou.

Em relação à versão do Delphi, acredito que ele venha, como toda a VCL, com o código-fonte, e vc pode portanto recompilá-lo em qualquer outra versão, fazendo mudanças, se necessário. E se eu estiver enganado quanto à disponibilidade deste código, basta criar o seu próprio componente. O Delphi 2006 ainda não chegou aqui na empresa, mas quando vier uma das primeiras coisas que vou fazer é ver se estes novos controles têm seus códigos-fonte. Acredito que sim.

[]´s


Responder Citar

27/12/2005

Titanius

Fala michael...

Codigo-fonte ele tem... (eu acho), mas tipo, pelo exemplo que veio com o delphi, quando voce muda a tela, ele fica lento, sei lá.. achei meio lento pra montar a tela e dimensionar os componentes... de qualquer forma, ele é otimo... ele monta os componentes perfeitamente, tem que saber usar.. hehe...

o que eu ainda nao consegui foi fazer os componentes do modo que o label fique acima do TDBEdit, eu consegui colocar ele na frente, agora em cima eu não consegui.. :(

[]s


Responder Citar

27/12/2005

Titanius

Só acrescentando...

Tentei achar o fonte do flowpanel e nao achei.. :(

Queria o fonte, pra tentar compilar ele no Delphi 7, pois todos os meus sistemas estão em Delphi 7, e tá dificil pra caraca mudar os componentes pro BDS2006... Ainda não consegui o ReportBuilder... vamos ver né...

[]s


Responder Citar

27/12/2005

Michael

Na edição deste mês da revista ClubeDelphi o colega [b:b3f50f1adb]Adail Retamal[/b:b3f50f1adb] escreveu um artigo falando dos novos componentes da VCL, mostrando em detalhes como configurar o comportamento do TFlowPanel. Acho que vc pode dizer como quer que os controles sejam posicionados, em alguma propriedade [i:b3f50f1adb]style[/i:b3f50f1adb].

Há ainda o [b:b3f50f1adb]TGridPanel[/b:b3f50f1adb], onde vc define linhas e colunas (como uma tabela) e ele coloca cada componente inserido dentro de uma célula. Se o número de componentes for maior do que a quantidade de células disponíveis, ele automaticamente adiciona tantas quanto forem necessárias para comportar tudo. Se vc não conseguir colocar o Label sobre o TDBEdit usando o TFlowPanel, tente este outro componente então.

[]´s


Responder Citar

27/12/2005

Michael

Coloca um TFlowPanel no form, depois vai no código, pressione Ctrl e clique sobre o nome da classe TFlowPanel, na declaração da classe do formulário. O Delphi não abre o código-fonte dele não?

Se bem que sua versão é a trial, certo? Talvez ela não venha com os fontes da VCL...

[]´s


Responder Citar

27/12/2005

Titanius

Olá michael, abrir ele abre.. mais tá em ExtCtrls... e lá tem coisa pra caramba, como não sei absolutamente nada de componente não sei o que eu faço com o codigo :cry:
Se quiser eu posso te passar pra vc ver...

[]s


Responder Citar

27/12/2005

Michael

Mande a unit para meu email. michael.clubedelphi@bol.com.br . ;-)

Se tudo estiver ok, compilo aqui no D7 e te mando o DCU. Ou melhor, mando um pacote para vc instalar no seu Delphi.

[]´s


Responder Citar

27/12/2005

Titanius

Mande a unit para meu email. michael.clubedelphi@bol.com.br . ;-) Se tudo estiver ok, compilo aqui no D7 e te mando o DCU. Ou melhor, mando um pacote para vc instalar no seu Delphi. []´s


Tá lá Michael... acabo de enviar..

[]s


Responder Citar

27/12/2005

Michael

Kra, procura no fonte da [b:79ac216de8]ExtCtrls.pas[/b:79ac216de8] o identificador [b:79ac216de8]TCMControlListChanging[/b:79ac216de8]. Depois clica nele com Ctrl pressionado e me passa a unit tbm.

Preciso da implementação dele para poder compilar.

[]´s


Responder Citar

27/12/2005

Titanius

Kra, procura no fonte da [b:536cf1aed6]ExtCtrls.pas[/b:536cf1aed6] o identificador [b:536cf1aed6]TCMControlListChanging[/b:536cf1aed6]. Depois clica nele com Ctrl pressionado e me passa a unit tbm. Preciso da implementação dele para poder compilar. []´s


Acabei de enviar Michael... o coisa de doido esse negócio de componentes tá, vixi... vai entrando em tudo quanto é unit.. hehe... :shock:

Se precisar de mais, pode pedir, ou se preferir envio tudo da pasta de source lá... :D

[]s
Fellipe H.


Responder Citar

27/12/2005

Martins

[quote:8d42eb1de6=´Michael´]Kra, procura no fonte da [b:8d42eb1de6]ExtCtrls.pas[/b:8d42eb1de6] o identificador [b:8d42eb1de6]TCMControlListChanging[/b:8d42eb1de6]. Depois clica nele com Ctrl pressionado e me passa a unit tbm. Preciso da implementação dele para poder compilar. []´s


Acabei de enviar Michael... o coisa de doido esse negócio de componentes tá, vixi... vai entrando em tudo quanto é unit.. hehe... :shock:

Se precisar de mais, pode pedir, ou se preferir envio tudo da pasta de source lá... :D

[]s
Fellipe H.[/quote:8d42eb1de6]

Quando vcs terminarem, vcs poderiam publicar o resultado desse trabalho?

Valew!!!


Responder Citar