Spojistost funkci

Toto je hlavní technické fórum pro diskusi o problémech při vytváření PROMOTIC aplikací a jejich řešení.

Spojistost funkci

Postby Majkl » Tue 01. Dec 2020 8:59:40

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
Majkl
 
Posts: 2
Joined: Mon 30. Nov 2020 15:41:19

Re: Spojistost funkci

Postby albiman » Wed 02. Dec 2020 10:15:01

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.

.
albiman
 
Posts: 26
Joined: Tue 12. Feb 2013 21:51:12

Re: Spojistost funkci

Postby Majkl » Wed 02. Dec 2020 12:59:55

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
Majkl
 
Posts: 2
Joined: Mon 30. Nov 2020 15:41:19

Re: Spojistost funkci

Postby Pavel Klimíček » Thu 07. Jan 2021 11:18:30

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
Attachments
CF.jpg
CF.jpg (209.91 KiB) Viewed 8612 times
Pavel Klimíček
 
Posts: 73
Joined: Thu 13. Dec 2012 15:35:59


Return to Nevím jak...

Who is online

Users browsing this forum: No registered users and 2 guests

cron