Disponibilizar os DBEdits autom., será que tem jeito?
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...
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
Curtidas 0
Respostas
Eixox
26/12/2005
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
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
GOSTEI 0
Thomaz_prg
26/12/2005
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.
GOSTEI 0
Thomaz_prg
26/12/2005
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.
GOSTEI 0
Titanius
26/12/2005
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
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
GOSTEI 0
Michael
26/12/2005
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
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
GOSTEI 0
Titanius
26/12/2005
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
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
GOSTEI 0
Titanius
26/12/2005
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
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
GOSTEI 0
Michael
26/12/2005
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
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
GOSTEI 0
Michael
26/12/2005
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
Se bem que sua versão é a trial, certo? Talvez ela não venha com os fontes da VCL...
[]´s
GOSTEI 0
Titanius
26/12/2005
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
Se quiser eu posso te passar pra vc ver...
[]s
GOSTEI 0
Michael
26/12/2005
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
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
GOSTEI 0
Titanius
26/12/2005
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
GOSTEI 0
Michael
26/12/2005
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
Preciso da implementação dele para poder compilar.
[]´s
GOSTEI 0
Titanius
26/12/2005
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.
GOSTEI 0
Martins
26/12/2005
[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!!!
GOSTEI 0
Sourcecode
26/12/2005
Queria dar uma sugestão, até já pensei em fazer isso, mas nunca tive tempo; criar um componente, que desse pra criar um editor visual do form em si, desenhar, mas isso tudo somente para pegar as posições e tamanhos, aí salvaria isto tudo pra um arquivo, ou banco de dados, e na hora que chamasse uma função por exemplo: AbreTela(´Cadastro_Clientes.xml´); ele criaria um form padrão com o tamanho, componentes e ligações pré-estabelecidos no arquivo ou tabela, vou um pouco além, com isso daria pra alterar as telas no servidor de aplicações e deixar as máquinas clientes atualizadas instantaneamente... apesar de ser um pouco complexo de fazer, seria uma mão na roda pra atualizações, imagina não ter que recompilar nada pra mudar ou criar novas telas? Fica lançado o desafio, qualquer hora eu também implemento isso.
GOSTEI 0
Titanius
26/12/2005
Queria dar uma sugestão, até já pensei em fazer isso, mas nunca tive tempo; criar um componente, que desse pra criar um editor visual do form em si, desenhar, mas isso tudo somente para pegar as posições e tamanhos, aí salvaria isto tudo pra um arquivo, ou banco de dados, e na hora que chamasse uma função por exemplo: AbreTela(´Cadastro_Clientes.xml´); ele criaria um form padrão com o tamanho, componentes e ligações pré-estabelecidos no arquivo ou tabela, vou um pouco além, com isso daria pra alterar as telas no servidor de aplicações e deixar as máquinas clientes atualizadas instantaneamente... apesar de ser um pouco complexo de fazer, seria uma mão na roda pra atualizações, imagina não ter que recompilar nada pra mudar ou criar novas telas? Fica lançado o desafio, qualquer hora eu também implemento isso.
Sourcecode, existe um componente da Greatis que faz exatamente isso, você habilita o editor de form como se fosse do delphi, porémele salva o arquivo como sendo dfm mesmo, mas nada que uma modificação não daria resultado.. :D Mas neste caso precisariamos de um usuário experiente para manuseiar o sistema, desta outra maneira, que estamos vendo, basta adicionar o campo no DDe pronto...
[]s
GOSTEI 0
Michael
26/12/2005
O componente da Greatis é ótimo, mas pago. Existem outros free e open source.
Sobre o TFlowPanel, [b:e270baaf5f]Titanius[/b:e270baaf5f], constatei que dará mais trabalho adaptar o código da VCL do Delphi 2006 do que criar um componente novo diretamente no Delphi 7. A Borland modificou muitas classes usadas pelo componente, adicionando novas propriedades, métodos etc, e fica uma loucura tentar ajustar isso.
Já tinha pensado em criar um TFlowPanel para o Delphi 7, e agora comprovo que esta é a saída. Do mais, não é difícil. Basta aproveitar o código da Borland.
[]´s
Sobre o TFlowPanel, [b:e270baaf5f]Titanius[/b:e270baaf5f], constatei que dará mais trabalho adaptar o código da VCL do Delphi 2006 do que criar um componente novo diretamente no Delphi 7. A Borland modificou muitas classes usadas pelo componente, adicionando novas propriedades, métodos etc, e fica uma loucura tentar ajustar isso.
Já tinha pensado em criar um TFlowPanel para o Delphi 7, e agora comprovo que esta é a saída. Do mais, não é difícil. Basta aproveitar o código da Borland.
[]´s
GOSTEI 0
Titanius
26/12/2005
Realmente agora existe um componente da biblioteca JEDI que faz o que o Greatis faz.. muito bom....
quanto ao FlowPanel, realmente deve ser dificil, tah doido... muita coisa... :shock:
quanto ao FlowPanel, realmente deve ser dificil, tah doido... muita coisa... :shock:
GOSTEI 0
Khundalini
26/12/2005
Qual é esse componente da JEDI VCL que pode ser usado no lugar do TFlowControl? Eu gostaria de saber.
Sds,
Rubem Rocha
Manaus, AM
Sds,
Rubem Rocha
Manaus, AM
GOSTEI 0
Titanius
26/12/2005
Qual é esse componente da JEDI VCL que pode ser usado no lugar do TFlowControl? Eu gostaria de saber.
Sds,
Rubem Rocha
Manaus, AM
Olá Rubens, na JEDI não tem o componente que faz como o FlowControl não, o que quis dizer, que existe um componente tipo do Greatis, ou seja, de montar forms e etc... como o do delphi...
[]s
GOSTEI 0
Michael
26/12/2005
Implementar um TFlowControl para o Delphi 6, 7 e 2005 é fácil. Quando tiver tempo vou tentar criar algo... Basicamente é olhar o código do Delphi 6 e ajustar.
[]´s
[]´s
GOSTEI 0
Titanius
26/12/2005
Implementar um TFlowControl para o Delphi 6, 7 e 2005 é fácil. Quando tiver tempo vou tentar criar algo... Basicamente é olhar o código do Delphi 6 e ajustar.
[]´s
Estou muito ancioso por esta implementação.... eu nem tento, não saco nada de componentes... :cry:
GOSTEI 0
Dpinho
26/12/2005
Implementar um TFlowControl para o Delphi 6, 7 e 2005 é fácil. Quando tiver tempo vou tentar criar algo... Basicamente é olhar o código do Delphi 6 e ajustar.
[]´s
Gostaria de Saber se o componente saiu e como conseguir ele?
GOSTEI 0
Martins
26/12/2005
[b:ce4facf6c4]titanius[/b:ce4facf6c4] esse assunto tá bem interessante, me permita meter a colher tb, :D
vc poderia enviar uma cópia das [b:ce4facf6c4]units[/b:ce4facf6c4] para: martinsbios@gmail.com, gostaria de dar uma olhada nos códigos e ver se consigo recompilar para D6 e D7(q o [b:ce4facf6c4]Michael[/b:ce4facf6c4] com certeza vai compilar e disponibilizar para nós).
Valew
vc poderia enviar uma cópia das [b:ce4facf6c4]units[/b:ce4facf6c4] para: martinsbios@gmail.com, gostaria de dar uma olhada nos códigos e ver se consigo recompilar para D6 e D7(q o [b:ce4facf6c4]Michael[/b:ce4facf6c4] com certeza vai compilar e disponibilizar para nós).
Valew
GOSTEI 0
Martins
26/12/2005
[b:edc1bdcd75]titanius[/b:edc1bdcd75] esse assunto tá bem interessante, me permita meter a colher tb, :D
vc poderia enviar uma cópia das [b:edc1bdcd75]units[/b:edc1bdcd75] para: martinsbios@gmail.com, gostaria de dar uma olhada nos códigos e ver se consigo recompilar para D6 e D7(q o [b:edc1bdcd75]Michael[/b:edc1bdcd75] com certeza vai compilar e disponibilizar para nós).
Valew
:shock:
Galera respondi a esse tópico sem olhar a segunda página, foi mal, mas continuo interessado no assunto e na cópia da units, se alguém quiser mandar, por favor o e-mail está logo acima.
valew!!
GOSTEI 0