MartinsV 0 Denunciar post Postado Abril 18, 2008 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
Claudio Neto 3 Denunciar post Postado Abril 22, 2008 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
MartinsV 0 Denunciar post Postado Abril 22, 2008 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
Claudio Neto 3 Denunciar post Postado Abril 23, 2008 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
MartinsV 0 Denunciar post Postado Abril 23, 2008 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
Claudio Neto 3 Denunciar post Postado Abril 23, 2008 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
MartinsV 0 Denunciar post Postado Abril 23, 2008 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
quintelab 91 Denunciar post Postado Abril 25, 2008 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
MartinsV 0 Denunciar post Postado Abril 25, 2008 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
quintelab 91 Denunciar post Postado Abril 25, 2008 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
quintelab 91 Denunciar post Postado Abril 25, 2008 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
MartinsV 0 Denunciar post Postado Abril 25, 2008 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
quintelab 91 Denunciar post Postado Abril 25, 2008 O que o novo faz é salvar o texto, caso ja tenha sido salvo antes ele salva por cima, se não tinha sido salvo nenhuma vez ele abre o save dialog. E depois limpa o RichTextBox. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites