Giter VIP home page Giter VIP logo

router4delphi's People

Contributors

adrianosantostreina avatar alepmedeiros avatar bittencourtthulio avatar jeanribeiroo avatar juliocandrade avatar viniciussanchez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

router4delphi's Issues

Problema com Router4D

[dcc32 Error] DelphiUP.View.Layouts.Principal.pas(11): E2291 Missing implementation of interface method iRouter4DComponent.Render
Problema detectado apartir da versão 1.0.3 e 1.0.4 ao configurar TPrimeiraTela = class(TForm, iRouter4DComponent) o delphi não compilar fiz o downgrede para a versão 1.0.2 está funcionando perfeitamente.

Roteirização baseada em empilhamento/desempilhamento de rotas

A ideia da roteirização é boa mas não é a ideal, pois o correto seria ir empilhando cada rota(Tela) chamada e ao chamar o GoBack deve-se desempilhar a rota(Tela) e liberar de memória, pois no teste que fiz ao voltar para a rota(Tela) anterior e avançar para a mesma fechada os campos já vem preenchidos com os dados antigos, o que se torna um erro grave.
Com o empilhamento se resolve este problema e com isto teria que ter um método GoBack passando uma rota(tela) assim se consegue ir desempilhando as rotas(telas) até chegar na rota(tela) passada por parâmetro, com isto conseguimos voltar até a rota(tela) inicial ou até um ponto de fluxo que se deseja.

Erro ao compilar em 64bits Delphi 12

Não é possível compilar correctamente no Delphi 12 em 64 bits dado a uma incompatibilidade:

image

O mesmo problema não ocorre em 32 bits:

image

A solução passa por aqui:

image

Evento TRouter4D.Render não adiciona o form criado ao "history", impossibilitando a utilização da funcionalidade TRouter4D.Link.GoBack;

A função "TRouter4D.Render" não adiciona o formulário renderizado ao "history" de formulários. Dessa forma quando se cria um novo formulário a partir deste, a função TRouter4D.Link.GoBack não funciona.
Para reproduzir por favor siga os passos:
1 - TRouter4D.Render.SetElement(lytMain, lytMain);
2 - Dentro do PageMenu realize um TRouter4D.Link.&To('PageAlvo1');
3 - Dentro do PageAlvo1 realize um TRouter4D.Link.GoBack;

Entendo que a funcionalidade TRouter4D.Render deveria ter o mesmo comportamento da função TRouter4D.Link.&To no que diz respeito à adicionar o Form criado ao histórico "cache" de formulários;

Implementação de funcao Back

Senti a necessidade de poder controlar a lista do History para poder implementar um botão Back num app, ou seja poder chamar a rota anterior da atual. Thulio solicitou que abrisse uma issue.
Decidi arriscar a fazer as alteraçoes e estão funcionando, gostaria poder contribuir com o projeto se é possível, não consegui fazer um pull request.
Fiz uma analise das possíveis soluções e acabei criando uma lista FLIstCacheOrder: TListque é preenchida por um evento OnKeyNotify disparado toda vez que uma Key da FListCache é adicionada ou eliminada.
Aproveitei também e criei uma function BreadCrumb que nos retorna a lista das rotas anteriores a atual.
Não sei se a solução implementada seja a melhor opção, caso achem interessante posso disponibilizar.

procedure TRouter4DHistory.CacheKeyNotify(Sender: TObject; const Key: string; Action: TCollectionNotification);
begin
inherited;

 case Action of
   cnAdded:
   begin
      Self.FListCacheOrder.Add(Key);
      Self.FIndexCache := Self.FListCacheOrder.Count-1;
   end;

   cnRemoved:
   begin
      Self.FListCacheOrder.Remove(Key);
      Self.FIndexCache := Self.FListCacheOrder.Count-1;
   end;
 end;

end;

function TRouter4DHistory.GoBack: string;
begin
if Self.FIndexCache > 0 then
Dec(Self.FIndexCache);

 Result := Self.FListCacheOrder[Self.FIndexCache];

end;

function TRouter4DHistory.BreadCrumb(ADelimiter: char = '/'): string;
var i : integer;
begin
Result := '';

 if Self.FIndexCache = -1 then
    Exit;

 Result := Self.FListCacheOrder[Self.FIndexCache];

 for i := Self.FIndexCache-1 downto 0 do
 begin
    Result := Self.FListCacheOrder[i] + ADelimiter + Result;
 end;

end;

function TRouter4DHistory.IndexCache: integer;
begin
Result := Self.FIndexCache;
end;

Erro depois que atualizei

Atualizei o minha versão agora pouco e estou obtendo o seguinte erro:
[dcc32 Error] view.base.pas(16): E2291 Missing implementation of interface method iRouter4DComponent.Render
Os dois metodos estão implementados, pois já estavam funcionando da versão anterior.
O que posso fazer para corrigir?

Erro na Compilação Delphi 12.1 64-bit

O componente não está compilação em 64 bits, na versão Delphi 12.1

Erro :
[dcc64 Error] ObjectsMappers.pas(1183): E2251 Ambiguous overloaded call to 'Create'
System.JSON.pas(465): Related method: constructor TJSONNumber.Create(const Currency);
System.JSON.pas(461): Related method: constructor TJSONNumber.Create(const Extended);

image

Delphi 12 / Incompatibilidade

Não é possível utilizar o framework com Delphi 12.

photo_2023-11-26_13-37-37

photo_2023-11-26_13-57-03

O Danieli Teti já actualizou a sua framework da qual o Router4D deriva nalgumas funções.

Ideias e duvidas sobre a bibliotecas

Boa tarde Thulio Bittencourt, sobre esta biblioteca eu estava brincando com ele até aprofundei bastante com ele e tentei acrescentar algumas funções a mais, tipo se pudesse trabalha com frames e telas quando eu desse um create de cada formulário. ele criava 1 rotas pra mim e jogava render principal com o frames no panel, até ai tudo bem.

Por exemplo eu tenho 50 telas de consultas fora o cadastro, fazer um template só pra receber todas consultas e bem da hora não da problema nenhuma.

só que tipo não seria mais legal invés de fazer um template ja pronto igual uma consulta normal já pronto, fazer um template só com alguns panel sem nada, ai voce só trabalha com rotas com frames qnd der um create neste formulario no caso aciona a rota, vai criar e acionar outras rotas desses frames que vai trazer pra este template. oque você ia montar basicamente e trabalhar só com frames.

Exemplo: Você tem 3 telas de consultas que estar herdado neste template padrão sem nada somente alguns panel de menu e etc, ai você só cria o frames e ja configura nele e cria as rotas normal igual um TForm.

Quando eu faço esses teste na primeira vez quando eu aciono a rota e crio frames primeira vez ele funciona normalmente só que quando eu saio dessa rota e vou para outro template e volto do mesmo, a rota do template funciona e joga normal mais a outra rota que estava dentro deste template no evento pra acionar outra rota do frames ele ja não reconhece. ele traz o template mais não traz a outra. Mesmo matando e criando novamente ele destrói a existência deste frames, ele fala que iRouter4dComponent não foi implementado mesmo já implementado.

Ai estou preso nisto kkk achei bem legal este framework, se for trabalha com template padrão fazendo telas pronta ja configurado e joga, da pra trabalhar tranquilo assim sem problema. Mas acho que esse framework pode ir mais além de facilitar mais aplicação e trabalha com componentes visuals e fazer telas dinâmicas.
Sem título

bug com ListView

Se em alguma tela tiver um componente Listview com a propriedade ItemAppearance = DynamicAppearance
o componente gera um erro e memory leak ao fechar. Infelizmente não consegui resolver esse bug!

Perdendo bindings - Delphi 12

Olá a todos.
Estou com um problema assim:
. tenho um form modelo (layouts basicamente)
. herdei para um onde coloquei um listview - fiz binding para uma query minha (fd) que está em um datamodule. Funcionou.
. mudei mais algumas coisas e fui roda, não trazia os dados. Reparei que no live bindings ele deixa como invalido os campos, eu tenho que tirar o bindsource e refazer...fiz...depois parou novamente.

Estou com alguma coisa errada ou pode ser algum problema ?

Desde já, obrigado pela atenção

HardwareBack no mobile

Estou tentando tratar quando o usuário clica no botão de voltar ir fazendo a navegação, mas o aplicativo fecha, já tentei configurar no onKeyUp do form porém o aplicativo fecha de qualquer forma, tem como fazer com o aplicativo volte pra ultima tela sem fechar o app?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.