Checkpoint

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Checkpoint

Сообщение korvanakorvana »

Ребята привет. скажите пожалуйста если можно с приерчиком как в галктике реализовать checkpoint. Необходимо установить в мой интерфейс флажок а вот как с ними работать в Галактике не нашла((.. помогите плиз:)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Checkpoint

Сообщение edward_K »

может быть checkbox?
[.] 1`
[.] 2`
или
(.) 1`
(.) 2`
?
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Re: Checkpoint

Сообщение korvanakorvana »

edward_K писал(а):может быть checkbox?
[.] 1`
[.] 2`
или
(.) 1`
(.) 2`
?

ага checkbox
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Checkpoint

Сообщение edward_K »

то есть 1 вариант. (2 - radiobutton)
Заводите переменную типа word. Объявляете ее в fields один раз.
tp_option :word;

fields
tp_option :noprotect;

Как на экране уже написал. Поле ввода будет автоматически выровнено под самое длинное значение списка, но лучше подравнять "`". Другие поля что справа или ниже от вашего списка в fields ниже.
где нибудь проверяете по кратности степени 2. 1 флаг -1, 2 - 2, 3 -4, например так if (tp_options and 4)>0 ... .Ну еще есть функции блокирующие изменение какого-нибудь флага. Сбросить какой то флаг програмно tp_option:=tp_option-if((tp_option and 4)>0,4,0) ну или xor. Для установки tp_option:=tp_option or 4.
Alex_R
Сообщения: 10
Зарегистрирован: 24 июн 2010, 13:45

Re: Checkpoint

Сообщение Alex_R »

Мой первый опыт работы с checkbox может чемто поможет

Код: Выделить всё

////////////////////////////////////////////////////////////интерфейс настроек отчета
interface nastr_rep cyan;
Show at(1,1,41,12);
var
mMc, mMk, mMs: longInt;
indexNo : longInt;
z       : comp;
i       : comp;
BDate   : Date;
CDate   : Date;
c1, c2, c3 : boolean;
aCheckBoxButton : Byte;
_oldValue : word;

parameters mMk,mMs,indexNo,BDate,CDate;

create view
as select
  *
from
  ChooseKontr,
  katorg,
  ChooseNomen,
  ChooseSklad
!  ,Katmc
;
//------------------------------------------------------------
Screen s1;
Show at(,,39,10)

FIELDS
  BDate:['DD/MM/YYYY'], noProtect;
  CDate:['DD/MM/YYYY'], noProtect;
  aCheckBoxButton:['.'], noProtect;

buttons
cmBBB;

<<
   ОТЧЕТ О РЕАЛИЗАЦИИ ТОВАРОВ И УСЛУГ
ПО ДОКУМЕНТАМ ОСНОВАНИЯМ ОФОРМЛЕННЫМ
   с .@@@@@@@@@@@@  по .@@@@@@@@@@@@

            `Фильтры по:`
            [.] Контрагентам`
            [.] Номенклатуре`
            [.] складам`

         <.Сформировать отчет.>
>>
end;

handleevent

cmInit:{
Bdate := cur_date;
Cdate := cur_date;
Delete all ChooseKontr;
Delete all ChooseNomen;
_oldValue := aCheckBoxButton;
}

cmCheckField :{
if (CurField() = #aCheckBoxButton)
   {
      case (aCheckBoxButton xor _oldValue) of
         1: {
             cfsgetprop('ci_S1_aCheckBoxButton_Контрагентам','Checked', c1);
             if c1=true
              {
               IF RunInterface ('CKontr', mMc,indexNo) = cmCancel THEN
               {
               cfssetprop('ci_S1_aCheckBoxButton_Контрагентам','Checked', false);
               aCheckBoxButton := _oldValue;
                   mMc:=initmarker('Mc',8,10,10);
                   clearmarker(mMc);
                   DoneMarker(mMc,'Mc');
               };
              } else {
                      delete all ChooseKontr;
                      mMc:=initmarker('Mc',8,10,10);
                      clearmarker(mMc);
                      DoneMarker(mMc,'Mc');
                      };
            }
         2: {
             cfsgetprop('ci_S1_aCheckBoxButton_Номенклатуре','Checked', c2);
             if c2=true
              {
               IF RunInterface ('CNomen', mMk) = cmCancel THEN
               {
               cfssetprop('ci_S1_aCheckBoxButton_Номенклатуре','Checked', false);
               aCheckBoxButton := _oldValue;
                   mMk:=initmarker('Mk',8,10,10);
                   clearmarker(mMk);
                   DoneMarker(mMk,'Mk');
               };
              } else {
                     delete all ChooseNomen;
                     mMk:=initmarker('Mk',8,10,10);
                     clearmarker(mMk);
                     DoneMarker(mMk,'Mk');
                     };
              mMk:=initmarker('Mk',8,10,10);
!              message('2 Count mMk' + GetMarkerCount(mMk), warning );
            }
         4: {
!            message ('3', warning );// Складам
            cfsgetprop('ci_S1_aCheckBoxButton_Складам','Checked', c3);
             if c3=true
              {
               IF RunInterface ('CSklad', mMs) = cmCancel THEN
               {
               cfssetprop('ci_S1_aCheckBoxButton_Складам','Checked', false);
               aCheckBoxButton := _oldValue;
                   mMs:=initmarker('Ms',8,10,10);
                   clearmarker(mMs);
                   DoneMarker(mMs,'Ms');
               };
              } else {
                     delete all ChooseSklad;
                     mMs:=initmarker('Ms',8,10,10);
                     clearmarker(mMs);
                     DoneMarker(mMs,'Ms');
                     };
              mMs:=initmarker('Ms',8,10,10);
!              message('3 Count mMs' + GetMarkerCount(mMs), warning );
            }
      end;
     _oldValue := aCheckBoxButton;
   }
};

cmClose :{
};
cmCancel :{
};

cmBBB:{
if RecordsInTable(tnChooseKontr)=0
  {
    mMc:=initmarker('Mc',8,10,10);
    clearmarker(mMc);
    _Loop Katorg
    {
    Insertmarker(mMc, Katorg.nrec);
    }
if (GetMarkerCount(mMc)>0) then
{
  delete all ChooseKontr;
  reinittable(#ChooseKontr, fmMemory+fmAutoLoad);
  z := 0;
  for(i:=0; i < GetMarkerCount(mMc); i:=i+1)
  {
    IndexNo := i;
      if (GetMarker(mMc,IndexNo,z)) then
      {
      Insert ChooseKontr set NREC:=z;
      }
  }
  mtChangeRefCount(#ChooseKontr,1);
} else {message ( 'Не выбрано ни одного контрагента!', warning )};
  }

/*
if RecordsInTable(tnChooseNomen)=0
  {
    mMk:=initmarker('Mk',8,10,10);
    clearmarker(mMk);
    _Loop Katmc
    {
    Insertmarker(mMk, Katmc.nrec);
    }
if (GetMarkerCount(mMk)>0) then
{
  delete all ChooseNomen;
  reinittable(#ChooseNomen, fmMemory+fmAutoLoad);
  z := 0;
  for(i:=0; i < GetMarkerCount(mMk); i:=i+1)
  {
    IndexNo := i;
      if (GetMarker(mMk,IndexNo,z)) then
      {
      Insert ChooseNomen set NREC:=z;
      };
  }
  mtChangeRefCount(#ChooseNomen,1);
} else {message ( 'Не выбрано ни одного контрагента!', warning )};
  }
*/
CloseInterface(cmDefault);
};

cmDone:{
DoneMarker(mMc,'Mc');
DoneMarker(mMk,'Mk');
DoneMarker(mMs,'Ms');
}
end;
end.
////////////////////////////////////////////////////////////интерфейс настроек отчета AND

Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Checkpoint

Сообщение Vik »

Все же, самый простой и правильный способ тот, который edward_K описал, мне кажется.
ahv
Новичок
Сообщения: 21
Зарегистрирован: 15 дек 2009, 07:52

Re: Checkpoint

Сообщение ahv »

а еще лучше:

Код: Выделить всё

#define CHECKBOX_OPTION1 00000001b
#define CHECKBOX_OPTION2 00000010b
#define CHECKBOX_OPTION3 00000100b

if (aCheckBox and CHECKBOX_OPTION2) > 0
  // опция выбрана
Ответить