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

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

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

s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение 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.
Кто сказал, что бесполезно биться головой об стену?!
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение s2176 »

Исправила
browse b_resView (,,sci147esc);
на
browse b_resView (,,sci1478esc);
кнопки теперь все правильные, но непонятно, какое событие возникает при нажатии на F4.
Кто сказал, что бесполезно биться головой об стену?!
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение oiko »

cmedit
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение s2176 »

Компилятор его не знает, говорит: такой команды нет
Кто сказал, что бесполезно биться головой об стену?!
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение s2176 »

Нашла значение константы cmEdit!
Ну до чего же в Галактике все "замечательно" документировано.... просто нет слов.
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

если событие не описано в vipprogr.chm значит оно описано в другом месте
в данном случае в inc\galnet.ccm

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

  cmEdit           = 2242;
- и значит это , что она используется в статус строке и не является системной.
В теории в статус строку можно напихать свои любые кнопки.
подключите уже galnet.inc при коомпиляции - будете меньше ребусов решать.
По сути все события в коде cmInit и так далее это просто константы, но вот явно лучше не указывать, поскольку они от версии к версии могут измениться..
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение s2176 »

С константой разобралась, спасибо))
Теперь другой ребус.
Хочу поменять цвет таблицы после нажатия F4.
Вроде сделала еще один browse, который открывается по нажатию этой клавиши, но хочется изменить цвет и сохранить позицию курсора. Не пойму, где цвет задать.
Кто сказал, что бесполезно биться головой об стену?!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

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

Сообщение 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;
...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение 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, чтобы вернутся к выбору. Через окно проще.
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение s2176 »

Rajah, спасибо, но не совсем то...
хотелось, чтобы при нажатии F4 полностью изменился цвет окна таблицы, как это происходит во многих "родных" галактических интерфейсах.
Кто сказал, что бесполезно биться головой об стену?!
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение s2176 »

Спасибо, edward_K, получилось! :smile:
Кто сказал, что бесполезно биться головой об стену?!
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение s2176 »

В продолжение темы.
Нажимаю F4, цвет меняется,
но запись, на которой стоял курсор, становится первой (browse перерисовывается).
А хочется, чтобы при переходе в режим редактирования изменился только цвет.
Кто сказал, что бесполезно биться головой об стену?!
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

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

Сообщение Masygreen »

s2176 писал(а):В продолжение темы.
Нажимаю F4, цвет меняется,
но запись, на которой стоял курсор, становится первой (browse перерисовывается).
А хочется, чтобы при переходе в режим редактирования изменился только цвет.
PushPos и PopPos
Время ведет!
s2176
Местный житель
Сообщения: 473
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Новосибирск

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

Сообщение 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 произошло только изменение цвета (правда, я хотела при этом еще одну колонку добавить, но это не суть), и курсор остался в том же месте экрана, где был.
Кто сказал, что бесполезно биться головой об стену?!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

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