Страница 1 из 1
Динамичный интерфейс без перекомпиляции
Добавлено: 29 окт 2003, 10:41
Serges
Задача: сделать интерфес выбора должностных лиц, подписывающих документ. Список лиц, как правило, не превышает 10 чел., поэтому вызывать Persons для этой задачи - не совсем правильно, учитывая численность работающих (более 1000). Поэтому, более подходящим является, например, элемент RadioButton.
Вместе с тем, указанный список - вещь непостоянная, зависящая от изменений в штатном расписании и причуд руководства.
Вопрос: можно ли список хранить отдельно от интерфейса - например, в текстовом файле, откуда он будет подставляться в диалог выбора?
Re: Динамичный интерфейс без перекомпиляции
Добавлено: 29 окт 2003, 12:32
Galpro_tut
Лучше ХРАНИТЕ В ЛЮБОЙ НЕ ИСПОЛЬЗУЕМОЙ ТАБЛИЧКЕ в БД
Re: Динамичный интерфейс без перекомпиляции
Добавлено: 29 окт 2003, 13:04
m0p3e
Можно извратиться с настройками. Например сделать аналог "Доступные контрагенты". Все довольно просто. Таблица есть.
Re: Динамичный интерфейс без перекомпиляции
Добавлено: 12 мар 2004, 12:51
Serges
Внимательно изучив накопленный на форуме опыт
, пришел к решению задачи таким образом.
Создается текстовый файл podpis.txt, где каждая строчка - ФИО и должность подписывающего, разделенные двоеточием.
Файл цепляется интерфейсом:
interface select_podp 'Документ подпишет' doaccept;
show at (,,60,20);
table struct tmp_db
(
dol: String,
fio: String
)
with index
(
tmp_db01 = fio
);
create view var _dol:string _fio:string;
as select * from tmp_db;
var f1n : string;
tmpStr : string;
Parameters _dol, _fio;
Browse sel_podp;
fields fio 'ФИО' : protect;
dol 'Должность' : protect;
end;
File My1File;
handleevent
cmInit: begin
delete all tmp_db;
f1n := 'podpis.txt';
If My1File.OpenFile(f1n,stOpen) then
{
do
{
My1File.ReadLn(tmpStr);
tmp_db.dol := ExtractDelimitedWord(tmpStr,1,':');
tmp_db.fio := ExtractDelimitedWord(tmpStr,2,':');
insert current tmp_db;
}
While Not My1File.EOF;
}
Else Message ('Невозможно открыть файл!');
end;
cmDefault: begin
_dol := tmp_db.dol;
_fio := tmp_db.fio;
end;
end;
end.
Re: Динамичный интерфейс без перекомпиляции
Добавлено: 16 мар 2004, 11:09
edward_K
а все таки лучше создать свою табличку ( как подсмотри в конвертере), не забудь потом вызвать
UPDATE X$FILES WHERE XF$CODE = 0 SET XF$CHECKSUM = 0;
так ты дашь возможность пользователю самому попдравлять список должностей.
Re: Динамичный интерфейс без перекомпиляции
Добавлено: 17 мар 2004, 08:47
Serges
Edward_K
Я не сторонник по всякому случаю создавать свои таблицы и вообще менять словарь
А подправлять список - можно добавить в интерфейс кнопку, которая будет запускать ProcessText.
Re: Динамичный интерфейс без перекомпиляции
Добавлено: 17 мар 2004, 15:57
wildman
Всем привет.
Иногда использую следующую методику решения вопроса хранения таких данных.
1) Делаю внешний аттрибут с "Финсированным" названием для таблицы X$Files
2) Создаю значение внешнего аттрибута для первой записи в X$Files
3) Мемо-поле значения аттрибута использую как место хранения временной таблицы в виде строк с разделителями
4) Для удобства пишу интерфейс редактирования это таблицы.
Выгоды:
а)не нужна докомпиляция.
а)данных храняться в базе, а не во внешних файлах.
б)реализованы средсва доступа пользователя к данным.