Страница 1 из 2

редактирование в browse

Добавлено: 18 сен 2013, 10:55
s2176
Добрый день!
Хочу отредактировать запись в browse, но как переключиться в режим редактирования, не пойму.
Почему-то нет даже кнопки F4, зато есть F3 и F8, которые мне не нужны.
Текст:

interface CorrectReserve '' escclose, cyan;
var dat_form: date;
create view
as select arxshtrf.*, persons.fio
from arxshtrf, persons
where ((arxshtrf.tperson/==persons.nrec))
bounds barxshtr = dat_form/==arxshtrf.datan(noindex);
Parameters dat_form;

browse b_resView (,,sci147esc);
show at (,,,);
table arxshtrf;
fields
arxshtrf.tabn 'Таб.№': [8], protect;
persons.fio 'ФИО': [30], skip;
arxshtrf.Procpsb 'Отпуск по норме': [3.0,#Sumformat], protect;
arxshtrf.koldn 'Заработано дн.': [7.2,#Sumformat], protect;
arxshtrf.Summa0 'Использовано дн.': [4.0,#Sumformat], protect;
arxshtrf.sumnach 'СДЗ': [12.2,#Sumformat], protect;
end;
HandleEvent
cmInit :
{ pushbounds(tbbarxshtr);
}
cmInsert :
{ message('Insert');
}
cmDefault :
{ message('Default');
}
cmUpdateRecord :
{ message('UpdateRecord');
}
cmClose :
{ popbounds(tbbarxshtr); closeinterface(cmClose);
}
end;
end.

Re: редактирование в browse

Добавлено: 18 сен 2013, 13:26
s2176
Исправила
browse b_resView (,,sci147esc);
на
browse b_resView (,,sci1478esc);
кнопки теперь все правильные, но непонятно, какое событие возникает при нажатии на F4.

Re: редактирование в browse

Добавлено: 18 сен 2013, 13:29
oiko
cmedit

Re: редактирование в browse

Добавлено: 18 сен 2013, 13:33
s2176
Компилятор его не знает, говорит: такой команды нет

Re: редактирование в browse

Добавлено: 18 сен 2013, 13:51
s2176
Нашла значение константы cmEdit!
Ну до чего же в Галактике все "замечательно" документировано.... просто нет слов.

Re: редактирование в browse

Добавлено: 18 сен 2013, 14:04
edward_K
если событие не описано в vipprogr.chm значит оно описано в другом месте
в данном случае в inc\galnet.ccm

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

  cmEdit           = 2242;
- и значит это , что она используется в статус строке и не является системной.
В теории в статус строку можно напихать свои любые кнопки.
подключите уже galnet.inc при коомпиляции - будете меньше ребусов решать.
По сути все события в коде cmInit и так далее это просто константы, но вот явно лучше не указывать, поскольку они от версии к версии могут измениться..

Re: редактирование в browse

Добавлено: 18 сен 2013, 14:21
s2176
С константой разобралась, спасибо))
Теперь другой ребус.
Хочу поменять цвет таблицы после нажатия F4.
Вроде сделала еще один browse, который открывается по нажатию этой клавиши, но хочется изменить цвет и сохранить позицию курсора. Не пойму, где цвет задать.

Re: редактирование в browse

Добавлено: 18 сен 2013, 14:57
RAJAH
s2176 писал(а):Хочу поменять цвет таблицы
Подойдёт?

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

...
function istrue : boolean;
  {
     istrue := searchmarker(markmk,katmarsh.nrec,markin);
  }
...
panel pn1;
  browse tab1;
    fields
      katmc.name   'Наименование' : [50], {font = {color = if(istrue,13,0)}}, Protect;
      katmc.barkod 'Баркод'       : [18], {font = {color = if(istrue,13,0)}}, Protect;
  end;
...

Re: редактирование в browse

Добавлено: 18 сен 2013, 15:03
edward_K
обычно по cmEdit открывается окно (window, а в нем screen )- позиция при этом сохраняется автоматически, например в накладных или в любом справочнике, но можно и в текущем броусе сделать изменения.

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

  if PrChoice>0
  { //cfsSetProp(cfsGetCurrentContainerSelf,'Palette','CyanWindow')
    cfsSetProp(cfsGetCurrentContainerSelf,'Palette',1)
  }
  else
  {  // cfsSetProp(cfsGetCurrentContainerSelf,'Palette','BlueWindow') //  так не работает
    cfsSetProp(cfsGetCurrentContainerSelf,'Palette',0)
  }
и SetFormat(brEdit) - переключиться на броус для редактирования.
Значения свойства Palette можно зайдя в конфигурирование окна и посмотрев свойства самого фейса. Также вам придется отработать Esc, чтобы вернутся к выбору. Через окно проще.

Re: редактирование в browse

Добавлено: 18 сен 2013, 15:05
s2176
Rajah, спасибо, но не совсем то...
хотелось, чтобы при нажатии F4 полностью изменился цвет окна таблицы, как это происходит во многих "родных" галактических интерфейсах.

Re: редактирование в browse

Добавлено: 19 сен 2013, 07:32
s2176
Спасибо, edward_K, получилось! :smile:

Re: редактирование в browse

Добавлено: 28 ноя 2013, 14:06
s2176
В продолжение темы.
Нажимаю F4, цвет меняется,
но запись, на которой стоял курсор, становится первой (browse перерисовывается).
А хочется, чтобы при переходе в режим редактирования изменился только цвет.

Re: редактирование в browse

Добавлено: 02 дек 2013, 11:49
Masygreen
s2176 писал(а):В продолжение темы.
Нажимаю F4, цвет меняется,
но запись, на которой стоял курсор, становится первой (browse перерисовывается).
А хочется, чтобы при переходе в режим редактирования изменился только цвет.
PushPos и PopPos

Re: редактирование в browse

Добавлено: 06 дек 2013, 15:19
s2176
Наверное, лучше приведу основной текст.

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

interface CorrectReserve '' escclose,  cyan;
var dat_form: date;

create view
as select arxshtrf.*, persons.*, arx.*, pers.*
where ((arxshtrf.tperson/==persons.nrec and
  		nrec_pers/==pers.nrec 
      ))
bounds barxshtr = dat_form/==arxshtrf.datan(noindex)
;
!Просмотр
browse b_resView (,,sci14esc);
show at (,,,);
table arxshtrf;
  fields
  arxshtrf.tabn #3'Таб.№': [5], protect;
  persons.fio #3'ФИО': [30], skip;
  arxshtrf.Procpsb 'Норма дн.': [7.0,#IntSumformat], protect;
  arxshtrf.koldn 'Заработ. дн.': [9.2,#Sumformat], protect;
  arxshtrf.Summa0 'Использ. дн.': [9.0,#IntSumformat], protect;
  arxshtrf.sumnach #3'СДЗ': [9.2,#Sumformat], protect;
end;
!Редактирование
browse b_resEdit (,,sci178esc);
show at (,,,);
table arxshtrf;
  fields
  arxshtrf.tabn 'Таб.№': [5], protect, skip;
  persons.fio #3'ФИО': [30], skip;
  arxshtrf.Procpsb 'Норма дн.': [7.0,#IntSumformat];
  arxshtrf.koldn 'Заработ. дн.': [9.2,#Sumformat];
  arxshtrf.Summa0 'Использ. дн.': [9.0,#IntSumformat];
  arxshtrf.sumnach #3'СДЗ': [9.2,#Sumformat];
  arxshtrf.ostatpr 'Всего'#13'отпускых': [12.2,#BigSumformat], protect;
end;
tableevent table arxshtrf
 cmUpdateRecord:
 { if message('Вы уверены?',YesNo) = cmYes then update current arxshtrf;
 }
 cmDeleteRecord:
 { if message('Вы абсолютно уверены?',YesNo) = cmYes then delete current arxshtrf;
 }
 cmInsertRecord:
 { //message('InsertRecord');
   insert current arxshtrf;
 }
 cmSetDefault:
 { 
 }
end;

HandleEvent
cmInit:
{ pushbounds(tbbarxshtr);
  dat_form:=dGetTune('UP.DATOTCH');
  RunDialog('C_Common::GetFormNa', dat_form);
  yy:=year(dat_form); mm:=month(dat_form);
  SetTitle('Ввод/корректировка резерва за '+datetostr(dat_form,'DD/MM/YYYY'));
}
cmEdit:
{ setformat(b_resEdit); //Переключение на браузер b_resEdit, где уже есть возможность редактирования
  cfsSetProp(cfsGetCurrentContainerSelf,'Palette',0) 
}
cmClose:
{ popbounds(tbbarxshtr);
  closeinterface(cmClose);
}
end;
end.
по F4 я переключаюсь по сути на другой браузер b_resEdit. В результате меняется цвет, но запись, на которой стоял пользователь "улетает" вверх.
Курсор остается на ней, но для глаз удобнее, если бы при нажатии F4 произошло только изменение цвета (правда, я хотела при этом еще одну колонку добавить, но это не суть), и курсор остался в том же месте экрана, где был.

Re: редактирование в browse

Добавлено: 06 дек 2013, 15:41
edward_K
уберите все жесткие подцепки и боундс.
добавте в (( ))
dat_form == arxshtrf.datan and ( arxshtrf.tperson>0)
если уж так надо.
Если не поможет, тогда остается оперировать с одним browse и убрать SetFormat. Всего то нужно пробежаться по всем полям и разрешить им редактирование (хоть по ClearFieldOption /SetFieldOption), по enter соотв. запретить редактирование. Ну и может быть статус строку заменить.
Изменение статуса оформляйте в виде процедуры с параметром - ее надо будет запускать и в cminit.