• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

jorruivo

[VB6] 1 winsock e 2 forms

11 mensagens neste tópico

olá

eu estou a fazer umaa aplicação q usa um winsock para fazer a ligaçao a um servidor e ate agora tenho feito as operações todas na form q inseri o winsock, mas agora tenho um coisa q ocupa muito espaço por isso queria fazer numa from a parte, mas usando a mesma winsock para manter a ligação sem cair. é possivel? como?

agora outra duvida...tenho uma text box q recebe o que o servidor vai enviando com resposta dos meus comandos, mas com é normal xega a um ponto q a caixa fica pequena pa tanto texto, entao queria q de forma automatica o scroll da text box estivesse sempre puxado para baixo. alguem tem um solução??

obrogado

sem mais

Mr_Jorge

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora bem... imagina que tens o componente winsock na Form1 e queres a ceder ao coponente apartir da Form2. Fazes o seguinte

Form1.Winsock.....

Para a segunda questão podes fazer algo do tipo :

Dim temp As Integer
temp = Len(Text1.Text)
Text1.SelStart = temp
Text1.SetFocus

o comando Len() serve para contar o numero de caracteres que tens na text box e retorna um valor numerico

e a opção SelStart da TextBox serve para colocares o cursor na posição desejada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

porreiro ja testei ta tudo como queria...fixe

so tive q tirar a linha Text1.SetFocus , tb n sei oq faz, mas quando a tirei deu logo

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois eu esquecime de tirala. foi só para testar issu e não faz la falta.

A Propriedade SetFocus serve para selecionar o Objecto em causa, por exemplo

imagina que tens um botão e uma TextBox e tinhas o botão selecionado e querias que quando carrega-ses no botão a caixa de texto fica-se pronta a escreve ou seja ficava com aquela barrinha a piscar dentro dela.

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora surgiu-me outro problema, eu através de codigo desenho algumas linhas, porq eles tem q ser desenhadas apos alguns calculos. faço isto com o comando line (x1,y2)-(x2,y2) e a linha realmente é desenhada, mas quando minimizo e volto a abrir o programa as linhas desenhadas por codigo desaparecem(e as q tenho desenhada a mão, com o rato não).

a minha ideia é q a lina é desenha realmente mas depois é "esquecida" fica somente em cache e minimizando a cache é apagada, será isto?

tambem ante de verificar este problema, surgiu outra, como é q apago no decorrer do programa uma linha desenhada por codigo, se ela nem tem nenhuma identificação como as outras, tipo line#.

existem solução pa estes problemas??

Mr_Jorge

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1ª parte acho esquesito isso,nunca trabalhei muito com essa parte mas se tens definido por codigo que qures uma linha do ponto x ao y devia-se manter,a unica hipotese que vejo para resolver isso é sempre que a aplicação detecta que voltou ao estado normal depois de ter sido minimizada voltares a chamar o codigo que desenhou as linhas supondo que tens esse codigo no botao command1 terias que fazer na tal parte que detecta que o form voltou a ser mostrado qq coisa como isto command1_click

2ª parte,pq nao usas o objecto line,consegues fazer o mesmo que fazes com esse comando com a vantagem de o conseguires por a invisivel a linha sempre que não quiseres que ela apareça

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

agora surgiu-me outro problema, eu através de codigo desenho algumas linhas, porq eles tem q ser desenhadas apos alguns calculos. faço isto com o comando line (x1,y2)-(x2,y2) e a linha realmente é desenhada, mas quando minimizo e volto a abrir o programa as linhas desenhadas por codigo desaparecem(e as q tenho desenhada a mão, com o rato não).

Para que a linha não desapareça quando minimizas a janela basta ires a propriedade AutoRedraw da PictureBox (penso que a Image não tem essa propriedade) e metes  essa propriedade a True.

tambem ante de verificar este problema, surgiu outra, como é q apago no decorrer do programa uma linha desenhada por codigo, se ela nem tem nenhuma identificação como as outras, tipo line#.

Uma ideia seria criares 4 arrays tipo "Px1()",  "Py1()" e "Px2()",  "Py2()" do tipo integer e cada vez que criacs uma nova linha guardavas os pontos dessa linha nos arrays. Uma recta como sabes tem 2 pontos e cada ponto desses tem as suas coordenadas X e Y dai esses 4 arrays para os dois pontos.

Em seguida para apagares uma linha desejada e e continuares a ter as outras podias fazer qualquer coisa deste tipo

dim NumeroLinhas as integer
Dim i as integer

for i = 0 to NumeroLinhas
      picture1.line (Px1(i), Py1(i)) - (Px2(i), Py2(i))
doevents
next i

Istu para escrever as linhas... para apagares uma linha :

picture1.cls

Px1(num) = 0
Px2(num) = 0
Py1(num) = 0
Py2(num) = 0

"picture1.cls" para limpar a picturebox

"num" é o numero da linha que queres apagar

E depois de meteres a a posição do array a zero voltas a executar o código acima para escrever as linhas

Só para terminar, deves optimizar o código porque fiz issu a pressa e foi apenas para teres uma ideia  :bounce:

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

li as sugestões e algumas são uteis

por exemplo os 4 arrays penso q poderiam ser substituidos por 1 com um type, eu ppa mim penso q fica mais facel depois pa fazer o codigo, mas é indiferente

agora em relação à linha desaparecer, eu nao queria usar picturebox, eu ja tive a ver e realmente o linha n desaparece, mas  n queria o rebordo da picturebox por isso é q n a queria usar, mas parece a unica alternativa. alguma ideia??

Mr_Jorge

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
por exemplo os 4 arrays penso q poderiam ser substituidos por 1 com um type, eu ppa mim penso q fica mais facel depois pa fazer o codigo, mas é indiferente

Por issu eu ter dito para aperfeiçuares o código :)

Para retirares o rebordo da PictureBox basta ires á propriedade Appearance e envez de 3D metes Flat e depois ela fica com uma linha preta em volta se a quiseres tirar vai a propriedade BorderStyle e e alteras para None

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok...axo q assim ja vou poder fazer o meu programa na boa, fixe.

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora