partikam píše:Opověď:
ad 3) Ano, přesně takhle bych to chtěl zprovoznit. Mám prvek MENU o dvou řádcích a dále prvek datatimeedit (datatimeedit něco jako třetí položko MENU). Chci je ztotožnit a přecházet mezi prvky šipkami (up, down).
Váš požadavek není možné řešit pomocí prvku "Menu" / "MenuScreen". Bylo by však možné jej naprogramovat pomocí skriptu s využitím prvků "Label", "Key" a "Memory". Místo dvou řádků prvku "Menu" na obrazovku umístíte dva prvky "Label" s textem položek, které jste měl v prvku "Menu", dva prvky "Label" se znakem „>“, prvek "Memory" a tři prvky "Key". Obrazovka bude vypadat následovně:
|----------------------------------------------------|
|Label se znakem “>” Label s textem Menu |
|Label se znakem “>” Label s textem Menu |
|DateTimeEdit |
|----------------------------------------------------|
Prvkům "Key" přiřadíte klávesy “šipka nahoru”, “šipka dolů” a “Enter”. V události "OnKeyDown" prvků "Key", kterým je přiřazena klávesa “šipka nahoru” a “šipka dolů” budete dekrementovat/inkrementovat hodnotu prvku "Memory" (v rozsahu 0, 1 a 2). Na základě hodnoty prvku "Memory" pak budete rozhodovat, zda se má zobrazit prvek "Label" se znakem “>” u příslušného řádku textu nebo zda se má předat fokus prvku "DateTimeEdit". Ukázka skriptu pro stisk jednoho tlačítka by mohla vypadat následovně:
- Kód: Vybrat vše
event Key2_OnKeyDown()
if Memory1.Value < 2 then
Memory1.Value = Memory1.Value + 1;
EndIf;
if Memory1.Value == 0 then
Label1.Visible = true;
Label2.Visible = false;
Screen1.Focus();
Screen1.Refresh();
EndIf;
if Memory1.Value == 1 then
Label1.Visible = false;
Label2.Visible = true;
Screen1.Focus();
Screen1.Refresh();
EndIf;
if Memory1.Value == 2 then
Label1.Visible = false;
Label2.Visible = false;
DateTimeEdit1.Focus();
Screen1.Refresh();
EndIf;
end;
Třetí prvek "Key", který má přiřazenu klávesu "Enter" pak bude sloužit pro přechod na požadovanou obrazovku v případě, kdy budete chtít “simulovat” funkci prvku "Menu". Opět vyberte událost "OnKeyDown". Do ní však tentokráte musíte naprogramovat přechod na požadovanou obrazovku v závislosti na hodnotě prvku "Memory". Skript by tedy mohl vypadat následovně:
- Kód: Vybrat vše
event Key3_OnKeyDown()
if Memory1.Value == 0 then
Screen2.Show();
EndIf;
if Memory1.Value == 1 then
Screen3.Show();
EndIf;
end;
partikam píše:Dobrý den,
mám nadefinovanou obrazovku, kde je prvek MENU a vedle každého řádku chci mít bitswitchviw, abych věděl, která maximální rychlost je povolená. Jak udělám to aby se to "scrolovalo". Stotožnit řádek MENU s bitswitchview??
Zde bych doporučil nevyužívat prvek "BitSwitchView", ale možnost dynamicky definovat texty v jednotlivých položkách prvku "Menu". Při editaci prvku "Menu" máte možnost místo textu jednotlivých položek zadat řádek matice, ve které máte uložen požadovaný text pro zobrazení. V matici, jejíž řádek takto prvku "Menu" zadáte, budete mít nadefinován statický text, který chcete v menu zobrazit a k němu budete (na vybraný řádek matice) dynamicky přidávat požadovaný text v závislosti na hodnotě bitu. Ve výsledku tak budete mít v jednom řádku matice jak statický text položky "Menu", tak váš text, který se bude měnit v závislosti na hodnotě požadovaného bitu.