TAO SIMPLES E NAO FUNCIONA. POR QUE?

LUCASVAZ 13/03/2012 11:21:59
#397046
Bom, vou deixar com os colégas ai do fórum pois não conheço VB6, mas , ao meu ver, seu código devia funcionar normalmente.

Desculpa não poder ajudar.

Att,

Lucas
ROBIU 13/03/2012 11:22:58
#397047
Então é isso:
Private Sub Command1_Click()
AlterarTexto Text1
End Sub
Public Sub AlterarTexto(Txt As TextBox)
Txt.Text = [Ô]VbMania[Ô]
Txt.Font.Bold = True
Txt.Alignment = 1
Txt.BackColor = vbCyan
Txt.BorderStyle = 1
Txt.Width = 3000
End Sub
LVFIOROT 13/03/2012 11:24:15
#397048
bom,

Debugando seu codigo posso dizer nao se pode associar uma propriedade de um objeto como referencia.
E necessario ter uma variavel so para isso ou associar o objeto todo.


Private Sub Command1_Click()
AlterarTexto Text1
End Sub

Public Sub AlterarTexto(ByRef Txt As Object)
Txt = [Ô]abc[Ô]
End Sub


Referencia a uma variavel direta e nao a propriedade




Private Sub Command1_Click()
Dim txt As String
AlterarTexto txt
Text1.Text = txt
End Sub

Public Sub AlterarTexto(ByRef txt As String)
txt = [Ô]abc[Ô]
End Sub

JALEXM 13/03/2012 11:24:16
#397049
Citação:

:
Deixa ver se eu entendi, você quer alterar o conteúdo do Textbox ou do label do botão???



O problema é tão simples que todos aqui estão confusos.
Apenas quero alterar a prop. Text do Textbox passando-a como parâmetro para outro sub.
Não há nada de excepcional. Muito simples, mas não funciona. O que voces mostraram aqui são quebra-galhos para contornar essa falha ABSURDA do compilador do VB6.
Ou então, eu estou esquecendo de alguma coisa.
MARCELO.TREZE 13/03/2012 11:26:26
#397051
eu vou ter de dizer que o código está [Ô]certo[Ô], ou seja a lógica que está errada

pelo que eu entendi vc gostaria de preencher a text1 com a string [Ô]ABC[Ô], é isso? se for te explicarei o que está errado



JALEXM 13/03/2012 11:39:25
#397053
Citação:

Debugando seu codigo posso dizer nao se pode associar uma propriedade de um objeto como referencia. E necessario ter uma variavel so para isso ou associar o objeto todo.


Só se for no VB6. Estou cansado de fazer isso em linguagens até mais antigas.
Além disso, veja esse teste:

Private Sub Command1_Click()
Text1.Text = [Ô]xyz[Ô] [ô]<--- coloca valor [Ô]xyz[Ô] em Text1.Text antes de chamar a alteração
AlterarTexto Text1.Text
End Sub

Public Sub AlterarTexto(ByRef Txt As String)
MsgBox Txt [ô]<--- mostra o valor da propriedade Text passada como parâmetro. Aparecerá [Ô]xyz[Ô]
Txt = [Ô]abc[Ô]
End Sub

O fato de aparecer [Ô]xyz[Ô] significa que o compilador TEM como manipular a propriedade passada para o sub, mas ele NÃO faz isso.
Entende o problema?
JALEXM 13/03/2012 11:49:38
#397055
Citação:

:
eu vou ter de dizer que o código está [Ô]certo[Ô], ou seja a lógica que está errada

pelo que eu entendi vc gostaria de preencher a text1 com a string [Ô]ABC[Ô], é isso? se for te explicarei o que está errado





Olá, Marcelo.
O que eu preciso é muito simples: passar uma propriedade Text (seja de um Textbox, de um RichText, etc.) e alterá-la em outro sub, conforme alguma lógica dentro desse outro sub.
Um exemplo concreto: um sub lê um arquivo texto e retorna o conteúdo do arq. no parâmetro Txt.
Algo asim:
Public Sub LerArqTexto(NomeArq As String, ByRef Txt As String)

Eu gostaria de fazer o seguinte em algum outro lugar do código:
LerArqText([Ô]C:\DADOS\DOCUMENTO.TXT[Ô], RichTextBox.Text)

Claro que existem várias outras formas de fazer isso, mas não dá prá aceitar que o VB6 não execute essa lógica.
Ela é muito básica.


LVFIOROT 13/03/2012 11:53:57
#397056
Citação:

:
bom,

Debugando seu codigo posso dizer nao se pode associar uma propriedade de um objeto como referencia.
E necessario ter uma variavel so para isso ou associar o objeto todo.


Private Sub Command1_Click()
AlterarTexto Text1
End Sub

Public Sub AlterarTexto(ByRef Txt As Object)
Txt = [Ô]abc[Ô]
End Sub


Referencia a uma variavel direta e nao a propriedade




Private Sub Command1_Click()
Dim txt As String
AlterarTexto txt
Text1.Text = txt
End Sub

Public Sub AlterarTexto(ByRef txt As String)
txt = [Ô]abc[Ô]
End Sub



leu isso ?
JALEXM 13/03/2012 12:00:38
#397057
Citação:


Referencia a uma variavel direta e nao a propriedade


Private Sub Command1_Click()
Dim txt As String
AlterarTexto txt
Text1.Text = txt
End Sub

Public Sub AlterarTexto(ByRef txt As String)
txt = [Ô]abc[Ô]
End Sub

leu isso ?



Sim, mas muito feio, concorda? Tenho a prop. disponível e sou obrigado a criar uma outra variável.
O pior é que o compilador TEM o valor da prop. dentro do sub AlterarTexto, mas não a altera (chegou a ver uma de minhas mensagens acima?)
Isso é mais feio ainda.
LVFIOROT 13/03/2012 12:09:52
#397059
olha, se olhar o lado logico, uma propriedade e uma função GET, que dentro dessa funcao tem uma variavel.
Olhando dessa forma a referencia fica em cima da função e nao em cima da variavel privada dentro da propriedade.
Por isso que uma referencia nao funciona em cima de uma propriedade, nao sei se em java ou outra linguagem isso e possivel e o compilador consegue interpertar que na verdade vc quer fazer uma referencia a propriedade (funcao get) e ter ao endereço de memoria da variavel privada dentro desta função.

Se isso fosse prossivel, para que usar propriedades se é possivel associar diretamente a variavel dentro da propriedade.

Vejo isso como segurança!

Por isso associamos o objeto como referencia!
Página 2 de 5 [48 registro(s)]
Tópico encerrado , respostas não são mais permitidas