Jag håller på med ett program som har ett gäng bilder i sig.
Så nu undrar jag hur jag gör för att kunna lägga in alla de bilder i en utomstående fil som man sedan länkar till...
Det är lite oklart i vilken betydelse du använder ordet "länka". Om du menar "länka" som i "kompilera/länka" så kan du lägga bilderna i en resursfil som du skapar i tex MSVC. Sen kan du lägga till resursfilen i ditt VB-projekt och ladda bilderna med LoadResPicture.
En annan (och enklare) variant är att låta de enskilda bildfilerna ligga kvar på disk och ladda dem med LoadPicture vid behov.
I min form_load ser det bl.a. ut så här:
En for-loop:
Set cmdNum(i).Picture = LoadPicture("d:\skola\vb\calc\" & (i + 1) & ".gif")
Så några bilder laddas in i början av programmet.
Bara för att jag innan loopen laddar in alla bilder
Load cmdNum(i)
kan jag inte ge varje bild en bild utan att använda "Set cmdNum(i).Picture".
Så problemet är att den letar efter bilder i katalogen "d:\skola\vb\calc\".
Jag kan ju ändra så den letar i samma mapp men det blir ändå inte som jag vill att det ska bli.
Jag tänkte då att man kanske kunde ha en fil där alla de bilder man vill ladda in kunde ligga i så man slapp problemet med sökväg och att man måste kopiera alla bilder man vill ha överallt...
Så det vore mkt enklare med bara exefilen och en fil till...
Går det att ordna det på nåt sätt eller måste jag strunta i inladdningen av bilderna och ge varje bild en jpg/bitmap så de finns med i programmet?
Som jag förstår det så vill du ha en textfilsom du lagrar sökvägarna till filerna eller.
i så fall e det ganska enkelt om du ör nybörjare.
öppna textfilen med sökvägarna i en listbox
som är visible=False
sen e det bara loopa igenom listboxen och öppna dom filer som är inskrivna i listboxen.
lägg denna kod i en module
Function LoadFile(FileName As String)
Dim FileNum As String
Dim Data As String
FileNum = FreeFile
If FileName = "" Then
Exit Function
Open FileName For Binary Access Read As FileNum
Data = String(FileLen(FileName), Chr(0))
Get FileNum, , Data
Close FileNum
LoadFile = Data
End Function
Function SaveFile(FileName As String, Data As String)
Dim FileNumber As Integer
FileNum = FreeFile
Open FileName For Output As FileNumber
Print #FileNumber, Data
Close #FileNumber
End Function
Function LoadList(lst As ListBox, FileName As String)
Dim Data As String
Dim TmpArray() As String
Data = LoadFile(FileName)
TmpArray() = Split(Data, Chr(123))
For i = 0 To UBound(TmpArray) - 1
lst.AddItem TmpArray(i)
Next i
End Function
Function SaveList(lst As ListBox, FileName As String)
Dim Data As String
For i = 0 To lst.ListCount - 1
Data = Data & lst.List(i) & Chr(123)
Next i
SaveFile FileName, Data
End Function
Denna kod är för att öppna en textfil till en listbox
Tack för ditt utförliga svar PsyDonia, men det var inte riktigt så jag menade..tyvärr..
Jag tänkte bara om man kunde lagra alla bildfiler i någon datafil, typ .cab eller så...och sen plocka ut bilderna från den enda filen istället för alla bilder ska följa med...förstår du/ni?
Du kan lägga filerna i en Resource-fil som ligger inbyggd i din exe-fil sedan utan en massa filer.
Starta först Resource Editorn (Add-Ins >> Add-In Manager... >> Dubbelklicka på VB 6 Resource Editor >> OK). Nu hamnar det en ny ikon längst till höger på verktygsfältet som ser ut ungefär som regedit's ikon tillsammans med en hand. Klicka på den.
För att ladda in filerna i resource-filen, klicka på Add Bitmap (ser ut som en bild av ett litet landskap), välj bild (OBS: Måste vara en BMP), voilla.
För att få in bilderna i ditt program, kör
Set cmdNum(i).Picture = LoadResPicture(<Bildens id i Resource Editorn>, vbResBitmap)
Det har jag också varit med om, att Resource Editorn inte visas. För att fixa det, välj File >> New Project >> VB Application Wizard >> Next >> Next >> Next >> Next >> Yes >> Finish. Nu kommer den alltid finnas med i listan fast under namnet "VB6.ResEdit" eller liknande.
Sedan kan du ju säga åt VB att starta Resource Editorn varje gång du startar VB. Den tar ju inte mycket resurser så. Efter att ha gjort ovanstående, välj Add-Ins >> Add-In Manager... >> markera VB6.ResEdit >> kryssa i Load on startup >> OK.
2. Skapa en helt tom fil som heter "dittnamn.res" i samma mapp som ditt VB-projekt ligger där dittnamn är vad du vill filen ska heta.
3. Starta Resource Hacker och välj Open
4. Bläddra till mappen där res-filen ligger och öppna den. Du kan behöva ändra filtyp till "Resource files(*.res)" i öppna-rutan.
5. För att lägga till bilderna, spara alla bilder som bmp om du inte redan gjort det, klicka sedan på Action >> Add a new Resource ... >> Open file with new resource ..., bläddra till första bmp-bilden, öppna den, skriv ett id i Resource Name (OBS: Måste vara unikt för alla bilder och helst i siffror), och som Resource Language skriver du 1053 för svenska. Klicka på OK.
6. Upprepa punkt 5 för alla bilder.
7. Välj File >> Save.
8. Bläddra till din VB-projectfil (namn.vbp) och öppna denna i t.ex. anteckningar.
9. Precis över raden IconForm="Form1" eller liknande beroende på vad din form heter, skriv
ResFile32="dinfil.res"
där dinfil är namnet på res-filen.
10. Välj Arkiv >> Spara.
11. När du vill ha in bilderna i VB gör du som jag skrev i ett tidigare inlägg,
Set cmdNum(i).Picture = LoadResPicture("<bildens unika id>", vbResBitmap)