ALINHAR TEXTO EM MENSAGEM

JORGESALES 17/06/2016 22:52:02
#463760
Pessoal boa noite, conforme mostra a imagem gostaria de saber
se é possível alinhar o texto da mensagem, pensei em algo para
pegar a propriedade Len do subitem(1) e diminuir pela quantidade
de espaço de cada linha da mensagem mas nem sei como nem se
há como fazer, esse é o código usado para exibir a mensagem:
      With lstItens
For i = 1 To .ListItems.Count
.ListItems(i).Selected = True
If .SelectedItem.Checked = True Then produto = produto & StrConv(.SelectedItem.SubItems(1), vbProperCase) & _
[Ô]: [Ô] & .SelectedItem.SubItems(2) & vbNewLine
Next
End With

If MsgBox([Ô]Confirma gravação?[Ô] & vbCrLf & [Ô]Os seguintes produtos serão enviados:[Ô] & vbCrLf & vbCrLf & _
[Ô]-----------------------------------------[Ô] & vbCrLf & _
produto & [Ô]_________________________________________[Ô] & vbCrLf & _
[Ô]Total de itens: [Ô] & lblTotalItens & vbCrLf & [Ô]Valor Total: R$ [Ô] & lblTotalValores & vbCrLf & _
[Ô][Ô], vbYesNo, [Ô]Controle de Vendas![Ô]) = vbYes Then
KERPLUNK 17/06/2016 23:09:15
#463761
Resposta escolhida
Eu acho que usar um form mesmo seria melhor do que uma messagbox... são muitas informações
JORGESALES 17/06/2016 23:24:29
#463763
KERPLUNK, obrigado mais uma vez, eu havia pensado nisso,
no entanto estou exercitando a codificação para aprender cada
vez mais.
Como eu sempre digo aqui, tenho muitas ideias boas mas não sei
como coloca-las em prática.
Vou manter o tópico aberto mais um pouco para ver se aparece alguém
que saiba como fazer isso (se é que é possível).

Obrigado mais uma vez por estar sempre pronto para ajudar meu amigo.
KERPLUNK 17/06/2016 23:59:38
#463764
Sim, é possível. Mas tão trabalhoso que não vale a pena. Uma MessageBox é para mensagens mais simples, uma pergunta, um aviso, uma confirmação simples ou coisa assim. Quando você precisa exibir dados mais complexos, como é o seu caso, não é uma boa alternativa. é mais uma do tipo de coisa que é mais para conceito do que para codificação. Acredite ou não, mais de 60% do sucesso de um programa é a parte conceitual. A codificação é quase que secundária. Veja bem o seu caso aqui. Você quer exibir uma lista de produtos para confirmar alguma ação. Imagine que o usuário pode escolher uns 20 ou 30, então colocar apenas os dois ou três primeiros explicitamente, seguido de uma soma dos demais, não é uma mensagem clara. Seria muito melhor exibir todos os produtos em um grid com botões para confirmar, assim, o usuário pode ter certeza do que está fazendo. Além disso, serve para SUA segurança também. Se o usuário reclamar desse aspecto, pelo menos essa desculpa ele não vai ter, pois você estará deixando bem claro na mensagem o que vai acontecer. Conceitual.
JORGESALES 18/06/2016 00:17:55
#463765
KERPLUNK, concordo com cada linha que você escreveu,
entretanto mesmo que a mensagem for exibir 20 ou 30 linhas só seria
preciso encontrar um código que acertace a distancia que ficaria o valor
da descrição para apenas um item e seria feito para todos.
Como você disse anteriormente, um form resolveria isso mas
só postei para ver se era possível fazer com mensagem e também eu
ganharia um pouco mais de conhecimento em codificação (coisa que preciso
muito).
Você nem imagina ( ou talvez até imagine) a felicidade que sinto em ter criado
esse simples código, tudo que uso em meus projetos são copy x cola do que aprendi
com os cursos do professor Mário Andrade
Claro que com algumas adaptações, enfim, o prazer de entender a lógica de como as coisas funcionam
é muito bom.
Espero um dia poder fazer isso também em C# e é muito bom saber que posso
contar com você e com todos aqui do VBMania.
KERPLUNK 18/06/2016 00:26:52
#463766
Mas uma messagebox com 20 ou 30 linhas tomaria praticamente a tela toda e ficaria (na minha opinião) feio. Com um form, você pode ter um grid que e [Ô]rolável[Ô] e não ocuparia tanto espaço. Posso fazer um exemplo pra você aqui de algo assim se você quiser...
JORGESALES 18/06/2016 00:44:56
#463767
Verdade, mas esse sisteminha vai ser para uma loja de celular onde só tem 5 tipos
de serviços, estou adaptando um sistema de vendas para isso.
Dessa forma ficaria viável (se fosse possível ) fazer com msgbox mesmo.
Estou doando para um amigo que está fazendo tudo isso em um caderno.
Só queria deixar bem funcional.
NILSONTRES 18/06/2016 00:54:22
#463768
KERPLUNK esta correto.
crie um form e abra ele modal e carregue os dados.
Mas para formatar tente isso para alinhar a direita:
Print #1, [Ô][Ô]; Tab(11); [Ô]S.TOT >[Ô]; Tab(28); Format$(lblSubTotal, [Ô]@@@@@@@@@@@[Ô])
Print #1, [Ô][Ô]; Tab(11); [Ô]DESC >[Ô]; Tab(28); Format$(FormatNumber(lblSubTotal - txttotal, 2), [Ô]@@@@@@@@@@@[Ô])
JORGESALES 18/06/2016 15:48:10
#463774
Nilson, não entendi como usar este código.
NILSONTRES 18/06/2016 17:13:11
#463777
Format$(lblSubTotal, [Ô]@@@@@@@@@@@[Ô])
Cada arroba dessas alinha o texto a direita, que é o maior problema no vb6, alinhar a direita.
faça o teste, coloque isso em um botão.
MsgBox Format$([Ô]65,00[Ô], [Ô]@@@@@@@@@@@[Ô])
MsgBox [Ô]65,00[Ô]
MsgBox Format$([Ô]65,00[Ô], [Ô]@@@@@@@@@@@[Ô])

melhor ainda, isso, observe que 65,00 não esta alinhado, mas 66,00 sim.
MsgBox Format$([Ô]66,00[Ô], [Ô]@@@@@@@@@@@[Ô]) & Chr(13) & [Ô]65,00[Ô] & Chr(13) & Format$([Ô]66,00[Ô], [Ô]@@@@@@@@@@@[Ô])

obs: Chr(13) faz o mesmo que vbCrLf, pode alterar se quiser.


ADEMIRAS217 19/06/2016 16:51:48
#463789
Certa vez fiz assim com LItem e MSFlexgrid:
Strings alinha pela direita e;
Integer alinha pela esquerda.

Exemplo:
AAS
123

X = Right ([Ô]----------[Ô] & Str(val(123)),10)
X = [Ô]-------123[Ô]

Resultado:
AAS
-------123. O hífen pode ser chr(32), Space.

Desculpem se fui inoportuno.
Um abraço,
AAS

Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas