Seite 1 von 1

[gelöst]Wert von Dialog nach Dialog übergeben

Verfasst: Mo, 17.05.2010 13:34
von ROM
Hallo,

ich habe folgende Situation:

Ich habe ein Makro, welches ein Dialog öffnet und in dem 3 Textfelder sind. Wenn ich in die Textfelder klicke, öffnet sich ein weiterer Dialog. Hier kann man über eine Sucheingabe ein Emailadresse ermitteln.
Wenn ich eine Emailadresse ausgewählt habe und auf OK klicke, soll diese Adresse im Ausgangsdialog im Textfeld stehen. Ich habe es versucht folgendermaßen umzusetzen.

Dialog1

Code: Alles auswählen

Sub OpenEmailDialog
	
	Dim DlgEmailSenden
	Dim Abbruch
	Dim oContent
	Dim sURL as String
   	Dim sContent as String
   	Dim sTo as String
   	Dim sCc as String
   	Dim sSubject as String
   	Dim oDoc

	Dim FileProperties(1) as new com.sun.star.beans.PropertyValue
	FileProperties(0).Name = "FilterName"
   	FileProperties(0).Value = "Text"
   	
   	
	DialogLibraries.LoadLibrary("WP_Wagner")
	DlgEmailSenden = CreateUnoDialog(DialogLibraries.WP_Wagner.Email_senden)


	select case DlgEmailSenden.execute()
	
	
	
	'senden
	case 1:	
	  ' -----> Hier sollen die Werte eingetragen werden!!! An die Controls "To_Text" und "Cc_Text"
	  sTo = DlgEmailSenden.getControl("To_Text").text
	  sUrl = "c:/OOoEmailSending/EmailData/To.txt"
	  writeFile(sUrl,sTo)
	  sCc = DlgEmailSenden.getControl("Cc_Text").text
	  sUrl = "c:/OOoEmailSending/EmailData/Cc.txt"
	  writeFile(sUrl,sCc)
	  
	  sSubject = DlgEmailSenden.getControl("Subject").text
	  sUrl = "c:/OOoEmailSending/EmailData/Subject.txt"
	  writeFile(sUrl,sSubject)
	 
	  oDoc = thisComponent
	  
	  sUrl = "file:///c:/OOoEmailSending/EmailData/EmailBody.txt"
	  oDoc.storeToURL(sURl,FileProperties)
	  call runJar()	
	  
	  DlgEmailSenden.dispose()	
	'Abbruch
	case 0:
		DlgEmailSenden.dispose()	
		goto Ende
		
		
	end select	
		
		
		
	Ende:
end sub

Dialog 2

Code: Alles auswählen

sub searchEmailadress
	
	Dim Suchbegriff
	Dim SuchBereich
	Dim SQL, SQLBegin, SQLEnd
	Dim oDlg
	Dim olist
	Dim DatabaseContext
	Dim DataSource
	Dim Connection
	Dim InteractionHandler
	Dim Statement
	Dim ResultSet
	Dim i, j
	Const AnzFelder% = 5
	Dim Adr$(AnzFelder,i) as String
	
	
	Const Suc% = 0, Fa1% = 1, St1% = 2, PLZ% =3, Ema% = 4

	
	Suchbegriff = InputBox("Suchname: ")
	
	if Suchbegriff <> "" then
		goTo Weiter
	else
		goTo Abbruch	
	end if 	
	
	Weiter:
	
	DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
	DataSource = DatabaseContext.getByName("wagnerDB_adressdaten")   
	
	if Not DataSource.isPassWordRequired then
		Connection = DataSource.GetConnection("","")
	else
		InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
		Connection = DataSource.ConnectWithCompletion(InteractionHandler)	
	end if
	
	SQLBegin = "Select adr_suchname, adr_fa1, adr_strasse, adr_plz_ort, adr_email FROM Adressdaten INNER JOIN zuHanden ON adr_suchname = zhd_suchname WHERE (adr_suchname BETWEEN '"
	SuchBereich = Suchbegriff & "' AND '" & Suchbegriff  
	SQLEnd = "ZZZ') ORDER BY adr_suchname ;"
	
	SQL = SQLBegin + SuchBereich + SQLEnd
	
	Statement = Connection.createStatement()
	ResultSet = Statement.executeQuery(SQL)
	
	
	if isNull(ResultSet) then 
		MsgBox "Keine passenden Datensatz zum Suchnamen '" + Suchbegriff + "' gefunden!"
		
		GoTo Abbruch
	else
		i = -1
		
		While ResultSet.next	
		
			i = i + 1
			Redim Preserve Adr(AnzFelder, i + 1)
				Adr(1, i) = ResultSet.getString(1) 
        	    Adr(2, i) = ResultSet.getString(2)
            	Adr(3, i) = ResultSet.getString(3)
                Adr(4, i) = ResultSet.getString(4)
               	Adr(5, i) = ResultSet.getString(5)   
            
            'MsgBox ResultSet.getString(1)
		wend
		
	end if
	
	if i <> 0 then
		DialogLibraries.LoadLibrary("WP_Wagner")
		oDlg = CreateUnoDialog(DialogLibraries.WP_Wagner.Email_Adressen)
		olist = oDlg.getControl("EmailAdressen")
		
		For j = 0 to i
			olist.additem(Adr(Suc,j)  + "/" + Adr(Fa1,j) + "/" + Adr(St1,j) + "/" + Adr(PLZ,j) + "/"  + Adr(5,j) , j)
		next 
		
		select case oDlg.execute()
		
		case 1: 
'----------------> Versuch der Wertübergabe an Dialog 1
		  i = olist.getselectedItempos	
		  email = Adr(5,i)		
		  DialogLibraries.LoadLibrary("WP_Wagner")
		  oDlg = CreateUnoDialog(DialogLibraries.WP_Wagner.Email_senden)
		  oDlg.getControl("To_Text").text = email		 
		  oDlg.dispose()
		
		
		case 0:
			goTo Abbruch
		
		end select
		
		if i = -1 then goto Abbruch	
	end if
		
	Abbruch:
end sub
So funktioniert es leider nicht. Ich bekomme zwar keine Fehlermeldung, aber den Wert habe ich auch nicht. Bin ich von Ansatz her überhaupt richtig?

vg
Rom

Re: Wert von Dialog nach Dialog übergeben

Verfasst: Mo, 17.05.2010 14:16
von ykcim
Hallo,

Du mußt den ersten Dialog als public deklarieren, also oberhalb der Subs, damit er in allen Prozeduren Gültigkeit hat.

Dein zweiter Aufruf in Dialgg2:
oDlg = CreateUnoDialog(DialogLibraries.WP_Wagner.Email_senden)
erzeugt nur ein zweites Objekt.

Hier ein Beispiel wie es geht:

Code: Alles auswählen

Dim MyDlg as Object

'oDialog hat einen Button der mit "Knopfdrueck" verbunden ist und ein Textfeld
Sub Fensterstart
   DialogLibraries.LoadLibrary("Standard")
   mydlg = CreateUnoDialog(DialogLibraries.Standard.oDialog)
   mydlg.execute
End Sub

'Dialog1 hat ein Textfeld
Sub Knopfdrueck
   DialogLibraries.LoadLibrary("Standard")
   mydlg2 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   mydlg2.execute
   mydlg.getcontrol("TextField1").text=mydlg2.GetControl("TextField1").text
End Sub
mfg
Michael

Re: Wert von Dialog nach Dialog übergeben

Verfasst: Mo, 17.05.2010 14:25
von ROM
Hi,

danke, hat super funktioniert.

vg
Rom