mit FileControl Bild-Datei auswählen -> in ImageControl

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Lagerregal
Beiträge: 7
Registriert: Do, 11.08.2011 14:36

mit FileControl Bild-Datei auswählen -> in ImageControl

Beitrag von Lagerregal »

Hallo, da bin ich trotz Suche im www wieder...

In meinem Dialog habe ich ein FileControl-Objekt, mit dem der Benutzer eine Bild-Datei auf seiner Festplatte auswählen soll, da deren Name benötigt wird.
Der Name dieser Datei sollte in einem String abgespeichert werden und das Bild in einem ImageControl-Objekt im Dialog angezeigt werden.

Im "StarBasic / OpenOffice.org Basic FAQ" fand ich zu dem ImageControl nur die Möglichkeit, eine fixe Url zu der Bilddatei angeben zu können.

Code: Alles auswählen

MyControl.model.imageurl="file:///C:/Programme/StarOffice6.1/share/gallery/bullets/poliball.gif"
Nun war meine Idee, dass ich die Url als string aus dem FIleControl-Objekt auslese und diesen String dann verwende, um
a) den Dateinamen herauszubekommen und b) das Bild im ImageControl eintragen zu lassen.

Doch nun tauchen die Probleme auf - zum Einen müsste ich wissen, wie ich aus der Dateiauswahl die Url bekomme.
Die OOo-Basic-Hilfe war mit "Dateiauswahl Erzeugt eine Schaltfläche für die Dateiauswahl." nicht gerade ergiebig. Beim oben genannten FAQ fand ich auch nichts dergleichen, mein Problem ist warshc. zu simpel dafür.
Zum anderen müsste das ImageControl-Feld "bescheid bekommen" sobald eine Datei gewählt wurde, um ihr Image dem Pfad entsprechen zu aktualisieren.

Und zu guter letzt müsste ich aus dem string, in dem die url ist, den Dateinamen herauslesen.
Dh. ich müsste den string von rechts nach links auf slash's durchsuchen, beim ersten gefundenen den string teilen. Ersten Teil verwerfen und der zweite Teil wäre mein Dateiname - aber das geht doch bestimmt auch einfacher? Würd mir jemand ein Tip geben, wie?
Viele Dank für eure Geduld!
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: mit FileControl Bild-Datei auswählen -> in ImageControl

Beitrag von F3K Total »

Hallo,
angenommen der Dialog heißt "dlg"
der Filselector im Dialog heiß "filepicker"
dann gehts so:

Code: Alles auswählen

ofilepicker=dlg.GetControl("filepicker")
MyControl.model.imageurl=ConverttoURL(ofilepicker.text)
Gruß R

Edit: ConverttoURL nötig
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: mit FileControl Bild-Datei auswählen -> in ImageControl

Beitrag von F3K Total »

Ich habe mal ein Beispiel drangehängt.
Viel Spaß damit
Gruß R
Dateianhänge
Dialog_pick_Image.odt
(11.97 KiB) 139-mal heruntergeladen
Lagerregal
Beiträge: 7
Registriert: Do, 11.08.2011 14:36

Re: mit FileControl Bild-Datei auswählen -> in ImageControl

Beitrag von Lagerregal »

Lösung ist unten, eine Frage bleibt noch:

Wenn ich meine tga-Datei einbinden will, macht er das nicht - unterstützt OOo-basic kein *.tga-Format??
Das wäre ja ziemlich suboptimal. Oder gibt es eine Routine/ein Tool, mit dem man das umgehen kann?
Ich hab sehr viele tga-Dateien (Tumbnail-artig, aber mit benötigtem Alpha-kanal für mein C-Programm) deren Dateinamen und ihr Bild ich einlesen müsste - wenn OOo-Basic kein tga-Format unterstützt, müsste ich jedes Bild sowohl als tga, als auch für OOo-Basic als z.B jpg abspeichern lassen.


so, nach einigem Rumprobieren und Nachforschen hat mich deine Antwort zur Lösung des in Anfangsthreads gebracht.
Falls noch jmd das Problem hatte, hier die Lösung:

Code: Alles auswählen

ofilepicker=dlg.GetControl("FileControl1")
fensterchen=dlg.GetControl("ImageControl1")
fensterchen.model.imageurl=ConvertToURL(ofilepicker.text)
bildname=GetFileNameWithoutExtension(ofilepicker.text,"\")
mycell = mysheet.getCellRangeByName("$D$4")
mycell.string = bildname
in der main muss dann noch

Code: Alles auswählen

GlobalScope.BasicLibraries.LoadLibrary("Tools")
eingebunden werden.

edit: kann es sein, dass man den Basic-Code nochmal extra abspeichern muss? Wenn ich die calc-Mappe abspeicher und wieder öffne, hat er zwar die Veränderungen in der calc-Tabelle, die durch den letzten Test des Codes hervorgerufen wurden, abgespeichert, aber mein Code war noch der Alte von vor dem letzten Öffnen.

edit: WOW! Vielen Dank für dein Beispiel! So viel Hilfe hatte ich garnicht erwartet, ich hoffe ich kann mein Programm fertigstellen, dann werde ich es mal uploaden, sodass auch andere Neulinge daraus profitieren können (kann aber noch etwas dauern ;-) )
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: mit FileControl Bild-Datei auswählen -> in ImageControl

Beitrag von turtle47 »

Hallo,
Lagerregal hat geschrieben:Wenn ich meine tga-Datei einbinden will, macht er das nicht - unterstützt OOo-basic kein *.tga-Format??
TGA-Format sollte gehen:
TGA.jpg
TGA.jpg (35.93 KiB) 1240 mal betrachtet
Gruß
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: mit FileControl Bild-Datei auswählen -> in ImageControl

Beitrag von F3K Total »

Hallo,
habe gerade Folgendes ausprobiert:
speichere ich aus Gimp ein .png nach .tga mit RLE-Kompression
tga_mit_RLE.png
tga_mit_RLE.png (14.43 KiB) 1234 mal betrachtet
kann ich es nicht öffnen,
ohne RLE-Kompression klappts prima und läßt sich auch mit dem Dialog anzeigen?!?
tga_ohne_RLE.png
tga_ohne_RLE.png (17.78 KiB) 1234 mal betrachtet
Gruß R

Edit: Das dein Code noch der alte war, ist unwahrscheinlich. Wenn Du das Dokument gespeichert hast. Es sei denn, Du hast Dich in der Makro Library geirrt, es gibt eine "Standard", die dem geöffneten Dokument zugeordnet ist, und eine "Standard", unter "Meine Makros" die quasi auf dem Rechner ist, und allen geöffneten Dateien zur Verfügung steht, dann aber nur auf "DEM" Rechner.
Lagerregal
Beiträge: 7
Registriert: Do, 11.08.2011 14:36

[gelöst]mit FileControl Bild-Datei auswählen -> in ImageCont

Beitrag von Lagerregal »

Ja, das stimmt, sie gehen.
Fast :-D
Ich habe meine tga-Dateien mit Gimp erstellt und abgespeichert. Dabei hab ich die RLE-Komprimierung, die standardmäßig an ist, auch an gelassen.
Warscheinlich kann OOo-Basic diese nicht richtig dekomprimieren und kann daher das Bild nicht anzeigen.
Wenn ich die tga-Datei ohne der RLE-Komprimierung abspeichere, kann mein ImageControl1-Feld auch die tga-Dateien 1-A anzeigen.
Problem gelöst, vielen Dank :-)

edit: Doppelt gemoppelt, danke für das Ausprobieren bei Gimp, hatte ich auch gerade, war aber zu langsam beim Posten :-)
edit2: Falls noch jemand Interesse hat, was RLE-Komprimierung ist: http://de.wikipedia.org/wiki/Laufl%C3%A4ngenkodierung
Antworten