Seite 1 von 1
After record change Ereignis
Verfasst: Do, 13.07.2006 10:52
von ehvbs
Hallo,
ich möchte in einem OOBase Formular zu jedem Record die zugehörige externe
Grafik (.tif Datei) anzeigen. Zu diesem Zweck benutze ich folgenden Code
Code: Alles auswählen
Sub onCurrent( oEv As Object )
Const csPath = "<PfadAufMeineTifs>"
Dim oForm As Object : oForm = oEv.Source
Dim oSleFiNa As Object : oSleFiNa = oForm.getByName( "txtC2" )
Dim oPicDisplay As Object : oPicDisplay = oForm.getByName( "picDisplay" )
Dim sFSpec As String : sFSpec = oSleFiNa.Text
MsgBox sFSpec
sFSpec = csPath + sFSpec
oPicDisplay.ImageURL = ConvertToURL( sFSpec )
End Sub
zur Behandlung des "After Record Change" events. Beim Öffnen des Formulars
ist oSleFiNa.Text allerdings leer; erst wenn ich durch die Datensätze
blättere, funktioniert die Anzeige der Grafiken wie gewünscht.
Was kann ich tun, um dieses Problem zu beseitigen?
Vielen Dank
ehvbs
Verfasst: Fr, 14.07.2006 00:31
von ehvbs
Hallo,
anscheinend funktioniert der unmittelbare Zugriff auf die Ergebnismenge
(rowset/recordset) besser als der über die Controls und ihre BoundFields:
Code: Alles auswählen
Sub onCurrent( oEv As Object )
Const csPath = "<PfadAufMeineTifs>"
Dim oForm As Object : oForm = oEv.Source
Dim sFSpec As String : sFSpec = oForm.getColumns.getByName( "C2" ).getString()
oForm.getByName( "picDisplay" ).ImageURL = ConvertToURL( csPath + sFSpec )
End Sub
Da dieser Code nicht durch Programmieren, sondern Hacken entstanden
ist, würde es mich beruhigen, wenn interessierte Fachleute ihn mal
korrekturlesen würden.
Vielen Dank
ehvbs
Verfasst: Fr, 14.07.2006 08:11
von Toxitom
hey ehvbs,
Da dieser Code nicht durch Programmieren, sondern Hacken entstanden
ist, würde es mich beruhigen, wenn interessierte Fachleute ihn mal
korrekturlesen würden.
Was verstehst du unter "Hacken"? Der Code sieht doch ganz normal aus und ist so ok. Es gibt halt viele Wege zum Ziel - und wenn er funktioniert - bestens
Im Übrigen hast du natürlich recht: Es ist immer besser, direkt mit dem Rowset zu arbeiten - die Formular-Controls dienen ja auch nur als "Anzeige" der Inhalte.
Gruss
Thomas
Verfasst: Fr, 14.07.2006 09:38
von ehvbs
Hi Toxitom,
Unter "Programmieren" verstehe ich, dass man auf der Grundlage von
sorgfältig studierter Dokumentation und getestetem Code bei jeder
neuen Zeile sagen kann, warum das so geschrieben werden muss
und dass das so funktionieren wird. Ich beschäftige mich erst seit
Kurzem mit OpenOffice und erlebe dauernd Überraschungen.
So hatte ich angenommen, dass die gebundenen Controls ihrer
Anzeigepflicht auch schon beim Laden des Formulars nachkommen,
musste dann aber erfahren, dass sie da noch nichtmal zur Verfügung
stehen. Wenn man dann im "StarOffice 8 Programming Guide for BASIC"
lesen muss, das alles sei zu kompliziert als dass es erklärt werden könne,
fängt man schon an, sich Sorgen zu machen. Und genau das ist es, was
ich unter "Hacken" verstehe: Man schreibt Code, der einen nicht ruhig
schlafen läst.
Umso willkommener war mir Dein Urteil. Vielen Dank!
ehvbs
Verfasst: Sa, 16.09.2006 17:08
von Wurstsuppe
Ich versuche auch, ein Bild in einem Formular darzustellen. Beide Beispiele oben funktionieren bei mir nicht (ich beschäftige mich aber erst eine Woche mit BASIC).
Zu folgenden habe bis jetzt noch keine Doku gefunden:
Wo steht was darüber?
Meine Tabelle heisst "BILDPFADE", der Pfad steht in "BILDURI".
Ich habe mir etwas zusammen programmiert, was das gewünschte macht:
Code: Alles auswählen
Sub OnClickURL( oEv as Object )
Dim oDocument As Object
Dim oForm As Object
Dim oText As Object
Dim oText1 As Object
Dim oText2 As String
oDocument = ThisComponent
oForm = oDocument.DrawPage.Forms.getByName("BILDPFADE")
oText = oForm.GetByName("BILDURI")
oText1 = oText.gettext()
oText2 = oText1.getstring()
oForm.getByName("ImageControl").ImageURL = ConvertToURL(oText2)
End Sub
Sieht irgendwie völlig anders aus als obige Beispiel. Bleibt immer noch das Problem, dass beim Laden des Formulars das Bild nicht angezeigt wird, sondern erst nach einem Datensatzwechsel.
Kann mir jemand helfen? Danke sehr.