Word Processor!

sabato 04 agosto 2007 - 09.14

lucag. Profilo | Newbie

Ciao a tutti, sto crendo in VB Express 2005 un word processor, vorrei qualche consiglio o un tutorial per crearlo al meglio. Perchè, per ora, ho, la casella di testo, il pulsante salva, il pulsante stampa, e un sistema di controllo grammaticale. Ma vorrei aggiungere qualcosa sulla formattazione.....come la dimensione del carattere, il font (Times New Roman, ....), grassetto-corsivo-sottolineato, e , se proprio si riesce, anche se posizionare il testo centrato, o allineato a destra o sinistra.

Grazie mille per l'aiuto!

SSUPERPIPPO Profilo | Guru

Ciao,

scusa se non ti ho risposto prima ma sono in ferie e passo poco tempo al PC.

Prima di tutto devi utilizzare una RichTextBox e non una TextBox in quanto riesci a gestire la formattazione differenziata delle selezioni.

Ti rimando ad alcuni thread in cui trovi indicazioni su come procedere:

1. Modifica font per il testo selezionato

http://www.dotnethell.it/forum/messages.aspx?ThreadID=17068

2. Stampare il contenuto della RichTextBox

http://www.dotnethell.it/forum/messages.aspx?ThreadID=17068

3. Salvare il contenuto della RichTextBox

http://www.dotnethell.it/forum/messages.aspx?ThreadID=16990


Dai un'occhiata, se hai bisogno di chiarimenti sono a disposizione.

Ciao

Alessandro

lucag. Profilo | Newbie


Grazie per il tuo aiuto, era proprio quello che mi serviva!

Approfitto della tua gentilezza, per chiederti ancora alcune cose:

1) come realizzo una finestra di dialogo che si apra quando si clicca sul pulsante di chiusura del programma ( X ), chiedendo se si conferma la chiusura con un pulsante Si (confermo) o No (non confermo)???

2) come creo un pulsante UnDo per tornare alle modifiche precedenti, e un pulsante Select All???

3) come creo 3 pulsanti per modificare il grassetto, corsivo e sottolineato???

4)Infine, come faccio per avere una finestrina (qualcosa tipo l'AboutBox), che all'avvio del programma si apra, rimanga per....2 secondi, e poi sparisca, lasciando solo il mio word processor???

Mi scuso per le tante (e magari troppe!) domande che ti ho fatto.....

Grazie grazie Grazie|

luke82 Profilo | Newbie

1)Nella FormClosing inserisci:
dim choice as dialogresult = messagebox.Show("chiudere l'applicazione?","Conferma operazione",MessageBoxButtons.YesNo)
if choice = Windows.Forms.DialogResult.No Then
e.cancel = true
Endif

2)La RitchTextBox ha la funzione Undo e SelectAll per fare quello che chiedi.

3) Nei link proposti non c'è? adesso a memoria non ricordo come fare, ma basta una semplice ricerca.

4)SplashScreen si chiama. Devi creare una nuova Form alla quale devi togliere il bordo ed inserire un Timer che dopo n secondi ti fa me.close
Se vuoi caricare prima lo splashScreen e poi l'applicazione devi impostare la nuova Form come Oggetto di avvio della tua applicazione, altrimenti ti richiami lo SplashScrren direttamente nella Load del form principale della tua applicazione.
Ciao

lucag. Profilo | Newbie

Ciao. Grazie anche per queste ultime informazioni.

Ora, mentre compilo il codice, ho trovato un problema nel sistema di salvataggio.

Ho creato la mia SaveFileDialog, ma non sono riuscito ad abbinare il codice per il salvataggio in formato .doc, come faccio?

Ecco il codice attuale che ho, per piacere, indicatemi cosa aggiungere....grazie!



Public Class Form1

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



End Sub
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged

End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SaveFileDialog1.ShowDialog()
End Sub

Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs)

End Sub

End Class





Mentre, scusate l'ignoranza, dove si trova l'impostazione dell'oggetto d'avvio??? Grazie

luka82 Profilo | Junior Member

il file verrà salvato nel formato RTF, che puoi anche aprire con Word...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SaveFileDialog1.ShowDialog()
richTextBox.SaveFile(savefiledialog1.filename)
End Sub

Mentre, scusate l'ignoranza, dove si trova l'impostazione dell'oggetto d'avvio??? Grazie
>
>Mentre, scusate l'ignoranza, dove si trova l'impostazione dell'oggetto
>d'avvio??? Grazie

Dal menu Progetto->Opzioni del progetto(è l'ultima voce del menu) e nella finestra che si apre modifica il nome dell'oggetto di avvio.
Ciao

lucag. Profilo | Newbie

Grazie. Ottime soluzioni!

Per quanto riguarda la finestra all'apertura ho impostato come oggetto d'apertura form1, poi, ho messo in Load del form1, SplashScreen1.Show, solo che appare per........meno di un secondo...io vorrei che stesse lì, 2-3 secondi......come faccio???

Poi....tutto il resto va molto molto bene....

Vorrei fare in modo che, il mio programmino potesse aprire file di testo, rtf e (forse) doc (se non si può non c'è problema...), ho già creato il bottone, e la OpenFileDialog1, che codice aggiungo?

Per il select Alle Undo, cosa faccio?

E infine, ho messo il font dialog e tutto, ma, quando apro il mio programmino, e scrivo qualcosa, non faccio a tempo a scrivere una parola, che continua ad aprirmi il font dialog, perchè?

Ti metto qui sotto il codice di tutto....

Grazie mille!!!!!!



Dimenticavo, con la funzione salva, quando invece che far clic su salva, si fa click su annulla, salta tutto......

________________________________________________________________________________________


Public Class Form1

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Dim choice As DialogResult = MessageBox.Show("chiudere l'applicazione?", "Conferma operazione", MessageBoxButtons.YesNo)
If choice = Windows.Forms.DialogResult.No Then
e.Cancel = True
End If

End Sub

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

End Sub



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SaveFileDialog1.ShowDialog()
RichTextBox1.SaveFile(SaveFileDialog1.FileName)

End Sub


Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
FontDialog1.ShowDialog()
End Sub

Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
' Apre il fontdialog e in caso di conferma del font selezionato modifica il font relativo al testo selezioanto nella richtextbox

If Me.FontDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
Me.RichTextBox1.SelectionFont = Me.FontDialog1.Font
End If
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

End Sub

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

End Sub
End Class


________________________________________________________________________________


Graziiieee

luka82 Profilo | Junior Member

>>Per quanto riguarda la finestra all'apertura ho impostato come oggetto d'apertura form1, poi, ho messo in Load del form1, >>SplashScreen1.Show, solo che appare per........meno di un secondo...io vorrei che stesse lì, 2-3 secondi......come faccio???

Allora, due strade:
Nel Form_Load del Form principale fai:
SplashScreen.ShowDialog

Seconda Strada:
Metti SplashScreen come oggetto di avvio, e trascorsi i 3 secondi fai aprire la form principale e chiudi la SplaScreen.
In entrambe i casi devi inserire un Timer nello SplashScreen impstandolo a 3000(ossia 3 secondi)

Per il resto...fai pure una piccola ricerca...
Ciao

lucag. Profilo | Newbie

Grazie. Ho risolto la maggior parte dei problemi, con varie ricerche. Sono riuscito a inserire un po' tutto. Ora, le uniche 2 cose che mancano sono:

1) per la splashscreen, ho avuto qualche difficoltà, io vorrei che si aprisse SOLO splashscreen1 per 3 secondi, poi, dopo i 3 secondi si chiuda e si apra SOLO il form1. Vorrei evitare che ci fossero le 2 finestre assieme.....mi potresti fornire i passi dettagliatamente o il codice? questa fase non l'ho trovata facendo le ricerche....

2) Invece, altra cosa, ho creato vari bottoni, vorrei, che quando si passa sopra, senza clickare con il mouse, appaia da qualche parte una scritta da me scelta. Come faccio?

Grazie mille!!!!
Grazie!

SSUPERPIPPO Profilo | Guru

>Grazie. Ho risolto la maggior parte dei problemi, con varie ricerche. Sono riuscito a inserire un po' tutto. Ora, le uniche 2 cose che >mancano sono:

Mi permetto di intromettermi...

>1) per la splashscreen, ho avuto qualche difficoltà, io vorrei che si aprisse SOLO splashscreen1 per 3 secondi, poi, dopo i 3 secondi >si chiuda e si apra SOLO il form1. Vorrei evitare che ci fossero le 2 finestre assieme.....mi potresti fornire i passi dettagliatamente o >il codice? questa fase non l'ho trovata facendo le ricerche....

Io farei così:

1. Crea un modulo dove inserisci una sub Main come questa:

Sub main()

Dim FrmSplash As New Splash
FrmSplash.ShowDialog() <== Visualizza la form splash e rimane in attesa che quest'ultima si chiuda

Dim FrmProva As New Prova
FrmProva.ShowDialog() <== Alla chiusura della form splash attiva la form principale

End Sub

2. Nella form splash basta che aggiungi un controllo timer e all'evento Load aggiungi il seguente codice:

Me.Timer1.Start()

3. All'evento tick del controllo timer aggiungi il seguente codice:

Dim IntSecondi as Integer

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

IntSecondi += 1

If IntSecondi = 3 Then
' Passati i tre secondi chiude la splash
Me.Close()
End If

End Sub

ATTENZIONE: La variabile IntSecondi è dichiarata a livello di form!

Si dà per inteso che tu abbia impostato la proprietà interval del timer a 1000 (1 secondo)


>2) Invece, altra cosa, ho creato vari bottoni, vorrei, che quando si passa sopra, senza clickare con il mouse, appaia da qualche >parte una scritta da me scelta. Come faccio?

Per questo c'è un magnifico controllo che si chiama ToolTip e lo trovi tra i controlli standard di VB.NET
E' molto semplice da usare, se hai dubbi sono a disposizione.

>Grazie mille!!!!
>Grazie!

Di nulla, ciao

Alessandro

lucag. Profilo | Newbie

Ciao, grazie mille per esserti "intromesso"!
Allora, con il sistema della form Splash, non ha funzionato.........non conviene forse, che crei una semplice splashscreen, le metta un timer a 3000, e poi le metta un codice (che io non so!), che fa chiudere splashscreen1 e che avvia form1?

Mentre, per tooltip, è esattamente ciò che mi serviva.. ma una volta che l'ho aggiunto, che codice inserisco per indicargli a che oggetto riferirsi e il testo da visualizzare?


Qual'è il miglior modo per inserire immagini in una richtext box???

Infine, qual'è il modo migliore per stampare il testo, cn formattazione, e eventualmente immagini??? Ho visto altri theread dedicati a questo, ma non ho capito molto.......

Grazie mille

lucag. Profilo | Newbie

Sono riuscito a risolvere con la stampa, cercando da un tuo altro post.


Invece per la SplashScreen e il ToolTipè non sono riuscito.

Qual'è il miglior modo per inserire immagini in una richtext box???


Grazie!

SSUPERPIPPO Profilo | Guru

>Sono riuscito a risolvere con la stampa, cercando da un tuo altro post.

Bene!

>Invece per la SplashScreen e il ToolTipè non sono riuscito.

Per il ToolTip è davvero semplice da ulitizzare. Trascini il controllo ToolTip nel tuo Form, poi vai nelle proprietà del controllo sul quale vuoi far apparire il Tip e imposti la porprietà ToolTip con il testo che vuoi visualizzare.

Per la SplashScreen, il metodo che ti ho indicato prima l'ho accuratamente testato e collaudato e funziona bene, fammi sapere dove ti si presenta il problema così vedo di aiutarti.

>Qual'è il miglior modo per inserire immagini in una richtext box???

Ti rimando a questo link dove trovi un esempio su come inserire un'immagine in una RichTextBox
http://blog.shareoffice.it/ivangentile/archive/2006/01/21/3721.aspx

>Grazie!

Di nulla, ciao

Alessandro

lucag. Profilo | Newbie

Grazie mille, allora:
Per tooltip e splashscreen, ho sistemato tutto. Grazie!

Ora, mi sono accorto di un errore: il mio sistema di apertura file rtf in richtextbox1, manifesta dei problemi: se dalla finestra di dialogo seleziono un file rtf, e clicco su apri, tutto ok. L'errore si manifesta se clicco su "Annulla". Altra cosa, che vorrei sistemare, è che quando dalla fienstra di dialogo devi inserire il nome del file da aprire, lui, di "default", scrive "Openfiledialog1", che quindi ogni volta devo cancellare per digitare il nome. Ecco il codice:


____


Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click

If RichTextBoxPrintCtrl1.Modified Then

Dim answer As Integer
answer = MessageBox.Show("Il documento non è stato salvato, continuare senza salvarlo?", "Documento non salvato", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If answer = Windows.Forms.DialogResult.No Then
Exit Sub

Else

OpenFile()

End If

Else

OpenFile()

End If

End Sub



Private Sub OpenFile()

OpenFileDialog1.Title = "Apri documento..."
OpenFileDialog1.DefaultExt = "rtf"
OpenFileDialog1.Filter = "Rich Text Files|*.rtf|Text Files|*.txt|HTML Files|*.htm|All Files|*.*"
OpenFileDialog1.FilterIndex = 1
OpenFileDialog1.ShowDialog()

If OpenFileDialog1.FileName = "" Then Exit Sub

Dim strExt As String
strExt = System.IO.Path.GetExtension(OpenFileDialog1.FileName)
strExt = strExt.ToUpper()

Select Case strExt
Case ".RTF"
RichTextBoxPrintCtrl1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.RichText)
Case Else
Dim txtReader As System.IO.StreamReader
txtReader = New System.IO.StreamReader(OpenFileDialog1.FileName)
RichTextBoxPrintCtrl1.Text = txtReader.ReadToEnd
txtReader.Close()
txtReader = Nothing
RichTextBoxPrintCtrl1.SelectionStart = 0
RichTextBoxPrintCtrl1.SelectionLength = 0
End Select

currentFile = OpenFileDialog1.FileName
RichTextBoxPrintCtrl1.Modified = False
Me.Text = "Editor - " & currentFile.ToString()

End Sub

_______________


Grazie!!!

SSUPERPIPPO Profilo | Guru


>Grazie mille, allora:
>Per tooltip e splashscreen, ho sistemato tutto. Grazie!

Bene. Una cosa che ho scoperto da poco. Se usi VB.NET 2005, nelle proprietà del progetto, si può indicare una form come 'schermata iniziale'. Provala.

>Ora, mi sono accorto di un errore: il mio sistema di apertura file rtf in richtextbox1, manifesta dei problemi: se dalla finestra di >dialogo seleziono un file rtf, e clicco su apri, tutto ok. L'errore si manifesta se clicco su "Annulla". Altra cosa, che vorrei sistemare, è >che quando dalla fienstra di dialogo devi inserire il nome del file da aprire, lui, di "default", scrive "Openfiledialog1", che quindi ogni >volta devo cancellare per digitare il nome. Ecco il codice:

Me.OpenFileDialog1.FileName = "" <== Cancella il nome file predefinito

Dim Result As DialogResult = Me.OpenFileDialog1.ShowDialog() <== Memorizza il risultato della FormDialog

If Result = Windows.Forms.DialogResult.OK Then
'...
' Apri il file
'...
ElseIf Result = Windows.Forms.DialogResult.Cancel Then
'...
' Annulla l'operazione
'...
End If

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

lucag. Profilo | Newbie

Grazie. Ma quindi come deve essere il codice corretto?
Grazie!

SSUPERPIPPO Profilo | Guru

Modifico il tuo codice:

Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click

If RichTextBoxPrintCtrl1.Modified Then

Dim answer As Integer
answer = MessageBox.Show("Il documento non è stato salvato, continuare senza salvarlo?", "Documento non salvato", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If answer = Windows.Forms.DialogResult.No Then
Exit Sub

Else

OpenFile()

End If

Else

OpenFile()

End If

End Sub



Private Sub OpenFile()

OpenFileDialog1.Title = "Apri documento..."
OpenFileDialog1.DefaultExt = "rtf"
OpenFileDialog1.Filter = "Rich Text Files|*.rtf|Text Files|*.txt|HTML Files|*.htm|All Files|*.*"
OpenFileDialog1.FilterIndex = 1

******************** RIGHE MODIFICATE***********************

OpenFileDialog1.Filename=""

Dim Result As DialogResult = Me.OpenFileDialog1.ShowDialog() <== Memorizza il risultato della FormDialog

If Result = Windows.Forms.DialogResult.OK Then
If Me.OpenFileDialog1.FileName="" then Exit sub
ElseIf Result = Windows.Forms.DialogResult.Cancel Then
Exit sub
End If

***********************************************************

Dim strExt As String
strExt = System.IO.Path.GetExtension(OpenFileDialog1.FileName)
strExt = strExt.ToUpper()

Select Case strExt
Case ".RTF"
RichTextBoxPrintCtrl1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.RichText)
Case Else
Dim txtReader As System.IO.StreamReader
txtReader = New System.IO.StreamReader(OpenFileDialog1.FileName)
RichTextBoxPrintCtrl1.Text = txtReader.ReadToEnd
txtReader.Close()
txtReader = Nothing
RichTextBoxPrintCtrl1.SelectionStart = 0
RichTextBoxPrintCtrl1.SelectionLength = 0
End Select

currentFile = OpenFileDialog1.FileName
RichTextBoxPrintCtrl1.Modified = False
Me.Text = "Editor - " & currentFile.ToString()

End Sub

Il resto dovrebbe andar bene. Prova e fammi sapere.
Ciao

Alessandro


http://blogs.dotnethell.it/alebadalin

lucag. Profilo | Newbie

Allora: ho provato il tuo codice, ma mi da degli errori...ma forse ho sbagliato io le correzioni....Potresti, trasformarmi il mio codice originale, in quello corretto, così posso direttamente sostituirlo?
Grazie!

COdice Originale--------------------------------------








Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button17.Click

If RichTextBoxPrintCtrl1.Modified Then

Dim answer As Integer
answer = MessageBox.Show("Il documento non è stato salvato, continuare senza salvarlo?", "Documento non salvato", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

If answer = Windows.Forms.DialogResult.No Then
Exit Sub

Else

OpenFile()

End If

Else

OpenFile()

End If

End Sub



Private Sub OpenFile()

OpenFileDialog1.Title = "Apri documento..."
OpenFileDialog1.DefaultExt = "rtf"
OpenFileDialog1.Filter = "Rich Text Files|*.rtf|Text Files|*.txt|HTML Files|*.htm|All Files|*.*"
OpenFileDialog1.FilterIndex = 1
OpenFileDialog1.ShowDialog()

If OpenFileDialog1.FileName = "" Then Exit Sub


Dim strExt As String
strExt = System.IO.Path.GetExtension(OpenFileDialog1.FileName)
strExt = strExt.ToUpper()

Select Case strExt
Case ".RTF"
RichTextBoxPrintCtrl1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.RichText)
Case Else
Dim txtReader As System.IO.StreamReader
txtReader = New System.IO.StreamReader(OpenFileDialog1.FileName)
RichTextBoxPrintCtrl1.Text = txtReader.ReadToEnd
txtReader.Close()
txtReader = Nothing
RichTextBoxPrintCtrl1.SelectionStart = 0
RichTextBoxPrintCtrl1.SelectionLength = 0
End Select

currentFile = OpenFileDialog1.FileName
RichTextBoxPrintCtrl1.Modified = False
Me.Text = "Editor - " & currentFile.ToString()

End Sub





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




Grazie!

SSUPERPIPPO Profilo | Guru

Dove ti dà errore?


http://blogs.dotnethell.it/alebadalin

lucag. Profilo | Newbie

Secondo me gli errori sono dovuti a degli errori nel inserire il codice....Puoi ripetermi il codice corretto, da SOSTITUIRE a quello attuale?
Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5