Seite 1 von 1

Bild in Dialogfenster laden

Verfasst: Do, 26.05.2005 20:41
von GrindingBaber
Hallo zusammen, ich habe folgende Aufgabe zu bewältigen:

Ich habe in einem Makro zu einer Calc-Datei ein Dialogfeld (oD1 as Object) mit einem ImageControl-Feld erstellt, in welches

a) beim öffnen des Dialogs und anschließend
b) durch anklicken eines Command-Buttons (z.B. "Next")

jeweils ein Bild aus einem bestimmten Verzeichnis angezeigt werden soll. Das Bild soll dabei ggf. an die Größe des ImageControl-Feldes angepasst werden. Hier im Forum habe ich nichts gefunden, im Sun-Handbuch leider auch nichts. Google spuckt ausschließlich VisualBasic-Lösungen aus, aber ich habe (als absoluter Newbie, der vor 6 Jahren - noch in der Schule - durch 'nen eher lauen VB-Kurs das letzte mal Kontakt mit der Materie hatte) gelesen, daß zwischen VB und OOo-Basic eigentlich keine gravierenden unterschiede bestehen würden. Also habe ich folgendes versucht:

Code: Alles auswählen

Dim oD1 as Object				
Dim oT1 as Object					
Dim oT2 as Object					
Dim oT3 as Object					
Dim nDatSatz as Integer				
Dim BildName as String	
Dim myDoc as Object

Sub Main

	myDoc = ThisComponent
	oT1 = myDoc.sheets(0)
	oT2 = myDoc.sheets(1)
	oT3 = myDoc.sheets(2)

	DialogLibraries.LoadLibrary( "Standard" )
	oD1 = CreateUnoDialog(DialogLibraries.Standard.Erfassen)
	initMaske						
	oD1.Execute()

End Sub

Sub initMaske
	
	BildName = oT2.getCellRangeByName("B3").value	
	nDatSatz = oT2.getCellRangeByName("A3").value
	oD1.getControl("NumericField1").value = nDatSatz
		
	oD1.getControl("ImageControl1") = LoadPicture("/home/"&	BildName)
	
End Sub
Der Dialog wird dadurch auch geladen, aber das Bild wird nicht angezeigt. Ist ImageControl überhaupt das richtige Feld hierfür? Gibt es die Funktion LoadPicture überhaupt bei OOo-Basic? Die OOo-Hilfe konnte mich dabei nicht wirklich weiterbringen. Kann mir jemand von euch auf die Sprünge helfen?

Vielen Dank schonmal im voraus! :D

Bild in Dialogfenster laden

Verfasst: Fr, 27.05.2005 10:39
von ykcim
Hi,

die Funktion LoadPicture gibt es nicht.
Die Grafikzuweisung erfolgt durch eine Propertie.

Wenn Du eine Zelle als Value ausliest bekommst du bei einem String den Wert 0. Du mußt den String auslesen. get....().string.

In der Zeile mit GetControl mußt Du das Ergebnis einem Objekt zuweisen.
Dieses hat dann die Eigenschaft model.imageurl.

Der Dateiname für die Eigenschaft muß die komplette URL enthalten ( fille:///.... ) .


Code: Alles auswählen

Sub initMaske
   
   rem in der Zelle steht "c:\bild.jpg"
   BildName = oT1.getCellRangeByName("B3").string   
   rem   nDatSatz = oT2.getCellRangeByName("A3").value
   rem    oD1.getControl("NumericField1").value = nDatSatz
      
   oImCo1=oD1.getControl("ImageControl1")
   Bild=ConvertToUrl(Bildname)
   oImCo1.model.imageurl=Bild
      
End Sub

mfg
Michael

Verfasst: Fr, 27.05.2005 11:57
von GrindingBaber
Hallo Michael,

vielen Dank für Deine Antwort, es funktioniert jetzt genau so, wie ich das haben wollte! :D Nur eines gibt es noch zu verbessern:

Da die Bilder nicht alle das Format 4:3 haben, werden einige ziemlich "zusammengestaucht" dargestellt. Da muß wohl irgendwo Stretch=True dahinterstecken. Nun kann ich das aber in den Eigenschaften von "ImageControl1" nicht ändern (gewünscht: Anpassen ja, aber dann unter Beibehaltung des Verhältnisses). Ist das möglich?

Und noch eine generelle Frage, damit ich niemanden unnötig auf die Nerven gehen muß, indem ich einen Thread nach dem anderen starte: Wie kann man bestimmte Fragen zu OOo-Basic am besten selbst lösen? Auf Michaels Lösung model.imageurl wäre ich nie gekommen, da half und hilft mir auch F1 nicht weiter. :?

Bild in Dialogfenster laden

Verfasst: Fr, 27.05.2005 13:46
von ykcim
Hi,

wenn die Grafik angepaßt werden soll, muss die Eigenschaft Skalieren auf ja stehen. Weitere Optionen gibt es glaube ich nicht.

Für Infos:

Schau mal hier im Forum in den aller ersten Beitrag:
Wichtig: Informationen zur StarBasic-Programmierung


Naja, und bei mir gibt es auch so einiges :-)
Siehe unten.

mfg
Michael