FormattedField Methoden und Eigenschaften?

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

Moderator: Moderatoren

schorsch21
*
Beiträge: 11
Registriert: Mo, 19.01.2009 23:35

FormattedField Methoden und Eigenschaften?

Beitrag von schorsch21 »

Hallo,

habe folgendes Problem: ich möchte einen zuvor ermittelten Wert (Integer) in ein formatiertes Feld eines Dialogs eintragen, es wird jedoch immer die Fehlermeldung "Eigenschaft oder Methode unbekannt" angezeigt. Mir ist bekannt, dass im Gegensatz zu den numerischen Feldern hier keine Value-Eigenschaft besteht. Es müsste eigentlich mit "EffectiveValue" funktionieren - tut es aber nicht. Hier ein kleiner Code-Schnipsel:

Code: Alles auswählen

Sub wievielStueck
	Stueck = dlg_wieviel.getControl("NumericField1").Value()
End Sub
	
Sub wievielGewichtEinheit
	x = dlg_wieviel.getControl("ListBox1").selectedItemPos
	dlg_wieviel.getControl("NumericField2").setValue(GewEinh(x))
	dlg_wieviel.getControl("FormattedField1").EffectiveValue = GewEinh(x)
	GewGesamt = (Stueck * GewEinh(x))/1000
	dlg_wieviel.getControl("NumericField3").setValue(GewGesamt)
	dlg_wieviel.getControl("FormattedField2").EffectiveValue = GewGesamt
End Sub
Es handelt sich um die Felder FormattedField1 / -2. Vielleicht weiß ja jemand wie es geht.

Schorsch
Und wenn man meint, man hat das System überlistet, wird man vom System überlistet!

Upgrade auf OOo. 3.2 seit 17.02.10
WinXp Pro
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: FormattedField Methoden und Eigenschaften?

Beitrag von DPunch »

Aloha

Versuch es mal so:

dlg_wieviel.getControl("FormattedField1").Model.EffectiveValue = GewEinh(x)
schorsch21
*
Beiträge: 11
Registriert: Mo, 19.01.2009 23:35

Re: FormattedField Methoden und Eigenschaften?

Beitrag von schorsch21 »

Hallo DPunch,

vorerst vielen Dank für die Info. Ich hab´s gleich mal ausprobiet und es funktioniert auch einwandfrei. Kannst du mir vielleicht noch sagen, warum hier noch zusätzlich Model eingefügt werden muss. Bei anderen Feldern kann doch auch direkt auf die Eigenschaft zugegriffen werden? Nochmals besten Dank !!!

Schorsch
Und wenn man meint, man hat das System überlistet, wird man vom System überlistet!

Upgrade auf OOo. 3.2 seit 17.02.10
WinXp Pro
schorsch21
*
Beiträge: 11
Registriert: Mo, 19.01.2009 23:35

Re: FormattedField Methoden und Eigenschaften?

Beitrag von schorsch21 »

Bin´s gleich nochmal. Es ist gleich noch ein weiteres Problem aufgetaucht. Die Werte stehen jetzt in den formatierten Feldern, jedoch scheint die Formatierung nicht zu funktionieren. Beispiel:

Wenn ich einen Wert von "20" über meinen Dialog in das Feld eintrage erscheint er dort als "20,000" (als mit 3 Nachkommastellen), obwohl ich die Formatierung des Feldes wie folgt vorgenommen habe:

Einstellung über das Eigenschaftenfenster des FormattedField, nach Formatierung, und dann im nächsten Fenster den Format-Code "#.##0 \g" eingegeben. Der angezeigte Wert sollte jetzt so aussehen: "20 g".

Ich habe dann noch eine Zeile in den Code eingefügt - eine MsgBox gibt den Wert von Model.Text aus. Komischerweise wird in der MsgBox der korrekte Wert angezeigt "20 g".

Code: Alles auswählen

Sub wievielStueck
   Stueck = dlg_wieviel.getControl("NumericField1").Value()
End Sub
   
Sub wievielGewichtEinheit
   x = dlg_wieviel.getControl("ListBox1").selectedItemPos
   dlg_wieviel.getControl("NumericField2").setValue(GewEinh(x))
   dlg_wieviel.getControl("FormattedField1").EffectiveValue = GewEinh(x)
   GewGesamt = (Stueck * GewEinh(x))/1000
   dlg_wieviel.getControl("NumericField3").setValue(GewGesamt)
   dlg_wieviel.getControl("FormattedField2").EffectiveValue = GewGesamt
   msgbox (dlg_wieviel.getControl("FormattedField1").Model.Text,0)
End Sub
Vielleicht fällt ja jemandem auch hierzu noch was ein. Schon jetzt vielen Dank.

Schorsch
Und wenn man meint, man hat das System überlistet, wird man vom System überlistet!

Upgrade auf OOo. 3.2 seit 17.02.10
WinXp Pro
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: FormattedField Methoden und Eigenschaften?

Beitrag von DPunch »

Aloha
schorsch21 hat geschrieben:Kannst du mir vielleicht noch sagen, warum hier noch zusätzlich Model eingefügt werden muss.
Nein, kann ich Dir leider nicht sagen.
Ich hab ehrlich gesagt auch aufgehört, mir bei OOo Basic über sowas Gedanken zu machen, ich nehme es einfach nur noch hin und bin froh, dass ich das Kapitel bald hinter mir habe ;)
schorsch21 hat geschrieben:Wenn ich einen Wert von "20" über meinen Dialog in das Feld eintrage erscheint er dort als "20,000" (als mit 3 Nachkommastellen), obwohl ich die Formatierung des Feldes wie folgt vorgenommen habe
Bei mir (OOo 3.11, Windows XP) funktioniert die Formatierung mit "#.##0 \g" einwandfrei, auch wenn ich per Makro neue Werte in das Feld eintrage.
Möglicherweise ein Problem der 2.4er Version?
schorsch21
*
Beiträge: 11
Registriert: Mo, 19.01.2009 23:35

Re: FormattedField Methoden und Eigenschaften?

Beitrag von schorsch21 »

Hallo DPunch,

nochmals Danke für die Hinweise. Zu Model hab ich noch was in einem Buch gefunden: Model ist wohl auch eine Eigenschaft der Kontrollelemente - EffectiveValue widerum dann eine Eigenschaft von Model. Naja - muss man auch nicht unbedingt wissen, Hauptsache es funktioniert.

Zu der Formatierung: Ich glaube, dann lad ich mir erst mal ein Update runter und probier es dann nochmal aus.

Schorsch
Und wenn man meint, man hat das System überlistet, wird man vom System überlistet!

Upgrade auf OOo. 3.2 seit 17.02.10
WinXp Pro
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FormattedField Methoden und Eigenschaften?

Beitrag von Stephan »

Model ist wohl auch eine Eigenschaft der Kontrollelemente
Nein, das Model eines Steuerelements ist ein Objekt und keine Eigenschaft.

Steuerelemente verfügen immer über 2 oder 3 Teil-Bereiche, das Programmkierhandbuch von Sun nennt diese "Aspekte":

1.
Das Model - das Modell eines Steuerelements - das ist der eigentliche Kern des Steuerelements

2.
Das View - die Ansicht einer Steuerelement - hier befinden sich Eigenschaften/Methoden welche die DArstellung des Steuerelements betreffen

3.
das Shape (NUR bei Formularen) - Steuerelemente werden auf Formularen wie besondere Grafiken verwaltet, dazu dient das Shape-Objekt des jeweiligen Steuerelements



GRuß
Stephan
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: FormattedField Methoden und Eigenschaften?

Beitrag von DPunch »

Das beantwortet natürlich immer noch nicht die Frage, warum man das FormattedField im Gegensatz zu den anderen Feldern (wie CurrencyField oder TimeField) über das Model ansprechen muss, um den Value zu setzen.
Mehr als einfach nur hinnehmen kann man das wohl nicht.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FormattedField Methoden und Eigenschaften?

Beitrag von Stephan »

Das beantwortet natürlich immer noch nicht die Frage, warum man das FormattedField im Gegensatz zu den anderen Feldern (wie CurrencyField oder TimeField) über das Model ansprechen muss, um den Value zu setzen
.

ich war mir nicht bewußt das das hier gefragt war, vielleicht habe ich das auch überlesen.

Du müßtest wohl auch ein (möglichst direkt lauffähiges) Beispiel zur Verfügung stellen um das zu diskutieren, auch da ich im Moment nicht ganz überblicke worauf sich das genau bezieht, denn hier im Thread ging es doch gerade um die Nichtverfügbarkeit von .Value und nur Verfügbarkeit von .EfectiveValue auch weiß ich nicht was Du 'allgemein' als Value verstehen willst.
Wobei ich nicht unbedingt Experte für Steuerelemente bin, sondern sich mein Wissen über StarBasic aus meiner beruflichen Tätigkeit sowie aus Erfahrungen bzgl. freiwilliger Hilfe, hier im Forum und anderswo, speist - was nur heißen soll ich weiß natürlich das am Besten was ich zufällig am Häufigsten programmieren muß und die 3 genannten Steuerelemente gehören z.B. nicht dazu.
Mehr als einfach nur hinnehmen kann man das wohl nicht.
Was meinst Du damit?

Zentral dokumentiert sind solche Dinge in der IDL-Referenz:
http://api.openoffice.org/docs/common/r ... le-ix.html

(zzgl. ggf. im Developerguide) und sofern sich Deine Frage um die eigentliche Implementierung de Objekt-Modells dreht, wäre das entweder über eine Anfrage auf der internationalen dev-api-Liste:
http://api.openoffice.org/servlets/Summ ... stName=dev

oder nötigenfalls über einen Issue zu klären.
Ob für diese Dinge hingegen auch öffentliche Spezifikationsdokumente verfügbar sind kann ich Dir leider nicht sagen, da ich mich damit noch nie beschäftigt habe.

Im Zweifel ist es im Übrigen immer richtig Kontakt zu den Entwicklern über die Projekt-Mailinglisten zu suchen (z.B. über genannte dev-api), weil auch hinsichtlich der API noch vergleichsweise stark an OOo entwickelt wird und es sein kann das Dokumentationen in der IDL-Referenz (etc.) bewußt unterbleiben wenn Dinge noch nicht abschliessend implemetiert sind bzw. manche Dinge, augenscheinlich aus Zeitmangel, nicht (vollständig) dokumentiert werden.



Gruß
Stephan
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: FormattedField Methoden und Eigenschaften?

Beitrag von DPunch »

Stephan hat geschrieben:Ich war mir nicht bewußt das das hier gefragt war, vielleicht habe ich das auch überlesen.
Es ging ursprünglich (nunja, nicht ursprünglich, sondern im letzten Abschnitt) darum:
schorsch21 hat geschrieben:Kannst du mir vielleicht noch sagen, warum hier noch zusätzlich Model eingefügt werden muss. Bei anderen Feldern kann doch auch direkt auf die Eigenschaft zugegriffen werden?
Diese Frage konnte ich ihm nicht beantworten, da das FormattedField in dieser Hinsicht von allen anderen Feldern abweicht.
Selbst bei einem CurrencyField, welches im Endeffekt ja auch nur ein formatiertes Feld ist, kann man den Wert (Value) ohne den Umweg über das Model setzen.
Darauf bezog sich mein letzter Einwurf.
Es ging also nicht um das Objekt-Modell an sich, sondern vielmehr um die... "Inkonsistenz" bei dem Ansprechen von Feldern im Dialog.

Ich hatte übrigens nicht damit gerechnet, dass Du so detailliert darauf eingehst, denn eigentlich war es mehr eine Feststellung als eine Frage.
Natürlich trotzdem danke für die Mühe, die ich Dir gemacht hab. ;)
Was meinst Du damit?
Dass ich persönlich den Kopf schon lange in den Sand gesteckt habe und mir mit solchen Dingen bei OOo Basic gar nicht mehr das Hirn zermartere.
Ich nehme es einfach nur noch hin und versuche, dieses Kapitel so bald wie möglich zu schliessen.
schorsch21
*
Beiträge: 11
Registriert: Mo, 19.01.2009 23:35

Re: FormattedField Methoden und Eigenschaften?

Beitrag von schorsch21 »

Melde mich auch nochmal zu dem Thema.

@ DPunch: Nachdem ich nun ein Update auf OOo3.2 vorgenommen habe muß ich leider mittteilen, das es daran nicht gelegen hat. Die Formatierung im FormattedField funktioniert leider immer noch nicht. Ist aber weiter nicht so tragisch - so bin ich jetzt programmtechnisch wenigstens wieder auf dem neuesten Stand.

@ Stephan: Zuerst einmal Danke für die (umfangreichen) Infos. Ich werde mir die entsprechende Literatur, bzw. die Links mal anschauen.
Du müßtest wohl auch ein (möglichst direkt lauffähiges) Beispiel zur Verfügung stellen um das zu diskutieren, auch da ich im Moment nicht ganz überblicke worauf sich das genau bezieht, denn hier im Thread ging es doch gerade um die Nichtverfügbarkeit von .Value und nur Verfügbarkeit von .EfectiveValue auch weiß ich nicht was Du 'allgemein' als Value verstehen willst.
Zum besseren Verständnis: es geht darum einem Steuerelement - in diesem Fall einem FormattedField - nach einer Berechnung einen bestimmten Zahlenwert zu übergeben. Dieser Wert, bzw. die Zahl wird ja gewöhnlich in der Value-Eigenschaft der Steuerelemente abgelegt, bzw. auch wieder über die Value-Eigenschaft ausgelesen. Das FormattedField verfügt aber nicht über eine solche Eigenschaft - hier kann über EffectiveValue auf den Wert, und Text auf den entsprechenden formattierten String zugegriffen werden. Leider funktioniert dies nicht ohne Model im Funktionsaufruf. DPunch meinte mit Value also diese Eigenschaft im allgemeinen.

Was ich noch zu dem Problem allgemein bemerken will: komisch ist, dass die Formatierung korrekt ist, wenn man den in der Text-Eigenschaft gespeicherten String ausliest (in meinem Fall z. B. "20 g", im FormattedField jedoch der Wert mit 3 Nachkommastellen angezeigt wird ("20,000").

Ich werde das Problem wohl so lösen, dass ich ein normales NumericField für den Wert verwende und die entsprechende Einheit dann rechts daneben per Label-Steuerelement platziere.
Und wenn man meint, man hat das System überlistet, wird man vom System überlistet!

Upgrade auf OOo. 3.2 seit 17.02.10
WinXp Pro
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: FormattedField Methoden und Eigenschaften?

Beitrag von eBayer »

Anderer Vorschlag:
- definiere die fraglichen Felder als Text und weise diesen Feldern den Wert mittels der Format-Funktion zu.
Damit bist Du auf der sicheren Seite, wenn Du mal andere Einheiten zu verarbeiten hast.
Bei einem Textfeld ist die Ausrichtung zudem auch kein Problem (rechts, links, zentriert)
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: FormattedField Methoden und Eigenschaften?

Beitrag von DPunch »

Ein andere Möglichkeit wäre es, einfach ein Währungsfeld zu benutzen und als Währungssymbol "g" zu benutzen.

Aber dass die Formatierung in Deinem formatierten Feld nicht funktioniert, wundert mich noch immer.

Probier mal die Datei im Anhang aus und schau, ob das Problem dort genauso auftritt.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: FormattedField Methoden und Eigenschaften?

Beitrag von Stephan »

DPunch meinte mit Value also diese Eigenschaft im allgemeinen.
GENAUSO h<atte ich es auch verstanden und weil das z.B. die FRage aufwirft was damit beim Time-FEld (das keine Value-Eigenschaft hat) gemeint sein könnte usw. usw. usw. fragte ich.

Sorry, ich bin mir des Problems insgesamt bewußt, nur habe ich schlicht keine Zeit alles in der Diskussion nachzufragen und keione Zeit mir selbst Beispiele zu erstellen (obwohl ich auch das könnte), mithin hatte ich die OPtion zu schweigen (und damit nicht zu helfen) oder anzubieten das wenn ein konkret funktionierendes Beispiel vorliegt ich dazu etwas sagen würde.
Ich finde es immer wieder erstaumlich was einem als Helfer hier ganz selbstverständlich an Zeitaufwand abgenötigt wird bzw, was für Vermutungen es auslöst wenn man nach einer minimalen Arbeitserleichterung fragt.



GRuß
Stephan
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: FormattedField Methoden und Eigenschaften?

Beitrag von DPunch »

Stephan hat geschrieben:und weil das z.B. die FRage aufwirft was damit beim Time-FEld (das keine Value-Eigenschaft hat) gemeint sein könnte usw. usw. usw. fragte ich.
Soweit ich das Überblicke, haben alle Felder eine Property namens "Text" und diejenigen, bei denen es Sinn macht, eine Property, die einen dem Sinn des Feldes entsprechenden Wert enthält.
Oft heisst diese direkt "Value", manchmal vielleicht auch "EffectiveValue" oder (wie im TimeField) eben "Time".
Leicht unterschiedliche Namen, aber gleicher Käse - sie repräsentiert den "echten" Wert des Feldes.
Dass über so etwas banales Verwirrung aufkommen würde, damit hatte ich Leben nicht gerechnet, daher bin ich auch nicht näher auf Deine Frage diesbezüglich eingegangen - sorry, falls diese Nachlässigkeit Dir gutgemeinte aber im Endeffekt dann doch unnötige Arbeit gemacht hat.
Antworten