Exemplos de Telas

@Cauby Osorio , continuando o assunto referente ao email que te respondi a pouco, veja estes exemplos de telas, de um software que estou desenvolvendo. Aliás, já está sendo implantado em alguns clientes, a alguns milhares de quilometros de distância, tamanha é a confiança que tenho no resultado com o Xojo.

Estes exemplos são do Mac, mas no Windows, o visual é o mesmo, salvo as bordas das janelas, logicamente. Não consegui reproduzir este tipo de visual e recursos tão facilmente, em outras ferramentas, como consegui em Xojo, com a ajuda do pessoal aqui do fórum…

Qualquer dúvida com seus testes, poste aqui… Continuo a disposição.

Achei o lay-out bem legal , s queria entender o que rola.

um list do lado esquerdo quando voc anda pelo list ele entra em um Container do lado direito, isso ?

Todo sistema esta dentro de uma unica janela com vrios Container.

Adelar Ol, eu gostei do menu esquerda voc fez, o que voc fez com algum plugin? ou nico realbasic?
saudaes
Mike

[quote=199775:@Mike Marcus]Adelar Olá, eu gostei do menu à esquerda você fez, o que você fez com algum plugin? ou único realbasic?
saudações
Mike[/quote]

Olá Mike,

É apenas Xojo. Na verdade, é uma classe, a FGSourceList, que é gratuita e open source, velha conhecida do pessoal que usa Xojo. Ela extende uma listbox, acrescentando várias funcionalidades. Muito prática e fácil de usar…

Em outro sistema, eu uso uma tabela com permissões, onde o cliente acaba montando o menu dele ao lado, de acordo com os seus próprios usuários.

Abraço

[quote=199753:@Cauby Osorio]Achei o lay-out bem legal , só queria entender o que rola.

É um list do lado esquerdo quando você anda pelo list ele entra em um Container do lado direito, é isso ?

Todo sistema esta dentro de uma unica janela com vários Container.[/quote]

Cauby, é mais ou menos isso. O menu a esquerda, é o FGSourceList, conforme respondi ao @Mike Marcus . A direita, na verdade é um canvas, onde insiro e removo containers Controls, realmente mantendo todo o aplicativo em uma única janela.

A lista com as máquinas, é um controle que eu criei, baseado em outro canvas, e usando observer pattern e alguns outros recursos de programação. Assim, tenho praticamente a facilidade de uma listbox, mas com muita flexibilidade para colocar o que eu quiser em cada linha.

Abraço

Neste post tem os detalhes sobre onde encontrar a FGSourceList…

https://forum.xojo.com/11021-fgsourcelist-licensing/0

O controle Canvas e Container neste meu inicio de aprendizagem o que menos entendi at agora, tem como me enviar um pequeno trecho de cdigo ou como usar o canvas e inserir e remover o container para eu entender melhor ?
Obrigado.

[quote=199829:@Cauby Osorio]O controle Canvas e Container neste meu inicio de aprendizagem é o que menos entendi até agora, tem como me enviar um pequeno trecho de código ou como usar o canvas e inserir e remover o container para eu entender melhor ?
Obrigado.[/quote]

@Cauby Osorio , não é muito simples explicar sem mostrar todo o código, o que seria inviável, por vários motivos… Mas tomando como base qualquer uma das telas acima, leve em conta que todo o espaço a direita do menu, é um canvas, que chamo de “cvMain”.

Assim, para remover e acrescentar um ContainerControl, que representa uma lista de fornecedores com um pequeno formulário, por exemplo, uso o seguinte código, que pode estar em um botão ou em um item de menu:

  Case "Fornecedores"
    Dim compFornecedores As New ccFornecedores
    
    //Remover componente anterior do canvas
    If Self.componente <> Nil Then
      Self.componente.close
      Self.componente = Nil
    End If
    
    //Mostrar no canvas
    Self.componente = compFornecedores
    Self.componente.EmbedWithin(cvMain, 0, 0, cvMain.Width, cvMain.Height)
    Self.cvMain.Invalidate
    Self.cvMain.Refresh

No código acima, estou testando vários itens de menu, e se um deles for igual a “Fornecedores”, eu instancio um novo ContainerControl chamado de ccFornecedores, verifico se já existe um ocupando o canvas, e em caso positivo, removo, e então, insiro o novo controle.

Uso esta mesma técnica para todos, e assim, mantenho o aplicativo inteiro com uma só janela. Só abro outra em caso de mensagens para o usuário, como por exemplo, pedidos de confirmação de exclusão.

Quanto ao containerControl, é bem simples de manipular. Comece com coisas simples. Um formulário, que você faria com uma Window, por exemplo, você pode fazer com um containerControl exatamente da mesma maneira. Nada diferente. Arraste um da Library para o seu navegador de projeto, dê um nome, redimensione, e acrescente nele qualquer controle que você precise, como listbox, textField, buttons, etc.

Depois, para usar, ou você arrasta ele do navegador para uma Window já existente, ou você usa a técnica que descrevi acima.

No caso de arrastar para uma janela, na minha opinião só faz sentido criar um containerControl, se você quiser reaproveitar. Imagine por exemplo, que você precise que apareça uma lista de clientes, com uma caixa de texto para pesquisa, em um formulário de vendas, e também em contas a receber. Ao invés de copiar e colar os controles e códigos, você usa um containerControl, e arrasta ele para qualquer Window que você precisar usar. Assim, qualquer alteração que você fizer no original, se reflete automaticamente em todas as instâncias dele, o que é muito prático.

Ah, ia esquecendo. No código acima, eu verifico nesta linha:

If Self.componente <> Nil Then

se já existe um containerControl no meu canvas… Para isso funcionar, eu criei uma propriedade na minha janela principal, chamada “componente”, do tipo containerControl, e a cada vez que insiro um no canvas, armazeno ele nesta propriedade, para saber depois se meu canvas está vazio ou não.

Para mostrar vários containers, simulando uma listBox, a técnica é diferente, e um pouco mais complicada. Podemos tratar dela mais a frente…

Se não fui claro o suficiente, pergunte… Vamos tentar esclarecer da melhor maneira, para que você possa entender.