Seite 1 von 1
Re: Bild in Formular
Verfasst: Fr, 31.10.2008 22:28
von hawe
Etwas sehr gewöhnungbedürftig Dein VBA-Code - unklar wo und wie?
In meinem Beispiel steht der komplette Pfad in einem TextFeld das den Event auch auslöst...
Code: Alles auswählen
Sub lostFocus_txbImagePath( oEvt as Object )
oControl = oEvt.Source.Model
oMainForm = oControl.Parent
oImg = oMainForm.getByName("ImageControl1")
if oControl.String > "" then
oImg.ImageUrl = ConvertToURL(oControl.String)
End If
End Sub
Re: Bild in Formular
Verfasst: Mo, 03.11.2008 11:39
von hawe
Die Logik ist ziemlich die gleiche wie bei Access.
Nun dann kannst Du den Code dahingehend anpassen,
dass Du für den Codeaufruf das Formularereignis 'Nach dem Datensatzwechsel ' hernimmst.
Einen Pointer auf oMainForm erhälst Du in diesem Fall mit
oMainForm = oEvt.Source ' call by MainForm
und oControl (hält dann den Pfad aus dem Datenbankfeld) musst Du über den Namen abgreifen, genauso wie bei 'ImageControl1' gezeigt.
Re: Bild in Formular
Verfasst: Do, 29.01.2009 17:32
von hawe
Du darfst das Thema gerne nochmal aufgreifen.
Aber "kein Ergebnis" ist keine Diskussionsgrundlage für eine Hilfestellung....
Re: Bild in Formular
Verfasst: Do, 29.01.2009 20:52
von hawe
Dann würde ich sagen, der Code wird nicht ausgeführt, dann macht er auch keine Fehler, denn er funktioniert, wenn er die richtigen Daten hat! Der Pfad also korrekt ist...
Es gibt auch nur einen Event "Nach dem Datensatzastzwechsel" in einem Formular und keinen den Du genannt hast, wo soll das sein? Es ist Die Frage, ob Du die Ereignissteuerung richtig gesetzt hast...
Re: Bild in Formular
Verfasst: Do, 29.01.2009 21:39
von oktobaer
Tipp: Ob ein Code bei einem Ereignis ausgeführt wird teste ich mit einem
print
Anhand eins Fensters weiß ich es dann, zdem kann ich evtl auch noch Variablen anzeigen lassen.
Oktobaer
Re: Bild in Formular
Verfasst: Fr, 30.01.2009 12:58
von hawe
aber auch keine Makros!
Ausserdem sind Deine Tabellendaten inkonsistent, auch Umlaute sind auf verschiedenen Systemen immer ein Problem wert...
Re: Bild in Formular
Verfasst: Fr, 30.01.2009 20:30
von sarotti
Hallo Du negativer Mensch...

("Aufgabe wegen Sinnlosigkeit" hat ja so einen depressiven Beigeschmack...)
ich habe mir Deinen Code angeschaut und denke, das Problem könnte am Aufruf des Formulars liegen... Sorry aber "oEvt.Source" sagt mir nicht viel....
Leider konnte ich die genannte ZIP Datei nicht runterladen, also drehe ich den Spiess mal um. Ich sende Dir mal eine gezippte Datenbank mit Formularen und Bildern (SORRY, die musst ich löschen..s.u.), in der genau das funktioniert, was Du willst: Nämlich bei Datensatzwechsel wird das aktuelle Bild geladen. Du kannst Dir ja mal die Struktur anschauen und nachbilden....
Die Datei Rezept.zip einfach in "c:/Rezept" entpacken und darauf achten, dass die Datenbank nicht die .odt-Datei einen Schreibschutz hat...dann sollte es klappen. Die jpg-Dateien im Verzeichnis "Bilder" musste ich aufgrund der Größenbeschränkung des Forums löschen. Aber Du kannst ja wieder neue Bilder ....einfügen (...wurde mit OO3.0 unter XP getestet)
By the way es handelt sich um eine kleine Rezeptdatenbank
- Rezept.zip
- Rezeptdatenbank
- (60.11 KiB) 1989-mal heruntergeladen
....war mal ein GOODIE für eine Kollegin (...ja, Gudrun, Du bist gemeint

und hat ein paar eigebaute nette Dinge....
Gruss
sarotti
Re: Bild in Formular
Verfasst: Fr, 30.01.2009 21:45
von hawe
Hallo Sarotti,
ich glaub ja nicht, dass unser Freund jetzt mit Deinem Beispiel zurecht kommt. Wir werden sehen..
Hübsche Anwendung, krankt allerdings an dem statischen Pfad für die Bilder. Es wäre wesentlich komfortabler Du fragst die URL des Base Files ab und arbeitest damit weiter, etwa
Code: Alles auswählen
sub BildAnzeigen
Dim oForm, sBildUrl as string, dbBaseUrl as String
oForm = ThisComponent.drawpage.Forms.getByName("MainForm")
sBildURL = oForm.getByName("txtBild").text
if sBildURL > "" then
dbBaseUrl = ConvertFromURL(thisComponent.Parent.getUrl())
dbBaseUrl = Left(dbBaseUrl,len(dbBaseUrl) - len(thisComponent.Parent.Title))
oForm.getByName("Bild").ImageURL = convertToUrl(dbBaseUrl & "Bilder\" & sBildURL)
end if
End Sub
Die Pfadangabe für die Bilder in der Datenbank muss latürnich dann unterbleiben - der blanke Dateiname des Bildes genügt! Ich setze mit meinen Objektpfaden lieber relativ auf das auslösende Objekt auf - deshalb oEvt.Source ...
Re: Bild in Formular
Verfasst: Fr, 30.01.2009 22:22
von sarotti
Hallo hawe,
mit dem statischen Pfad... da muss ich Dir recht geben... Da diese kleine Datenbank "nur" mal eben so entstanden ist, habe ich mir da zugegebenermaßen keine großen Gedanken hierzu gemacht... Naja, sollte aber hilfreich sein, wenn´s um den Weg geht. Da ich anfangs ziemlich lange an dem Problem von "verknüpften" externen Bildern und Daten rumgefriemelt habe, sollte das wohl hilfreich sein....
Gruss
sarotti