Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: LuCypher am 04.05.05 - 13:46:46

Titel: Link einfügen
Beitrag von: LuCypher am 04.05.05 - 13:46:46
Hallo

Mein Problem ist folgendes:

Ich soll für einen Kunden eine Anwendung erstellen über die er auf andere Datensätze zugreifen kann.
Diese sollen aber, wegen der Grösse, nicht im Notes-Dokument gespeichert werden, sondern dort nur als Link vom Benutzer eingetragen werden.
Bei jeder Möglichkeit die mir bis jetzt eingefallen ist, wird entweder das Zielobjekt doch im Notesdokument gespeichert oder es gibt keinen Benutzerdialog über den der Endanwender dann die Links selber eintragen kann.

Vielen Dank schonmal
Titel: Re: Link einfügen
Beitrag von: Semeaphoros am 04.05.05 - 13:52:06
Willkommen im Forum, Lichtträger ...  ;)

Standarddialog für so etwas gibt es tatsächlich nicht, es sei denn, der Endbenutzer trägt seine Links vollständig "von Hand" ein (über Erstellen, Hotspot). Um Dir einen Lösungsweg aufzuzeigen, brauchen wir aber mehr Informationen: Was sind das für Datensätze und wo liegen die (Applikation und/oder Dateityp und/oder Speicherort).
Titel: Re: Link einfügen
Beitrag von: LuCypher am 04.05.05 - 15:01:20
Handelt sich um grössere ASCII-Dateien und Firmeninteren Formate, die im Haus auf einem Server liegen. Um Fehler auszuschliessen, ist die händische Eingabe und Umwandlung in einen Hotspot nicht unbedingt das beste. Dachte da eher an sowas wie den "Datei öffnen"-Dialog, der dann den Pfad hinterlässt.
Titel: Re: Link einfügen
Beitrag von: TMC am 04.05.05 - 20:33:28
Schau mal hier:
http://www.atnotes.de/index.php?topic=12262.0
Titel: Re: Link einfügen
Beitrag von: LuCypher am 09.05.05 - 09:27:28
Danke für den Verweis auf den anderen Topic... wäre genau das was ich brauche. Nur leider geht der Link mit dem Beispiel nicht mehr (Nicht verwunderlich nach 2 Jahren)

Jemand aus der Firma hat mir aber ein Script geschickt mit dem ich über den Standard-Windows-Datei-öffnen-Dialog den Pfad als String zurückgeben kann:

Code
Declarations
	Const BIF_RETURNONLYFSDIRS = 1
	Const BIF_DONTGOBELOWDOMAIN = 2
        Const BIF_BROWSEINCLUDEFILES  = &H4000
	Const MAX_PATH = 260
	Private Type BrowseInfo
		hWndOwner      As Long
		pIDLRoot       As Long
		pszDisplayName As Long
		lpszTitle      As String
		ulflags        As Long
		lpfnCallback   As Long
		lParam         As Long
		iImage         As Long
	End Type

	Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
	Declare Function SHGetPathFromIDList Lib "shell32" (Byval pidList As Long, Byval lpBuffer As String) As Long


Sub get_folder(filepath As String)
	Dim lpIDList As Long
	Dim sBuffer As String *260
	Dim szTitle As String
	Dim temp As String
	Dim endpath As String
	
	Dim tBrowseInfo As BrowseInfo
	
	tbrowseinfo.lpszTitle = "Bitte den Zielordner wählen"
	tBrowseInfo.ulflags = BIF_BROWSEINCLUDEFILES
	
	lpIDList = SHBrowseForFolder(tBrowseInfo)
	
	If (lpIDList) Then
		SHGetPathFromIDList lpIDList, sBuffer
		temp = Left(sBuffer, Instr(sBuffer, Chr(0)) - 1)
		endpath = "\"
		filepath$ = temp
		If Not Right$(filepath$,1) = endpath Then 
			filepath$ = temp + endpath
		End If
	Else
		End
	End If
End Sub

Aufruf dann über

Code
Call get_folder(filepath$)

Ich hoff das tut dann das was ich will ;)
Titel: Re: Link einfügen
Beitrag von: LuCypher am 09.05.05 - 10:18:32
Es tut....


...aber doch nicht so ganz!

Vielleicht fehlt mir einfach die Erfahrung oder ich stell mich heute einfach nur blöd an:

Ich hab das ganze jetzt in eine Aktion gepackt. Er holt sich auch den Pfad  richtig.... nur wie bekomm ich den Pfad aus der variable filepath$ die ich über die Call-Anweisung bekomm in ein Textfeld?
Titel: Re: Link einfügen
Beitrag von: Semeaphoros am 09.05.05 - 11:15:03
FieldSetText Methode
Titel: Re: Link einfügen
Beitrag von: LuCypher am 10.05.05 - 12:03:01
Ok.... meine Lösung:

Declarations:
Code
Const BIF_DONTGOBELOWDOMAIN = 2
Const BIF_RETURNONLYFSDIRS = 1
Const BIF_BROWSEINCLUDEFILES  = &H4000
Const MAX_PATH = 260
Private Type BrowseInfo
	hWndOwner      As Long
	pIDLRoot       As Long
	pszDisplayName As Long
	lpszTitle      As String
	ulflags        As Long
	lpfnCallback   As Long
	lParam         As Long
	iImage         As Long
End Type
Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Declare Function SHGetPathFromIDList Lib "shell32" (Byval pidList As Long, Byval lpBuffer As String) As Long

Get Folder Klasse

Code
Sub get_folder(filepath As String)
	Dim lpIDList As Long
	Dim sBuffer As String *260
	Dim szTitle As String
	Dim temp As String
	Dim endpath As String
	
	Dim tBrowseInfo As BrowseInfo
	
	tbrowseinfo.lpszTitle = "Bitte den Zielordner wählen"
	tBrowseInfo.ulflags = BIF_BROWSEINCLUDEFILES
	
	lpIDList = SHBrowseForFolder(tBrowseInfo)
	
	If (lpIDList) Then
		SHGetPathFromIDList lpIDList, sBuffer
		temp = Left(sBuffer, Instr(sBuffer, Chr(0)) - 1)
		endpath = "\"
		filepath$ = temp
		If Not Right$(filepath$,1) = endpath Then 
			filepath$ = temp + endpath
		End If
	Else
		End
	End If
End Sub

Und das auslösende Click-Event

Code
Sub Click(Source As Button)
	Dim workspace As New NotesUIWorkspace
	Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim item As NotesItem
	Dim doc As NotesDocument
	Set uidoc = ws.CurrentDocument
	Set doc = uidoc.Document
	
	filepath$ = ""
	Call get_folder(filepath$)
	Set item = doc.GetFirstItem("txtSAV")
	item.AppendToTextList(filepath$)
	uidoc.FieldSetText "txtSAV",item.Text
	
	Call uidoc.Refresh
End Sub

Das ganze wird dann in ein Textfeld geschrieben und dort als Mehrfachwert behandelt.

Ist es möglich, direkt bei der Eingabe des Pfades diesen in einen Link umzuwandeln der auf die entsprechende Adresse verweist?