Avatar billede jes-peer Nybegynder
22. august 2003 - 08:32 Der 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...????
22. august 2003 - 09:00 #1
Jeg er ikke helt med på, hvad du ønsker at der skal ske?

Du klikker på knappen og OpenFile-dialogboksen åbnes og du vælger en fil.
Hvad sker der derefter? Og hvad skal der ske i stedet?
Avatar billede jes-peer Nybegynder
22. august 2003 - 09:15 #2
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
22. august 2003 - 09:20 #3
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
Avatar billede jes-peer Nybegynder
22. august 2003 - 09:25 #4
Hmmm, nej for de to linjer er noget jeg selv har sat ind fordi billedet skal vise i formular, dog skal billedet ikke poppe op igen... Forstår du
22. august 2003 - 09:32 #5
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!
Avatar billede jes-peer Nybegynder
22. august 2003 - 09:48 #6
Smart... Det er linien LaunchCD = OpenFile.lpstrFile som åbner filen, men det er også den som definerer stien... Hva så???
22. august 2003 - 10:05 #7
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
Avatar billede jes-peer Nybegynder
22. august 2003 - 10:28 #8
Hmmm...variablen (cdlOFNExplorer er ikke defineret????
22. august 2003 - 10:30 #9
Sorry....den lå et andet sted i mit bibliotek.

Læg denne ind i modulet også:
Public Enum adhFileOpenConstants
    cdlOFNAllowMultiselect = 512
    cdlOFNCreatePrompt = 8192
    cdlOFNEnableHook = 32
    cdlOFNEnableSizing = 8388608
    cdlOFNExplorer = 524288
    cdlOFNExtensionDifferent = 1024
    cdlOFNFileMustExist = 4096
    cdlOFNHelpButton = 16
    cdlOFNHideReadOnly = 4
    cdlOFNLongNames = 2097152
    cdlOFNNoChangeDir = 8
    cdlOFNNoDereferenceLinks = 1048576
    cdlOFNNoLongNames = 262144
    cdlOFNNoNetworkButton = 131072
    cdlOFNNoReadOnlyReturn = 32768
    cdlOFNNoValidate = 256
    cdlOFNOverwritePrompt = 2
    cdlOFNPathMustExist = 2048
    cdlOFNReadOnly = 1
    cdlOFNShareAware = 16384
End Enum
Avatar billede jes-peer Nybegynder
22. august 2003 - 10:34 #10
Den siger stadig at variablen ikke er defineret
Avatar billede jes-peer Nybegynder
22. august 2003 - 10:35 #11
Det skulle ligge i samme modul, ik?
Avatar billede jes-peer Nybegynder
22. august 2003 - 10:37 #12
Kan du måske ikke sende et eksempel til mig
22. august 2003 - 10:39 #13
jeg er ved at lave et.

Har du en email?
Avatar billede jes-peer Nybegynder
22. august 2003 - 10:47 #14
Tusind tak...

jesper@hoggets.dk
Avatar billede jes-peer Nybegynder
22. august 2003 - 11:23 #15
Hvad sker der?? Du har vel ikke glemt mig
22. august 2003 - 11:27 #16
Sorry, var lige igang med en diskussion på et andet spørgsmål.

Faktisk er det så mystisk, at det samme sker på min maskine efter at jeg havde sat et fint lille eks. op til dig!!???

Og det fatter jeg slet ikke, da jeg aldrig har oplevet det før!

Jeg prøver at finde ud af noget....
22. august 2003 - 11:29 #17
hov!?? Har du allerede givet point? Det skulle du ikke have gjort, da jeg jo som sagt selv har problemer med at løse opgaven!

Hvis jeg ikke finder ud af noget, så får du lige pointene tilbage.
22. august 2003 - 11:32 #18
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.
Avatar billede jes-peer Nybegynder
22. august 2003 - 11:44 #19
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
22. august 2003 - 12:07 #20
Du kan prøve med:

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
Avatar billede jes-peer Nybegynder
22. august 2003 - 12:29 #21
Siger stadig det samme... Siger den ikke det på din comp!
Avatar billede jes-peer Nybegynder
22. august 2003 - 12:37 #22
Nååå, jeg kom ikke meget længere end da jeg stillede spørgsmålet...
22. august 2003 - 12:38 #23
Hvor lang er den sti,som du vælger? Den er åbenbart for lang til MarkPic eller FigurPath2
Avatar billede jes-peer Nybegynder
22. august 2003 - 12:41 #24
c:\foto\test.gif
Den er ikke længere end det....
22. august 2003 - 12:45 #25
MarkPic er et alm. Image-object?

På min er der ingen problemer....
Avatar billede jes-peer Nybegynder
22. august 2003 - 12:46 #26
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


?????????
22. august 2003 - 12:53 #27
kan du ikke sende databasen til tj@milla.dk....det er vist nemmere end alt det her!?
Avatar billede jes-peer Nybegynder
22. august 2003 - 12:55 #28
Jo, tak.. Mne jeg har lidt problemer med min outgoing mail, så kan du ikke bare sende din DB som virker på den mail jeg skrev før:
jesper@hoggets.dk
22. august 2003 - 13:06 #29
NU! tror jeg, at den er der:

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
Avatar billede jes-peer Nybegynder
22. august 2003 - 13:07 #30
YES YES YES.... Tusinde tak... Du har reddet min weekend..
22. august 2003 - 13:07 #31
:o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester