Logo Hardware.com.br
vini_bill
vini_bill Super Participante Registrado
592 Mensagens 0 Curtidas

Algumas duvidas de VB6

#1 Por vini_bill 14/05/2005 - 16:40
Oi pessoal. Beleza? Estou estudando VB6 e estou tendo algumas dificuldades!

Por serem algumaS eu vou tentar enumerar as mais importantes primeiro indo das mais "dificeis" até as mais "faceis" smile.png. Estou lendo o livro "Sams aprenda VB6 em 21dias" ( mas eu num vou aprender em 21 dias nem ferrando... tô seguindo o instinto )

Duvida1) Apesar de já ter passado por cima eu ainda tenho dificuldade pra entender os Loops ( todos ), mesmo sabendo que eles são fundamentais decidi prosseguir sem entender, agora estou tendo dificuldades frown.png. Alguém pode me explicar o Do...While...until ? E o For...loop? Qual deles é mais usado? Alguma restrição? Esses aqui eu num entendi mesmo ( já tentei reler o livro e num adiantou... procurei na internet e nada me ajudou, falei com o meu chefe do trabalho e ele me "enrolou" frown.png recorro a vocês agora.

Duvida 2) Variaveis públicas e locais e globais. Tipo... Eu entendi que pra definir uma variável pública tenho de ter:

Public Variavel as TipoDeVariave


Para as locais:
Dim Variavel as TipoVariavel


E as globais?

Duvida 3)Eu entendi que as variaveis locais só funcionam no processo em que elas foram declaradas, as públicas dentro de todo o módulo e as globais em todo programa ( é isso mesmo? ). Agora... o que aconteceria se eu definisse em Form_load a seguinte variavel:
 Dim Variavel as Integer

Neste caso eu estaria definindo uma variavel equivalente a uma variavel pública?

Duvida 3) Funções públicas e ( isso confunde pacas... ), locais e globais... como que elas funcionam? Tipo... Eu entendi eu declado uma função subtituindo o Sub por Function, e que toda Function tem de ter variaveis declaradas no mesmo número ( E não necessariamente com grafias e tipo iguais ) ficando assim:

 private Function Função(Variavel1,Variavel2 as integer) as integer
(...)
End function


Agora a parte tenebrosa... como que eu uso uma função? Sim... eu sei cria-las mas e dai? É só usar:

Sub Algumacoisa()
Call Função(Variavel1,variavel2)
(...)
End sub


Só isso? Eu lembro que eu num conseguir fazer uma função que calculava bhaskara ser usada no programa ( que o windows fez o favor de corromper - ai que ódio!!! ).

Duvida 4) Suponha uma MessageBox ( MsgBox ). Agora imagine que essa messagebox vai exibir o valor de uma conta algo ao estilo: "o resultado é: (R)esultado" onde (R)esultado é uma variavel. Eu entendi que eu deveria fazer assim:
(...) 
Msg = Msgbox ("O resultado é:" & Resultado, VbExclamation)


Tá certo? Funciona da mesma maneira com as InputBox?

Duvida5) Como, e quando eu uso o comando Choose? Num seria melhor eu usar um comando If ou Select case?

Duvida 6) Como que eu "aumento" o tamanho de uma Imagem de uma Picturebox? O livro mostrou que é possivel através do comando:

NomeImagem.Height = 43242
NomeImagem.Width = 4243


Só que eu fiz certinho e mesmo o VB num tendo "reclamado" ele também não fez funcionar.... A imagem só pode ser diminuida ?

Acho que por enquanto já foi o bastante! Valeu pessoal. Conto com vocês!

... Vinicius Menezes ... - Segunda aparição neste fórum... mas sou bem ativo na parte Linux e Software Livre wink.png
CaSt
CaSt Super Participante Registrado
573 Mensagens 5 Curtidas
#2 Por CaSt
15/05/2005 - 12:58
Bom, vou tentar responder as perguntas que eu souber da melhor forma:

1) Utiliza-se o do while - loop, quando não se sabe ao certo quantas vezes o loop será executado. Exemplo:

Inicie um novo projeto em VB;
Insira no novo formulário um Label e um ListBox
Apague o conteúdo da propriedade CAPTION;
Abra a janela de código e insira a sequência a seguir no evento LOAD do Form:


contador = 1
continua = "s"
Do While continua <> "n"
List1.AddItem (Str(contador))
continua = InputBox("Pergunta", "Continua contagem S/N?", "s&quot
contador = contador + 1
Loop
Label1.Caption = "Contagem Finalizada"
End Sub


Percebe-se que neste caso, o loop será executado enquando o usuário responder "s" no Input Box.

Já o for - next, é executado quando o número de vezes que o loop será executado é predeterminado. Por exemplo:

Abra o VB6, insira no formulário um botão e um list box. Na programação "Click" do Botão, insira o seguinte código:

Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 10
List1.AddItem i
Next i
End Sub


Percebe-se neste caso, que eu (o programador) determinei que apareceriam no listbox somente a contagem de 1 a 10. Foram valores predeterminados.


Creio que entendendo esses tipos de loop, você será capaz de entender os outros, onde há uma leve mudança de sintaxe, mas o efeito é o mesmo.

2) Existe um local no VB onde são colocadas todas as declarações globais, chamado de "General Declarations". Ele fica acima de toda a programação. Para verificação, você pode utilizar o exemplo do for que eu passei acima. Só que agora ficaria assim:


Dim i As Integer 'Esta linha faz parte do General Declarations, que vem
'acima de todo o resto do codigo

Private Sub Command1_Click()
For i = 1 To 10
List1.AddItem i
Next i
End Sub


Executando o programa, você perceberá que o efeito foi o mesmo, porém agora a variável inteira 'i' poderá ser utlilzada em qualquer parte do programa.

3) As funções são utilizadas para fins específicos, como:

Funções de Conversão
Funções de Data e Hora
Funções de String
Funções de Manipulação de Matrizes
Funções Lógicas
Funções de Disco
Funções de Teste
Funções de Escolha

Dê uma pesquisadinha sobre cada uma delas... Mas para criar as funções, quem vai ter que dar uma pesquisadinha sou eu big_green.png.

4) As Message Boxes são usadas somente para exibir informações ou alertas... Já as Input Boxes, são usadas também como forma de entrada de dados. Um exemplo parecido com o que você deu seria esse:

Private Sub Command1_Click() 'botao
Dim i As Integer
i = 10
MsgBox "O resultado é: " & i
End Sub


Dessa forma a message box exibiria a seguinte mensagem: "O resultado é: 10". Você pode verificar a estrutura do Input Box através do primeiro exemplo que eu passei aqui.

Vou almoçar agora, depois eu edito e tento responder o resto...

[ ]'s
Linux User #394367
Asking Smart Questions

"Always remember that you are unique. Just like everyone else"
vini_bill
vini_bill Super Participante Registrado
592 Mensagens 0 Curtidas
#3 Por vini_bill
16/05/2005 - 14:07
Fala 1001! Você num sabe responder as duas outras duvidas não?

Bom... estou com um problema novo... oops.png . Eu estou tentando "clonar" o bloco de notas com todas as funções. Dai a função formatar ( Formatar/Font - no bloco de notas) abre um janela do estilo Common Dialog que funciona da seguinte maneira:

Private Sub MenuFormata_Click()
'Abrir janela de formatação de fonte
FormGeneric.ShowFont
'Definindo as flags
'Lista as fontes disponiveis tanto na impressora
'quanto as fontes do PC ou deixa o PC lidar com
'sobreescrito e outros "efeitos de fonte"
FormGeneric.Flags = cldclboth Or cldcfeffects
'A fonte do texto será igual a fonte definida
'na janela e assim por diante ( outras opções )
Text1.Font.Name = FormGeneric.FontName
Text1.Font.Size = FormGeneric.FontSize
Text1.Font.Bold = FormGeneric.FontBold
Text1.Font.Italic = FormGeneric.FontItalic
Text1.Font.Underline = FormGeneric.FontUnderline
Text1.Font.ForeColor = FormGeneric.Color
End Sub


Isso onde FormGeneric é o objeto do form para abrir a janelade fonte.
Ao tentar usar a função ( só ao tentar chamar ela ) aparece um erro dizendo para eu instalar fontes através do painel de controle.

Isso é algum tipo de bug? Como que eu resolvo isso? Estou usando Windows 2000 professional.

Outra coisa. Em outro programa na janela abrir ( para escolher imagem ) eu consegui fazer a janela aparecer. Só que ela sempre dá erro. A programação está assim:

Private Sub MenuAbrir_Click()
'Abrir janela de escolha de localização.
FrmGenerico.ShowOpen
FormGenerico.Filter = "Scale Vetorial Graphics(*.svg)|*.svg| Portable Network Graphics(*.png)|*.png"
End Sub


O VB assinala em amarelo essa linha:

FormGenerico.Filter = "Scale Vetorial Graphics(*.svg)|*.svg| Portable Network Graphics(*.png)|*.png"


Como que eu resolvo isso? Eu quero que a imagem escolhida na janela apareça numa picturebox.

Valeu wink.png.

... Vinicius Menezes ...
CaSt
CaSt Super Participante Registrado
573 Mensagens 5 Curtidas
#4 Por CaSt
16/05/2005 - 17:17
Bom, continuando com as dúvidas do post anterior...

5) O comando Choose é utilizado para selecionar um valor de uma lista de argumentos. A sintaxe é a seguinte:
Variável = Choose (<índice>, <escolha>[,  <escolha>]...)

Onde:
Índice : Expressão numérica ou campo que resulta num valor entre 1 e o número de opções disponíveis.
Escolha: Expressão Variant que contém uma das possíveis opções.

Choose retorna um valor da lista de opções com base no valor de índice. Se índice for 1, Choose retorna a primeira opção da lista; se índice for 2, retorna a segunda opção e assim por diante.
Choose pode ser usado para pesquisar um valor numa lista de possibilidades. Por exemplo, se índice avalia para 3 e a opção-1 = "um", opção-2 = "dois" e opção-3 = "três", Choose retorna "três". Esta capacidade é particularmente útil se índice representar o valor num grupo de opções.
Se índice não for um número inteiro, ele será arredondado para o número inteiro mais próximo antes de ser avaliado.

Print Choose(2,"Apostilas","CD-ROM","Livros","Serviços Gráficos")
Valor Impresso: CD-ROM


Assim como os loops, que podem ser programados de diversas formas e proporcionam os mesmos resultados, os comandos de condição (if...else, select case, choose) funcionam da mesma forma, podendo ser muitas vezes relativos.

6) Você pode utilizar o objeto "Image" ao invés do "PictureBox", pois o primeiro é mas flexível. Insira um "Image" no Form, passe a propriedade "Stretch" para "True" e faça o teste. Além disso, quando você aumenta o Picture, a figura contida nele não acompanhará o aumento.

----------------------

Sobre o problema da fonte...

Porque você não faz um menu ou um Combo direto? Pelo que eu entendi, você quer programar a formatação de fontes, igual ao Bloco de Notas, não é? Então, coloque um menu denominado "Fontes", dentro dele, insira nomes de fontes que desejar, como Arial, Times New Roman, etc. Insira também uma caixa de texto. Feito isso, programe no "CLick" do "Arial" por exemplo, o seguinte:

 Text1.FontName = "Arial"


Dessa forma, a fonte que estiver sendo usada dentro do Text1, será transformada em fonte Arial.

Se não for exatamente isso que deseja fazer, poste novamente!

Sobre o problema da Imagem...

Insira um componente "Common Dialog" - "CommonDialog1", caso não esteja disponível, basta adicioná-lo através do "Components" na aba "Project", onde ele vem denominado se não me engano, como "Microsoft Common Dialog Control".
Após inserir, insira um botão "Command1" e uma imagem "Image1". Programando...

Private Sub Command1_Click()
CommonDialog1.Filter = "Imagem JPG|*.jpg|Imagem BMP|*.bmp|Imagem GIF|*.gif|Imagem TIF|*.tif"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
Image1.Picture = LoadPicture(CommonDialog1.FileName)
End If
End Sub


Dessa forma, haverá um filtro para que apareçam somente arquivos que contenham as extensões citadas (de figuras), e a figura selecionada aparecerá dentro do "Image1". Você pode repetir o procedimento, com a PictureBox, porém como eu já disse, o objeto "Image" é mais recomendado.

Espero ter ajudado.

[ ]'s
Linux User #394367
Asking Smart Questions

"Always remember that you are unique. Just like everyone else"
vini_bill
vini_bill Super Participante Registrado
592 Mensagens 0 Curtidas
#5 Por vini_bill
16/05/2005 - 18:50
Sobre o problema da fonte

Oi 1001! VALEU MESMO! Ainda perdura o problema da fonte. Sabe quando você muda a fonte por uma janela? Tanto faz ser no Wordpad, Bloco de notas ou word ( janela onde tem sublinhado, sobre escrito, tamanho da fonte, tipo - acessando do sistema e não uma predefinida , cor, negrito, itálico... etc ). Então.. é essa caixa de dialogo que eu estou querendo usar.

Entendeu? Indo no word ela fica em:Formatar/Fonte ( mas essa aqui é mais "overpower".
Indo no Wordpad: Formatar/fonte ( essa aqui!!!! )
indo no bloco de notas: Formatar/fonte ( olha lá ela de novo! )

Valeu por agora wink.png. MUITO OBRIGADO big_green.png.

... Vinicius Menezes ...
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal