Obrazovky

Volná diskuse k projektu AMiTsys Junior

Re: Obrazovky

Příspěvekod riha » stř 06. dub 2011 12:45:25

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.
Zbyněk Říha
Technická podpora (support@amit.cz)
AMiT spol. s r.o.
Uživatelský avatar
riha
 
Příspěvky: 375
Registrován: čtv 10. dub 2008 12:46:00

Předchozí

Zpět na AMiTsys Junior

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků