![Profile photo of Andreas Pfeiffer](https://www.omnis.net/community/wp-content/uploads/avatars/15/58453e9b65bfd-bpfull.png)
Andreas Pfeiffer
Forum Replies Created
-
Andreas Pfeiffer
AdministratorDecember 11, 2023 at 10:38 am in reply to: $currentlayoutbreakpoint in a jsFormHi Martin,
override the $event method of the subform like this:
On evLayoutChanged
Calculate iLayout as pBreakpoint ## iLayout is an integer instance variable.
Then you could add a method to the subform that returns that value:
$getLayout
Quit Method iLayout
So if you want to know in which layout the subform is from your main form you can then send a message to the subform like this:
Do $cinst.$objs.mySubformField.$subinst().$getLayout() Returns lSubformLayout
However I wonder why the main form supposed to bother in which layout breakpoint the subform is. Shouldn’t it organise by itself?
I hope this helps.
Best,
Andreas
-
Hallo Herr Köhler,
Zu Ihrer bisherigen Frage:
>>Im Moment, „nur“, den Hintergrund eines Textfeldes.
Bauen Sie doch einfach hinter Ihrem Label Control eine Animation ein und setzen Sie $backalpha des Textfeldes auf 0. Die Animation könnten Sie mit einer HTML Komponente einbinden.
————
Zu Ihrer neuen Frage:
wie ich das sehe, fragen Sie ob man Methoden ausgliedern soll. Das ist natürlich sinnvoll. Insbesondere sollte man nicht alles im Form selber programmieren sondern je nach Verwendungszweck in Table Klassen, Object Klassen oder auch Remote Object Klassen.
In Ihrem konkreten Anwendungsfall verstehe ich allerdings nicht warum Sie die $text Eigenschaft des Label Controls zuweisen anstatt einfach eine Instanzvariable verwenden und dieser der Eigenschaft $dataname zuweisen?
Mit freundlichen Grüßen
Andreas H. Pfeiffer
-
Vielleicht ist das $backpattern ja nicht korrekt gesetzt. Versuchen Sie zunächst die Farbe im Design zu ändern. Können Sie dort die $backcolor ändern, dann sollte es auch im Code klappen. Eventuell geht ja $forecolor.
Ich verstehe allerdings immer noch nicht warum Sie da unbedingt JavaScript benötigen. Ich würde das zunächst mal in Omnis versuchen.
Do $cinst.$objs.Top.$backcolor.$assign(kRed)
-
Hallo Herr Köhler,
das verstehe ich nicht. Sie können JavaScript und Omnis Notationen in einer Methode mischen wie in Ihrem Farbbeispiel.
Mit freundlichen Grüßen
Andreas H. Pfeiffer
-
Hello Uwe,
I do not think that will work and this might be for two reasons. A list can have more than one line and therefore when having a list you will always need to tell which line you want the data from. But even then I do not think this will work.
However to achieve a one liner you could encapsulate the method inside the object:
1. make a new method in the table class, i.e. $getName
2. this method should receive your ID and possibly the line number (if it is not a row).
3. This could be the code:
Do $cinst.$load(pIdent)
Quit method $cinst.[pLine].name
4. Then the code to call this would be like:
Do myList.$getName(RecID,LineNo) Returns myValue
or
Calculate myValue as myList.$getName(RecID,LineNo)
Does that help?
Best,
Andreas
-
Hi Phil,
Yes – please contact the support for this.
Best,
Andreas
-
Hallo Herr Köhler,
um welches Objekt/Control handelt es sich denn und wie wollen Sie es animieren?
Mit freundlichen Grüßen
Andreas H. Pfeiffer
-
Ich weiß ja immer noch nicht was Sie eigentlich genau erreichen wollen. Aber vielleicht hilft es ja wenn Sie eine Omnis HTML Komponente nehmen. Der können Sie einen CSS Namen mitgeben und über diesen können Sie das Objekt wieder via JavaScript referenzieren.
-
also z.B.
Calculate myField as $cinst.$objs.top
Schreiben Sie dann “debugger;” in einen JavaScript Befehl:
JavaScript: debugger;
.. und sorgen Sie dafür, dass die Entwicklertools des Browsers offen sind. Damit lässt sich dann der Code im Browser debuggen. Dann sollte der WebBrowser bei dem Befehl “debugger;” stehen bleiben und Sie können sich die Referenzen ansehen.
Das ist auch ganz gut in einer Technical Note erklärt: https://www.omnis.net/developers/resources/technotes/tnjs0006.jsp
-
Dann benötigen Sie eine Referenz auf das entsprechende Feld ..
-
Hallo Herr Köhler,
jetzt haben wir uns ihr Bild noch mal genauer angesehen. Wollen Sie in einer client-execute Methode eine Omnis Variable ansprechen?
Dazu legen Sie bitte eine lokale Variable an in der Methode und sprechen diese dann im JS Code an. Beachten Sie aber bitte, dass Omnis “red” nicht als Farbe akzeptieren wird sondern es wird eine Nummer benötigt. Dazu gibt es ja in Omnis die RGB und RGBA Funktion.
Mit freundlichen Grüßen
Andreas H. Pfeiffer
-
This reply was modified 7 months, 2 weeks ago by
Andreas Pfeiffer.
-
This reply was modified 7 months, 2 weeks ago by
-
Hallo Herr Köhler,
Variablen in Omnis sollten Sie nicht von außen ansprechen. Das widerspricht jedem objektorientierten Programmieransatz. Damit würden Sie die Kapselung aufbrechen. Den einzigen Weg den ich hier sehe ist, etwas in den localstorage zu schreiben und es dann wieder auszulesen. Dazu gibt es einen Client Command in Omnis mit dem man sowohl schreiben als auch lesen kann. Siehe auch: https://www.omnis.net/developers/resources/onlinedocs/WebDev/02jsremoteforms.html#client-preferences
Was genau haben Sie denn vor?
Mit freundlichen Grüßen
Andreas H. Pfeiffer
-
Hallo Herr Köhler,
wenn Sie die HTML Tags meinen in den Posts – das habe ich bereits an die Entwickler des Forums weiter geleitet.
Mit freundlichen Grüßen
Andreas H. Pfeiffer
-
Hello Heiko,
I am not sure what you are trying to achieve here.
However if you want to use CSS formatting in your Omnis JS app you could use your own CSS class within the user.css file and assign the CSS class name to the $cssclassname property of your Omnis component. Note that when you want to override an Omnis property it might be required to use !important in some cases.
See also here: https://www.omnis.net/developers/resources/onlinedocs/WebDev/03jscomps.html#custom-css-styles
I hope this helps.
Best,
Andreas
-
Hi Uwe,
great! Good idea to put it into the super class.
Do not forget to consider the line number. If no current line is set it will be null otherwise.
Best,
Andreas