Har gjort en liten och enkel paint klon i Vb 6.0 så nu vill jag göra så att när man trycker på knappen spara så kommer det upp en ny form där man sparar. Denna form vill jag ska se ut som den som kommer upp när man sparar saker i tex paint. Det enklaste är att använda en sk. Common Dialog. Tackar den funkade förutom en liten sak. När jag trycker save så sparar den inte. Denna kod får bara fram filnamnet som användaren vill spara filen som. Sparandet måste du sköta själv. Måste veta lite mer för att hjälpa dig med den saken. Okej då vet jag tack för hjälpen. Jag har använt mig av en picturebox där allt målande sker. alltså måste jag få så att man sparar själva pictureboxen som en bmp/jpeg fil. Hejsan! ok men vart ska jag skriva in den koden då? borde la vara nåt i stil med: Hej =) Tackar men då jag inte kan nåt alls nästans så... hur skriver man så att den avbryter på avbryt då? Om användaren inte trycker på Save utan en annan knapp för att stänga fildialogen uppstår ett sk. CancelErrorlitet problem
Hur kan jag göra det?Sv: litet problem
Gå till Project->Components.
Checka för Microsoft Common Dialog i listan, tryck OK.
I kontrollpaletten ser du nu en ny ikon. Rita ut kontrollen på formen.
Skriv denna kod där du vill att spara-koden ska vara:
<code>
Dim Filnamn As String
With CommonDialog1
.Filter="Bildfiler (*.bmp)|*.bmp" 'Byt ut bmp till ditt filformat.
.DialogTitle="Spara bildfil." ' Inte riktigt säker på om det ska vara DialogTitle eller bara Title
.ShowSave
Filnamn=.Filename
End With
'Variabeln Filnamn innehåller nu namnet på den filen användaren vill spara som.
Debug.Print Filnamn ' Kolla så det fungerar
</code>
Hoppas det hjälpte dig!
/Jörgen
Sv: litet problem
En sak till skulle du kunna förklara lite närmare med koden vad allt gör så att jag faktiskt lär mig nåt?Sv: litet problem
Common Dialog är en kontroll som innehåller en massa vanliga fönster - som namnet antyder.
<code>Dim Filnamn As String</code>
Deklarerar Filnamn som en sträng.
<code>With CommonDialog1</code>
Använder CommonDialog1 som default. Skriver man .nånting används härmed CommonDialog1 som objekt före punkten
<code> .Filter="Bildfiler (*.bmp)|*.bmp" 'Byt ut bmp till ditt filformat.</code>
Spara-fönstrets filter. I den här koden filtrerar jag så att bara BMP-filer syns. För att göra så att användaren också kan välja att se "Alla filer(*.*)" ändrar jag raden till .Filter="Bildfiler (*.bmp)|*.bmp|Alla filer (*.*)|*.*"
<code> .DialogTitle="Spara bildfil." ' Inte riktigt säker på om det ska vara DialogTitle eller bara Title</code>
Fönstrets titel
<code> .ShowSave </code>
Visar spara-fönstret. Andra alternativ är ShowOpen,ShowPrinter,ShowFont osv. Testa lite olika. Programmet kommer inte att gå vidare till nästa rad förrän användaren stängt fönstret genom att trycka spara eller annan knapp. Trycker användaren Cancel uppstår ett fel. Det måste man fånga. Men det är en annan sak, kan vi ta lite senare.
<code> Filnamn=.Filename </code>
Sparar det valda filnamnet in i variabeln Filnamn.
<code>End With </code>
Avslutar With-blocket. Default-objektet är inte längre CommonDialog1
<code>'Variabeln Filnamn innehåller nu namnet på den filen användaren vill spara som.
Debug.Print Filnamn ' Kolla så det fungerar</code>
Helt onödig kod. Det enda den gör är att skriva det valda filnamnet till immidiate-fönstret. Det fungerar fint utan raden
/JörgenSv: litet problem
Sv: litet problem
Använd den inbyggda funktionen SavePicture(DinPictureBox.picture,"namn.bmp") för att spara till bmp-format.
mvh BurreSv: litet problem
Showsave.Click = savePicture(PictureBox1.picture), "rutan där man skrev in namnet.text") Sv: litet problem
Detta kanske hjälper dig lite...
<code>
Private sub Showsave_click()
Dim Filnamn As String
With CommonDialog1
.Filter="Bildfiler (*.bmp)|*.bmp"
.DialogTitle="Spara bildfil."
.ShowSave
Filnamn=.Filename
End With
SavePicture(PictureBox1.Picture,FilNamn)
End sub
</code>
Men denna kod är inte komplett....du måste även lägga till en hanterar så att användaren kan trycka på "Avbryt/Cancel"
för denna kod gör att bilden sparas oavsätt om du trycker Spara eller på AvbrytSv: litet problem
Typ:
Private sub Showsave_click()
Dim Filnamn As String
With CommonDialog1
.Filter="Bildfiler (*.bmp)|*.bmp"
.DialogTitle="Spara bildfil."
.ShowSave
Filnamn=.Filename
End With
If Save.Clicked Then
SavePicture(PictureBox1.Picture,FilNamn)
Else
End
End If
End sub
?Sv: litet problem
<code>
Private sub Showsave_click()
Dim Filnamn As String
On Error Goto SaveCancelErr ' Felhanteraren. Ifall något blir fel gå till SaveCancelErr-etiketten
With CommonDialog1
.Filter="Bildfiler (*.bmp)|*.bmp"
.DialogTitle="Spara bildfil."
.ShowSave
.CancelError=True ' Är inte säker på om namnet är rätt. På detta sätt säger jag att jag vill att ett fel ska uppstå ifall användaren avbryter
Filnamn=.Filename
End With
SavePicture(PictureBox1.Picture,FilNamn)
Exit Sub ' Avsluta utan att gå in i felhanteraren
SaveCancelErr:
Exit Sub ' Felhanterarkod
End sub
</code>
Denna kod är egentligen också inkomplett eftersom man måste kolla felnummer, så man vet att det är det felet och inget annat i koden som har hänt.
Det kanske nån annan kan hjälpa till med. Kan inte kolla på den här datorn.
/Jörgen