22. august 2003 - 08:32Der er
30 kommentarer og 1 løsning
Auto pop-up af module
Jeg har "snuppet dette modul fra et tidligere spørgsmål om at få en "gennemse.."-knap i sin formular.. I formularen skal følgende kode ind:
Private Sub Kommandoknap23_Click()
Me.Kommandoknap23.HyperlinkAddress = LaunchCD(Me) FigurSRC = Me.Kommandoknap23.HyperlinkAddress 'Hvis der er et billede, så hvis det ellers et tomt felt If Not IsNull(FigurSRC) Then MarkPic.Picture = FigurSRC FigurPath2 = FigurSRC Else MarkPic.Picture = "C:\FOTO\nofoto.gif" FigurPath2 = FigurSRC End If
End Sub
Modulet ser sådan her ud:
Option Compare Database Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type
Function LaunchCD(strform As Form) As String Dim OpenFile As OPENFILENAME Dim lReturn As Long Dim sFilter As String OpenFile.lStructSize = Len(OpenFile) OpenFile.hwndOwner = strform.Hwnd sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _ "BMP Files (*.BMP)" & Chr(0) & "*.BMP" & Chr(0) OpenFile.lpstrFilter = sFilter OpenFile.nFilterIndex = 1 OpenFile.lpstrFile = String(257, 0) OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1 OpenFile.lpstrFileTitle = OpenFile.lpstrFile OpenFile.nMaxFileTitle = OpenFile.nMaxFile OpenFile.lpstrInitialDir = "C:\BA\PICTURES" OpenFile.lpstrTitle = "Vælg en fil og tryk på Åbn." OpenFile.flags = 0 lReturn = GetOpenFileName(OpenFile) If lReturn = 0 Then MsgBox "Manglende fil!", vbInformation, _ "Du har ikke valgt en fil fra Stifinderen." Else LaunchCD = OpenFile.lpstrFile 'Trim(OpenFile.lpstrFile) End If End Function
Mit spørgsmål er hvordan får jeg modulet til ikke at åbne billedet, men derimod kun at tage stien...????
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det der sker efter du har trykket på en fil i OpenFile-dialogboksen, er at billed-stien bliver skrevet i labelen "FigurSRC" og herefter billede bliver åbnet af extensions standard-program (BMP åbnes af Paint, Gif = Microsoft Photo Editor, osv.).. Det skal den ikke.. Den skal kun skirves i labelen
Jeg vil mene at det sker i den første procedure (koden på kommandoknappen): Jeg har rem'et 2 linier ud, som jeg tror er skyld i det (Jeg aner ikke hvad MarkPic er og gør?). Prøv denne kode:
Private Sub Kommandoknap23_Click() Me.Kommandoknap23.HyperlinkAddress = LaunchCD(Me) FigurSRC = Me.Kommandoknap23.HyperlinkAddress 'Hvis der er et billede, så hvis det ellers et tomt felt If Not IsNull(FigurSRC) Then 'MarkPic.Picture = FigurSRC 'FigurPath2 = FigurSRC Else MarkPic.Picture = "C:\FOTO\nofoto.gif" FigurPath2 = FigurSRC End If End Sub
hmmm, det lyder som om, at det er Windows, som 'finder' på at åbne billedet!
-Prøv at placere cursoren i linien, som hedder: Me.Kommandoknap23.HyperlinkAddress = LaunchCD(Me) -Tryk F9 (Toggle breakpoint) -Start formularen -Tryk på knappen
Når koden når til den linie, vil den stoppe og du kan derefter single-steppe gennem koden vha F8. Når billedet åbner sig, så ved du hvilken linie, som er skyld i det!
hmm, det var det, som jeg frygtede. Du har ikke tilfældigvis prøvet koden på en anden maskine, vel? Det er ikke normalt, at den skal gøre det.
Jeg har heller aldrig set din variation af Openfile-koden. Prøv evt denne kode i stedet:
Private Sub Kommandoknap23_Click() on error resume next Me.Kommandoknap23.HyperlinkAddress = adhCommonFileOpenSave(cdlOFNExplorer, "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & "BMP Files (*.BMP)" & Chr(0) & "*.BMP", , , , "Vælg en fil og tryk på Åbn", "C:\BA\PICTURES") FigurSRC = Me.Kommandoknap23.HyperlinkAddress 'Hvis der er et billede, så hvis det ellers et tomt felt If Not IsNull(FigurSRC) Then MarkPic.Picture = FigurSRC FigurPath2 = FigurSRC Else MarkPic.Picture = "C:\FOTO\nofoto.gif" FigurPath2 = FigurSRC End If End Sub
Public Function adhCommonFileOpenSave( _ Optional ByRef Flags As adhFileOpenConstants = 0, _ Optional ByVal filter As String = "", _ Optional ByVal FilterIndex As Long = 1, _ Optional ByVal DefaultExt As String = "", _ Optional ByVal Filename As String = "", _ Optional ByVal DialogTitle As String = "", _ Optional ByVal InitDir As String = "", _ Optional ByVal hwndOwner As Long = 0, _ Optional ByVal OpenFile As Boolean = True) As String
On Error GoTo HandleErrors
Dim cdl As CommonDialog Set cdl = New CommonDialog
If hwndOwner = 0 Then hwndOwner = Application.hWndAccessApp End If With cdl .CancelError = True .hwndOwner = hwndOwner .filter = filter .FilterIndex = FilterIndex .Filename = Filename .DialogTitle = DialogTitle .Flags = Flags .DefaultExt = DefaultExt .InitDir = InitDir If OpenFile Then Call .ShowOpen Else Call .ShowSave End If If Not IsMissing(Flags) Then Flags = .Flags adhCommonFileOpenSave = .Filename End With
ExitHere: On Error Resume Next Set cdl = Nothing Exit Function
HandleErrors: Select Case Err.Number Case cdlCancel Err.Raise cdlCancel, , "User cancelled the dialog." Case Else MsgBox "Error: " & Err.Description & " (" & Err.Number & ")" End Select Resume ExitHere End Function
Public Function adhAddFilterItem(StrFilter As String, _ strDescription As String, Optional varItem As Variant) As String
If IsMissing(varItem) Then varItem = "*.*" adhAddFilterItem = StrFilter & _ strDescription & vbNullChar & _ varItem & vbNullChar
End Function
Function adhTrimNull(ByVal strItem As String) As String Dim intPos As Integer intPos = InStr(strItem, vbNullChar) If intPos > 0 Then adhTrimNull = Left(strItem, intPos - 1) Else adhTrimNull = strItem End If End Function
ahhhh, nu ved jeg hvad fejlen er: Det er fordi du angiver, at knappens hyperlink skal sættes til stien. Dette husker den til næste gang du klikker på knappen. Derfor er det i realiteten det forrige billede, som du ser ;o)
Behold bare din oprindelige kode men ændr koden på knappen til dette:
Private Sub Kommandoknap23_Click() FigurSRC = LaunchCD(Me)
'Hvis der er et billede, så hvis det ellers et tomt felt If Not IsNull(FigurSRC) Then 'MarkPic.Picture = FigurSRC 'FigurPath2 = FigurSRC Else MarkPic.Picture = "C:\FOTO\nofoto.gif" FigurPath2 = FigurSRC End If End Sub
Derefter skal du gå i egenskaberne på kommandoknappen og fjerne det hyperlink, som er der.
Ja, ok men billedet skal jo bliver vist i MarkPic, som du har udkommenteret.. Hvis jeg fjerne kommentaren siger den at indstilling for denne egenskab er for lang
Private Sub Kommandoknap23_Click() FigurSRC = LaunchCD(Me)
'Hvis der er et billede, så hvis det ellers et tomt felt If Not IsNull(FigurSRC) Then MarkPic.Picture = Trim(FigurSRC) FigurPath2 = Trim(FigurSRC) Else MarkPic.Picture = "C:\FOTO\nofoto.gif" FigurPath2 = Trim(FigurSRC) End If End Sub
Ja... Og du bruger det modulet jeg har brugt i spørgsmål-forklaringen, og denne kode i formularen:
Private Sub Kommandoknap23_Click() FigurSRC = LaunchCD(Me)
'Hvis der er et billede, så hvis det ellers et tomt felt If Not IsNull(FigurSRC) Then MarkPic.Picture = Trim(FigurSRC) FigurPath2 = Trim(FigurSRC) Else MarkPic.Picture = "C:\FOTO\nofoto.gif" FigurPath2 = Trim(FigurSRC) End If End Sub
Private Sub Kommandoknap23_Click() FigurSRC = Replace(LaunchCD(Me), Chr(0), "")
'Hvis der er et billede, så hvis det ellers et tomt felt If Not IsNull(FigurSRC) Then MarkPic.Picture = FigurSRC FigurPath2 = FigurSRC Else MarkPic.Picture = "C:\FOTO\nofoto.gif" FigurPath2 = FigurSRC End If End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.