Page 1 of 1

Spojistost funkci

PostPosted: Tue 01. Dec 2020 8:59:40
by Majkl
Ahoj,

předem se omlouvám za hloupý dotaz, jsem v promoticu absolutní laik, tak chci pochopit, jak propojit určité funkce a kde psát aktuální script.

Potřebuji jen na začátek si vykreslit hodnoty Celsia na Far. (viz. obrázek. vytvořeno ve VS)
Image
Vytvořil jsem si 3x jako nový objekt číslo (PmNumber) jakož to čislo1, čislo2, výsledek.
V editačním rozhraním jsem si vytvořil podobné GUI, jak je na obrázku. 2x edit box (reálné číslo) a táhlo se stupnicí a s editací, vodorovně.
V prvním edit boxu jsem přiřadil vazbu na vlastnost objektu právě to vytvořeno číslo 1, pro druhy edit box číslo 2 a pro ten slider výsledek.

A teď nevím, kde tento script psát, do Vysledek(PmNumber)/+udalosti/onValueWrite a zde psát script a nebo přímo do editačního rozhraní Slider/Události/OnFocusIn

Nevím zda mám proměnné špatně propojené, nebo kde pišu špatně script, abych pochopil, jak to funguje a začal s tím pracovat.

Děkuji za radu a váš čas
Pěkný den

Re: Spojistost funkci

PostPosted: Wed 02. Dec 2020 10:15:01
by albiman
Zdravím.
Předpokládám, že PmNumber jste vytvořil v aplikaci jako PmaNumber, nyní je spíše doporučováno používat objekt PmData a tam používat proměnné (je tam více možností a vlastností než u PmaNumber).
V obrazu je nejlepší navázat proměnnou na daný prvek (např. proměnné celsius a farnheit) přes záložku proměnné grafického prvku např. PmgWEdit.
https://ctrlv.cz/xadV
Pak do vlastnosti text přidat vazbu na vlastnost grafického prvku viz vzor:
Code: Select all
$db.GP(0,"#vars/celsius","Value",0)

Pak si následně na záložce Metody (stále jsme u grafického prvku) vytvořit metodu kde bude vytvořený přepočet, např.:
Code: Select all
var C = pMe.Items("#vars/celsius").Value;
var F = C * 1.8 +32;
pMe.Items("#vars/farnheit").Value = F;


tuto metodu pak volat v událostech grafického prvku, např. OnDataEditAccept nebo případně OnRefresh:
Code: Select all
pMe.Methods.fc_C_to_F();


Pak se při změně nebo refreshi přepočítá hodnota z celsia do farnheita a zapíše se pře datovou vazbu do proměnné farnheit.
To je pro případ políčka PmgWEdit - celsius.
Pokud potřebujete přepočet pouze jen na grafické stránce panelu, není potřeba použivat proměnné PmaData / PmaNumber a používejte datové vazby mezi grafickými prvky.

V aplikaci pravým kliknutím je k dispozici průvodce skriptem, pomůže zjistit cestu k objektům Pma i Pmg.

Snad jsem to popsal srozumitelně. :D

P.S.: Doporučuji si prohlédnout vzorové aplikace.

.

Re: Spojistost funkci

PostPosted: Wed 02. Dec 2020 12:59:55
by Majkl
Zdravím,

Děkuji za odpověď.

Tak PmData jsem bral jako durhou variantu, akorát jsem nevěděl jaký je mezi tím rozdíl oproti PmNumber.
Jinak jsem postupoval, tak jak jste psal.
Vložil jsem si do Celsia(PmiText) dvě proměnné a následně v tomto stejném grafickém rozhraní na PmiText, jsem přidal "vlastnost graf. prvku" #vars/celsius.
Potom jsem si vytvořil metodu C_to_F a do ni vytvořil přepočet.
Code: Select all
dim celsius
dim farnheit
set celsius = Pm("/#vars/celsius")
set farnheit = Pm("#vars/farnheit")
farnheit.Value = celsius.Value * 1.8 +32

a nebo jsem i zkoušel:
Code: Select all
dim celsius,farnheit 
celsius = Pm.Items("#vars/celsius").Value

farnheit = celsius * 1.8 +32
Pm.Items("#vars/farnheit").Value = F


Pokud jsem pochopil správně, tak metodu mám vytvořit v PmiSlideru, tedy tam, kde budu měnit hodnoty a následně zavolat tuto metodu u obou Pmitext.
https://ctrlv.cz/fu1k (Používám vbscript, tak příkazy z JavaScript mi nejdou např. var.)
Metodu volám jako:
Code: Select all
pMe.Methods.Pm("C_to_F")


Asi na tom bude něco špatně. Protože mi to nejde :D
Jinak na vzorových aplikací se učí teda nejlépe, kde bych je teda našel ? to by mi pomohlo.

Jinak Děkuji za váš čas

Re: Spojistost funkci

PostPosted: Thu 07. Jan 2021 11:18:30
by Pavel Klimíček
Dobrý den
Problém lze vyřešit jednoduše takto:
V objektu PmaData je proměnná typu double nazvaná "temperature" a představuje hodnotu ve °C.
V obraze na tuto proměnnou je vazbou PP přímo napojen objekt PmgNumber pro zobrazení hodnoty ve °C a také ovládání hodnoty pomocí táhla.
Grafický objekt zobrazující hodnotu ve °F je napojen pomocí vazby "E", kde proměnná "v1" je napojena PP vazbou na proměnnou "temperature" a v "JavaScript výrazu" je tento zápis:
Code: Select all
v1*1.8+32