Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MartinsV

Editor de Texto estilo Bloco de Notas

Recommended Posts

Fala pessoal, tranquilo??

 

É o seguinte, eu tava começando no VB e resolvi fazer um editor de textos estilo "bloco de notas". Quando acabei o layout, resolvi passar para a fase de abrir arquivos, salvar, salvar como... mas simplesmente não sei como fazer isso!!

 

Dei uma pesquisada aqui no fórum e até encontrei umas coisas, o problema é que eu sou muito leigo e não entendi a maioria delas ¬¬

 

Bom, pra começar, eu tenho um menustrip (com um "Arquivo - Novo, Abrir, Salvar, Salvar Como, Sair", "Exibir - barra de status" e "Ajuda - Tópicos de Ajuda, Sobre"), um RichTextBox e um status strip, que por enquanto não me é de muita utilidade.

 

Certo, agora o que eu gostaria de fazer era o básico de um editor de textos: o usuário escreve no RichTextBox e aperta Arquivo - Salvar Como (ou só "salvar"), o programa lê o que está escrito e salva como um arquivo .txt. É claro que eu também gostaria que ele abrisse (Arquivo - Abrir) o mesmo e outro arquivos. Eu dei uma olhada na toolbox e encontrei um "OpenFileDialog" e um "SaveFileDialog". Tentei fazer qualquer coisa com eles mas nada dava certo, e nem sei realmente se são eles que devo usar para meus objetivos...

 

Gostaria de saber então o que devo colocar, por exemplo, entre "Private Sub OpenToolStripMenuItem_Click (...)" e "End Sub", para abrir um arquivo e etc...

 

Bom, é isso, espero que alguém me dê uma luz!

 

Abraços!

 

PS: estou usando o VB 2008 Express Edition

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba, quanta coisa você quer, vamos começar do básico.

 

Primeiro de tudo, você preciso colocar em seu programa um CommomDialog.

 

Vamos lá, primeiro abrir:

 

No evento click do seu menu de abrir, faça o seguinte:

 

CODE

CommonDialog1.Filter = "Text Files (*.txt) |*.txt| All Files (*.*) |*.*|"

CommonDialog1.ShowOpen

'isso abrirá a tela para você selecionar seu arquivo, após selecionar, marque o nome do arquivo em algum lugar, em uma textbox por exemplo, como abaixo:

 

txtArquivo.Text = mdiInicio.CommonDialog1.FileName

 

'após vamos trabalhar com o arquivo:

 

Open (txtArquivo.Text) For Input As 1#

Do Until EOF(1)

Line Input #1, linha

 

txtTexto.text = txtTexto.text & linha & chr(13) & chr(10)

 

Loop

Close #1

 

'para que o esquema acima de certo, é preciso que tenha uma textbox (txyTexto) com multiline = true

 

Teste para ler, se funcionar me avise que vou pondo o resto que precisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Claudio Neto,

Brigadão pela resposta!

 

é, realmente é um bocado de coisas ;]

 

Mas eu já comecei com um problema: o Common Dialog, onde fica?? Na toolbar eu não achei..

 

Ah, e resolvi largar a preguiça e estudei um pouco de VB (comecei pelo 2005 q já tinha instalado) e já não sou "tão" leigo assim !! Hehe

 

Obigado pela resposta,

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, o que eu postei acima é código para o VB 6.

 

Então espero que consiga se entender ai, boa sorte

 

Ah, você precisa adicionar o CommomDialog, vá em Project -> Components e procura por Microsoft Commom Dialog (alguma coisa assim).

 

Boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, valeu pela resposta novamente Claudio!

 

Depois eu vo dar uma testada mas to sem tempo agora ;]

 

E só uma outra dúvida que eu tenho...

 

É o seguinte: eu tenho um textbox (readonly) e um timer. O textbox tem um valor inicial de 200 000, e eu quero que, a cada 1 segundo (1000 milisegundos) este valor aumente 100 (ou seja, depois de 1 segundo, o textbox vai ter o valor de 200 100)

 

Para isso, eu fiz:

 

Dim capital As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		capital = 200000
		TextBox1.Text = capital 
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
		TextBox1.Text = capital + 100
End Sub

O problema é que, depois que o programa roda, o textbox fica com 200 000, passa um segundo, ele fica com 200 100, e pára! Ele não continua a contar (eu queria que depois de 2 segundos, por exemplo, ficase 200 200, 3 segundos = 200 300, etc)

 

O que estou fazendo de errado??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, você passa o valor do "capital" no form_load, que é 200000.

 

E ele fica com esse valor para sempre, você não está alterando o valor dessa variável, sendo assim, capital (200000) + 100 sempre será igual a 200100.

 

Tente isso:

 

CODE

Dim capital As Integer

 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

capital = 200000

TextBox1.Text = capital

End Sub

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

capital = capital + 100

TextBox1.Text = capital

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, valeu Claudio, deu certinho !!

 

Logo eu testo a minha outra dúvida e posto aqui o resultado ;]

 

Abraços!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Visual Basic http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma.Net » Windows Applications

 

Movi para .Net por se tratar do Visual Basic 2008.

Tem um link interessante no Macorrati, acho que pode ajudar:http://www.macoratti.net/vbn_edit.htm

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu quintelab, pelo link, mas na verdade eu já consegui fazer!!

 

Quer dizer, eu fiz uns testes e consegui o que queria, agorinha msm

 

Na verdade, a lógica é tão simples quanto 1 + 1 = 2. O editor é bem simples, mas até que funciona legal (se apertar "salvar", por exemplo, num texto ainda não salvo, ele abre o SaveFileDialog, mas se ele já estiver salvo, ele apenas salva o arquivo com o mesmo nome antes dado)

 

Só continua com dois problemas: o editor só abre arquivos .txt feitos nele mesmo, dando o erro "File Format is not Valid" nos que não forem, e eu não sei como fazer o "novo", que fecharia o arquivo existente e abriria um em branco (existe algum código, tipo "Me.AlgumaCoisa", que "reinicie" o programa?)

 

Agradeço a ajuda Claudio e quintelab, e se alguém souber a solução dos erros acima, me dê um toque, por favor ;]

 

Abraços!

 

PS.: pra quem quiser o código que eu tenho até agora do editor:

 

Public Class Form1

	'Sair
	Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
		Me.Close()
	End Sub


	'Abrir
	Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click
		OpenFileDialog1.ShowDialog()
	End Sub

	Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
		RichTextBox1.LoadFile(OpenFileDialog1.FileName)
	End Sub


	'Novo
	Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click
		Me.Close()
	End Sub


	'Salvar
	Private Sub SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem.Click
		If SaveFileDialog1.FileName = "" Then
			SaveFileDialog1.ShowDialog()
		Else
			RichTextBox1.SaveFile(SaveFileDialog1.FileName)
		End If
	End Sub


	'Salvar Como
	Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveAsToolStripMenuItem.Click
		SaveFileDialog1.ShowDialog()
	End Sub

	Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
		RichTextBox1.SaveFile(SaveFileDialog1.FileName)
	End Sub

End Class
(É preciso ter um RichTextBox, um OpenFileDialog, um SaveFileDialog e um MenuStrip com os SubItens: New, Open, Save, SaveAs e Exit, dentro do Item "Arquivo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz uns testes aqui e deu certo, no botão Novo, coloque o seguinte código:

'Novo
	Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click
		If SaveFileDialog1.FileName = "" Then
			SaveFileDialog1.ShowDialog()
		Else
			RichTextBox1.SaveFile(SaveFileDialog1.FileName)
		End If
				   RichTextBox1.Clear()
	End Sub

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou cometer um flood aqui mas fiz mais alguma adaptações no seu código que acredito que seja útil, vou postar aqui:

Public Class Form1
	'Sair
	Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
		Me.Close()
	End Sub

	'Abrir
	Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click
		Dim ofd As New OpenFileDialog()
		ofd.InitialDirectory = IO.Directory.GetCurrentDirectory
		ofd.Filter = "Arqs. Texto (*.txt)|*.txt"
		ofd.ShowDialog()
	End Sub

	Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
		RichTextBox1.LoadFile(OpenFileDialog1.FileName)
	End Sub

	'Novo
	Private Sub NewToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click
		If SaveFileDialog1.FileName = "" Then
			SaveFileDialog1.ShowDialog()
		Else
			RichTextBox1.SaveFile(SaveFileDialog1.FileName)
		End If
		RichTextBox1.Clear()
	End Sub

	'Salvar
	Private Sub SaveToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToolStripMenuItem.Click
		If SaveFileDialog1.FileName = "" Then
			SaveFileDialog1.Filter = "Arqs. Texto (*.txt)|*.txt"
			SaveFileDialog1.ShowDialog()
		Else
			RichTextBox1.SaveFile(SaveFileDialog1.FileName)
		End If
	End Sub

	'Salvar Como
	Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveAsToolStripMenuItem.Click
		SaveFileDialog1.Filter = "Arqs. Texto (*.txt)|*.txt"
		SaveFileDialog1.ShowDialog()
	End Sub

	Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
		RichTextBox1.SaveFile(SaveFileDialog1.FileName)
	End Sub
End Class

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, estas propriedades (tipo o Filter e tals) eu fiz no Design do Form, mas é bom pra o pesoal aí que quiser uma ajuda pegar o código ;]

 

Valeu, Abraços!

 

Edit: eu testei o código do Novo, mas não deu certo não... é o seguinte: eu testei, criando um arquivo e salvando-o como "texto". Apertei o "novo", escrevi "teste" e apertei "salvar". Em vez de abrir o SaveDialog, ele salvou o arquivo "texto.txt". ou seja, ele não abriu um novo projeto, e sim mudou o texto do RichTextBox pra nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.