JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

Динамические индикаторы

- примеры
Примеры на языке JS+
Отображение различных динамических индикаторов на базе визуальных компонентов TGauge и TProgressBar.
Пример 1 (JS+)
var tmr_Busy=false;

// Главная форма
frm=new TForm();
frm.Caption="JS+ - примеры Динамические индикаторы";
frm.Width =525;
frm.Height=375;

// Строка состояния
stb=new TStatusBar(frm);
stb.SimpleText=' Нажмите кнопку "Старт"';

// Кнопка
btn=new TButton(frm);
btn.Caption="Старт";
btn.Left=frm.ClientWidth-btn.Width-10;
btn.Top =stb.Top-btn.Height-10;
btn.OnClick=btn_Click;

// Панель закладок
pgc=new TPageControl(frm);
pgc.SetBounds(10,10,frm.ClientWidth-20,btn.Top-20);

for (i=0;i<5;i++) {
  // Закладка
  tsh=new TTabSheet(pgc);

  // Индикатор на закладке
  gau=tsh.cmpTag=new TGauge(tsh);
  gau.BorderStyle=bsNone;
  gau.ShowText=true;

  switch (i) {
    case 0: tsh.Caption="HorizontalBar";
            gau.Kind=gkHorizontalBar;
            gau.Width =tsh.ClientWidth-30;
            gau.Height=tsh.TextHeight("0")+8;
            gau.Left=(tsh.ClientWidth -gau.Width )/2;
            gau.Top =(tsh.ClientHeight-gau.Height)/2;
            gau.BorderStyle=bsSingle;
            break;

    case 1: tsh.Caption="Needle";
            gau.Kind=gkNeedle;
            gau.Width =tsh.ClientHeight-30;
            gau.Height=gau.Width/2;
            gau.Left=(tsh.ClientWidth -gau.Width )/2;
            gau.Top =(tsh.ClientHeight-gau.Height)/2;
            break;

    case 2: tsh.Caption="Pie";
            gau.Kind=gkPie;
            gau.Width=gau.Height=tsh.ClientHeight-30;
            gau.Left=(tsh.ClientWidth-gau.Width)/2;
            gau.Top =15;
            break;

    case 3: tsh.Caption="Text";
            gau.Kind=gkText;
            gau.Width =tsh.TextWidth("100%")*2;
            gau.Height=tsh.TextHeight("0")+8;
            gau.Left=(tsh.ClientWidth -gau.Width )/2;
            gau.Top =(tsh.ClientHeight-gau.Height)/2;
            gau.BorderStyle=bsSingle;
            break;

    case 4: tsh.Caption="VerticalBar";
            gau.Kind=gkVerticalBar;
            gau.Width =tsh.TextWidth("100%")+8;
            gau.Height=tsh.ClientHeight-30;
            gau.Left=(tsh.ClientWidth -gau.Width )/2;
            gau.Top =(tsh.ClientHeight-gau.Height)/2;
            gau.BorderStyle=bsSingle;
  }
}

// Таймер
tmr=new TTimer(frm);
tmr.Interval=50;
tmr.OnTimer=tmr_Timer;

frm.ShowModal();

// Обработчик события OnClick
function btn_Click(btn)
{
  var stb_Str=' Нажмите кнопку "';

  switch (btn.numTag=1-btn.numTag) {
    case 0: btn.Caption="Старт";
            tmr.Enabled=false;
            break;

    case 1: btn.Caption="Стоп";
            tmr.Enabled=true;
  }

  stb.SimpleText=stb_Str+btn.Caption+'"';
}

// Обработчик события OnTimer
function tmr_Timer(tmr)
{
  if (tmr_Busy)
    return;
  tmr_Busy=true;

  var gau=pgc.Pages[pgc.ActivePageIndex].cmpTag;

  switch (gau.Progress) {
    case gau.MinValue: gau.numTag= 1; Sleep(200); break;
    case gau.MaxValue: gau.numTag=-1; Sleep(200);
  }

  gau.Progress+=gau.numTag;
  tmr_Busy=false;
}
Пример 2 (JS+)
var VSW=GetSystemMetrics(SM_CXVSCROLL);

// Главная форма
frm=new TForm();
frm.Caption="JS+ - примеры Динамические индикаторы";
frm.Width =525;
frm.Height=375;

// Строка состояния
stb=new TStatusBar(frm);
stb.SimpleText=' Нажмите кнопку "Старт"';

// Кнопка
btn=new TButton(frm);
btn.Caption="Старт";
btn.Left=frm.ClientWidth-btn.Width-10;
btn.Top =stb.Top-btn.Height-10;
btn.OnClick=btn_Click;

// Переключатель
chb=new TCheckBox(frm);
chb.Text="Свойство Smooth";
chb.Width=chb.TextWidth(chb.Text)+VSW;
chb.Left=10;
chb.Top =btn.Top+(btn.Height-chb.Height)/2;
chb.OnClick=chb_Click;

// Панель закладок
pgc=new TPageControl(frm);
pgc.SetBounds(chb.Left,10,frm.ClientWidth-20,btn.Top-20);

// Закладки
for (i=0;i<2;i++) {
  // Закладка
  tsh=new TTabSheet(pgc);

  // Индикатор на закладке
  prb=tsh.cmpTag=new TProgressBar(tsh);
  prb.Step=2;

  switch (i) {
    case 0: tsh.Caption="Горизонтальный";
            (pbh=prb).Orientation=pbHorizontal;
            prb.Width =prb.Max=tsh.ClientWidth-30;
            prb.Height=25;
            prb.Left=(tsh.ClientWidth -prb.Width )/2;
            prb.Top =(tsh.ClientHeight-prb.Height)/2;
            break;

    case 1: tsh.Caption="Вертикальный";
            (pbv=prb).Orientation=pbVertical;
            prb.Width =25;
            prb.Height=prb.Max=tsh.ClientHeight-30;
            prb.Left=(tsh.ClientWidth -prb.Width )/2;
            prb.Top =(tsh.ClientHeight-prb.Height)/2;
  }
}

// Таймер
tmr=new TTimer(frm);
tmr.Interval=10;
tmr.OnTimer=tmr_Timer;

chb_Click(chb);
frm.ShowModal();

// Обработчик события OnClick переключателя
function chb_Click(chb)
{
  pbh.Smooth=
  pbv.Smooth=(chb.State==cbChecked) ? true : false;
  ProcessMessages();
}

// Обработчик события OnClick кнопки
function btn_Click(btn)
{
  var stb_Str=' Нажмите кнопку "';

  switch (btn.numTag=1-btn.numTag) {
    case 0: btn.Caption="Старт";
            tmr.Enabled=false;
            break;

    case 1: btn.Caption="Стоп";
            tmr.Enabled=true;
  }

  stb.SimpleText=stb_Str+btn.Caption+'"';
}

// Обработчик события OnTimer
function tmr_Timer(tmr)
{
  var prb=pgc.Pages[pgc.ActivePageIndex].cmpTag,p=prb.Position;

  if (p==prb.Max)
    p=prb.Min;
  else
  if ((p+=prb.Step)>prb.Max)
    p=prb.Max;

  prb.Position=p;
}
JS+Руководство пользователя
Адрес этой страницы: https://jsplus.ru/MANUAL/JSPlus/Example/TGauge.htm
© 2024-2025,