|
Postada em 02/02/2005 19:51 hs
Estou com um pequeno problemão. Criei minha Classe e vinculada a ela criei minha coleção de forma que ao instanciar eu possa acessar da seguinte forma: MinhaClasse.Coleção(x) Como na maioria das coleções do VB. Minha coleção possui várias propriedades read/write que não pertencem a classe (só a coleção) e uma propriedade somente read. O problema é que preciso declara o PROPERTY LET para que a função ADD da minha coleção escreva nesta propriedade mas não posso deixar que o usuário altere esta propriedade. Alguém sabe como fazer isto? Obrigado! Fabio Carvalho.
|
|
|
|
Sandro
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 02/02/2005 20:56 hs
Olá Fabio, O que você deseja pode ser conseguido com uma variante da Property Let. Ao invés de declarar a propriedade como pública, você deverá declará-la como Friend. Assim: Ao invés de fazer isso: Public Property Let MinhaPropriedade(MeuValor as Variant) Faça assim: Friend Property Let MinhaPropriedade(MeuValor as Variant) A Property Get deverá permanecer Public, para que o usuário possa consultar o seu valor. Quando você usa a cláusula Friend, você está dizendo para o compilador que apenas a parte do programa que manipula a coleção poderá escrever nela, não o usuário. Isso é usado normalmente quando se escreve controles ActiveX ou DLLs que poderão ser usadas em outros projetos e até mesmo por outros programadores. um abraço, Sandro.
|
|
|
|
Postada em 03/02/2005 12:48 hs
Olá Sandro, Sempre sanandos as dúvidas sobre classe. Chegeui a testar o FRIEND mas não funcionou como eu desejava. Será que é porque eu instanciava a classe no mesmo projeto onde eu criei a classe? Para usar o FRIEND eu preciso encapsular a minha classe em uma DLL, por exemplo, para utilizar no meu aplicativo original? Mais uma vez, obrigado pela ajuda!
|
|
|
|
Postada em 04/02/2005 23:13 hs
Olá Fabio, Realmente, como eu disse, o Friend faz com que apenas o projeto que você está trabalhando enxergue a propriedade, portanto, de dentro do mesmo projeto, o Friend não irá alterar em nada o seu programa. Mas, se você encapsular a sua classe em uma DLL ou OCX, aí as coisas funcionam corretamente. Existe ainda uma outra forma de você testar sem ter que compilar. Clique no Menu File e selecione Add Project e crie um novo projeto que irá trabalhar em conjunto com o outro. Isto é que se chama Grupo de Projetos, entenda isso como se você tivesse duas instâncias do VB trabalhando ao mesmo tempo, de forma que o fluxo de execução passa de um projeto para outro assim que a classe é instanciada, permitindo que seja feito o debug do projeto. Você pode compilar os projetos independentemente um do outro e pode ter vários projetos dentro de um mesmo grupo. Só não esqueça de definir qual é o projeto inicial (startup), clicando com o botão direito do mouse sobre o projeto que irá disparar a DLL e selecionando Set as Startup. um abraço, Sandro.
|
|
|
|