DevN Skrevet 8. april 2004 Del Skrevet 8. april 2004 Holder på med en større avansert notisblokk, er kun ferdig med utseende på hovedformen og litt små enkle funksjoner. Men har allerede støtt på et problem med Open via CommonDialog. F.eks. En fil er åpnet, brukeren velger så "Open...", men i stedet for å åpne filen, trykker bruker "Cancel". Filen som ER åpnet da blir "refresha", så all tekst som er lagt til etter sist lagring forsvinner. I en ferdig kode i VB6 skjer det samme, den koden ser slik ut: Dim sFile As String If ActiveForm Is Nothing Then LoadNewDoc With dlgCommonDialog .DialogTitle = "Open" .CancelError = False 'ToDo: set the flags and attributes of the common dialog control .Filter = "All Files (*.*)|*.*" .ShowOpen If Len(.FileName) = 0 Then Exit Sub End If sFile = .FileName End With ActiveForm.rtfText.LoadFile sFile ActiveForm.Caption = sFile Min kode ser slik ut: With CommonDialog1 .DialogTitle = "Open File..." .CancelError = False .InitDir = CommonDialog2.InitDir .Filter = "NA1 Files (*.na1)|*.na1|Textfiles (*.txt)|*.txt|All Files (*.*)|*.*" .ShowOpen End With Open CommonDialog1.FileName For Input As #1 note.Text = Input$(LOF(1), #1) Close #1 Løsning? Lenke til kommentar
aadnk Skrevet 8. april 2004 Del Skrevet 8. april 2004 Du bør håndtere feilmeldinger som CommonDialog returnerer. For å gjøre dette må CancelError være True, og du må ha lagt inn en On Error GoTo ... syntaks: On Error GoTo Feil: With CommonDialog1 .DialogTitle = "Open File..." .CancelError = True .InitDir = App.Path .Filter = "NA1 Files (*.na1)|*.na1|Textfiles (*.txt)|*.txt|All Files (*.*)|*.*" .ShowOpen End With Open CommonDialog1.FileName For Input As #1 note.Text = Input$(LOF(1), #1) Close #1 Exit Sub Feil: If Err.Number = 32755 Then Exit Sub ' Ikke nødvendig å fortelle brukeren at Cancel ble valgt MsgBox Err.Number & ", " & Err.Description, vbCritical, "Error" Lenke til kommentar
DevN Skrevet 8. april 2004 Forfatter Del Skrevet 8. april 2004 Prøvde å håndtere de, men ikke en spesifikk, funket uansett nå. Og faktisk, den koden jeg sa jeg brukte var ikke helt riktig, tror jeg overskrev den riktige koden, når jeg prøvde meg litt fram. Men er ikke noe forskjell på de kodene uansett. Lenke til kommentar
DevN Skrevet 8. april 2004 Forfatter Del Skrevet 8. april 2004 Er det koden sin feil at jeg ikke kan åpne filer som ikke er av tekst? Altså denne koden: Open CommonDialog1.FileName For Input As #1 note.Text = Input$(LOF(1), #1) Close #1 Noen annen kode jeg kan bruke i så fall? Programmet skal fungere på lik linje som notisblokk, altså kunne åpne en hvilken som helst fil! Kan eventuelt bruke en RTF-boks, men når noen limer inn tekst fra et annet sted, så blir teksten med en annen font, farge, og størrelse. Det sa meg noe, jeg skulle hatt sånn at bestemte koder kan få en bestemt farge, og sånt. Er det mulig gjøre det med en textbox, eller må jeg bruke RTF? Hvis jeg må bruke RTF, kan jeg deaktivere det jeg beskrev noen linjer opp? Lenke til kommentar
aadnk Skrevet 8. april 2004 Del Skrevet 8. april 2004 TextBox'er antar uheldigvis at all tekst avsluttes med en null terminator, som gir den irriterende bivirkningen at tekst forsvinnes i åpning av kompliserte filer som EXE. Løsningen er riktig å bruke RichTextboxer som ikke har denne begrennsningen. Disse har også en innebygd fil åpningsprosedyre som enkelt kan kalles med bare en linje kode: RichTextBox1.LoadFile "C:\Test.txt" Lenke til kommentar
DevN Skrevet 8. april 2004 Forfatter Del Skrevet 8. april 2004 TextBox'er antar uheldigvis at all tekst avsluttes med en null terminator, som gir den irriterende bivirkningen at tekst forsvinnes i åpning av kompliserte filer som EXE. Løsningen er riktig å bruke RichTextboxer som ikke har denne begrennsningen. Disse har også en innebygd fil åpningsprosedyre som enkelt kan kalles med bare en linje kode: RichTextBox1.LoadFile "C:\Test.txt" Koden til RTF kan jeg, liker RTF best, men som jeg sa i den forrige posten: Limes noe inn som er av annen skrifttype e.l. så skal det bli om til den vanlige typen. F.eks. bruker jeg RTF med Verdana, og noe i Times New Roman limes inn, så skal det automatisk bli om til Verdana. Men i programmet skal det være mulig å deaktivere/aktivere denne funksjonen. Dersom funksjonen er deaktivert, skal det uansett være mulig å gi SelText en spesifikk farge. Jeg har også ferdige maler med koder, f.eks. "Sett inn" - "HTML", en begynnelse på html koden, denne teksten skal få en bestemt farge da. Har du noen løsning på dette? Lenke til kommentar
aadnk Skrevet 9. april 2004 Del Skrevet 9. april 2004 Vet bare om en løsning til det problemet, og det er ganske enkelt å omgjøre teksten i utklippstavlen til normal ett par ganger i sekundet. Legg inn en Timer, og sett Interval til 10 (eller 100). Legg så inn denne koden: Dim bChangeType As Boolean Private Sub Timer1_Timer() Dim Txt As String If bChangeType Then Txt = Clipboard.GetText Clipboard.Clear Clipboard.SetText Txt End If End Sub Når bChangeType er TRUE vil all tekst som limes inn i RichTextBox'en ha samme oppsett som hvor den limes inn. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå