Обсуждение:Динамические панели, скроллинги и меню. С картинками в цвете и тд.
5 (1)
Обсуждение:Динамические панели, скроллинги и меню. С картинками в цвете и тд. ( Обсуждение примера 03.03.2022 17:13 )
0(0)Обновлено: 23.06.2023
Самое главное, что добавлены вычисляемые поля для скроллингов на основе массивов.
Обновлено: 09.01.2023
Версия для RS-Connect. Скроллинги из массива можно сохранить позицию строки.
Обновлено: 06.10.2022
1. Версия для RS-Connect
2. Доработки, касаемые всех версий.
Обновлено 03.10.2022
1. Теперь можно в диалоговой панели нажать Shift-F12 для просмотра параметров диалоговой панели (имена компонентов, значения ДО и ПОСЛЕ, положения на панели, размеры, тип данных и т.д.). В планах реализовать, чтобы можно было изменять значения прям там и тестировать (не меняя код), как будет выглядеть панель.
2. Теперь можно не задавать имена панелей (8 символов, которое). Ошибки не будет.
Обновлено 05.09.2022
Добавил класс TStudiaMsLs, который предназначен для построения скроллингов выбора (одиночного или множественного) на основе:
1. Таблицы TBFile. AddTableSource
2. Массива. AddArrSource
3. Таблицы и массива. AddTableSource и AddArrSource сразу.
Обновил btrdata.mac, взяв из дистрибутива RS-Bank V5.
Обновлено 31.08.2022
Добавил примеры для 6-ки.
Добавил новый функционал:
1. Переключение между вкладками в многостраничной панели по Ctrl-Tab.
2. Возможность блокировать вкладку. Например нужно пока не сохраним запись, не позволять переходить на другие вкладки.
3. Теперь поддерживают свойства полей (Field) SetFlagAnsiString(true), SetFlagPassword(true), SetFlagNoEdge(true).
4. Добавил новые значения для x0_ (AddField, AddLabel):
//, x0_ - расположение слева. если передать null, то поле расположено будет на предыдущем компоненте (справа) и +1
//, x0_ - расположение слева. если передать -1, то поле расположено будет на предыдущем компоненте (слева)
//, x0_ - расположение слева. если передать "-1" (как текст), то поле расположено будет после предыдущего компонента (справа) и - указаное число
//, x0_ - расположение слева. если передать "+1" (как текст), то поле расположено будет после предыдущего компонента (справа) и + указаное число
//, dx_ - ширина. если передать null - то ширина подберется автоматически, если передать отрицательное значение, то от максимальной ширины отнимется переданное значение
Так как все переходим на 6 версию, то представляю версию studia_scroll_manager.mac для RS-Bank V6 и RS-Connect, находится в папке V6.
3 макроса положить в папку ..\mac:
btrdata.mac - здесь его выкладывали в примерах. (В V5 в дистрибутиве есть в ..\Mac\Common\. Так что его в V5 подкладывать не нужно!)
ldmklbr.mac - здесь его выкладывали в примерах, но я исправил ошибки и доработал под версию 2.
studia_scroll_manager.mac - Самый главный макрос, с помощью которого можно легко создавать скроллинги, панели и меню:
внизу макроса "studia_scroll_manager.mac" описаны все методы, которые пригодятся для выполнения задач, связанных с пользовательским интерфейсом.
Источниками скроллинга могут быть:
1. Таблица.
2. Массив.
3. TKrnMdbRecordset (Из-за кривой работы этого класса, а именно: нет copy, автоинкрементное поле не является таковым, нужно акуратно использовать). (В 6 версии не работает).
4. RSD (SQL наше все):-)
Панели можно в коде создавать многостраничные, а также встраивать несколько скроллингов на одну панель (требуется нарисовать рамки, в которые будут встраиваться скроллинги).
Панели рисуются вообще легко. Не надо думать о том на какой строке находится тот или иной компонент.
Также есть такой тип как V_PICTURE, который позволяет отображать картинки (Даже хранящиеся в памяти, т.е. можно в таблице хранить изображение и загружать в это поле не сохраняя перед этим на диск). Пример есть в классе TStudiaConstant методы GetIconCalendarMem и GetIconCalendar2Mem :
var ImgObj : TImage = TImage();
ImgObj.ReStore(TStudiaConstant().GetIconCalendar2Mem().Stream);
var StudiaScrollManager = TStudiaScrollManager();
StudiaScrollManager.ObjPageControl.DestroyListPageControl();
StudiaScrollManager.ObjPageControl.AddListPageControl("Тест картинки", "F9 Сохранить Esc Выход", 30, 15, false, null, true, 0, 1, 0, 0);
StudiaScrollManager.ObjPageControl.SetUniNum("DLGTEST");
StudiaScrollManager.ObjPageControl.CurrentPageControl().AddListPanel("СТРАНИЦА 1", "Я всплывающая подсказка для страницы 1");
StudiaScrollManager.ObjPageControl.CurrentPageControl().CurrentPanel().SetPanelLeftAndRightAndTopAndBottom(2, 2, 2, 1);
StudiaScrollManager.ObjPageControl.CurrentPageControl().CurrentPanel().SetBorderLine(2);
StudiaScrollManager.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(null, null, 2, true, TStudiaDlgDataType.V_PICTURE, "ImageMain", 25, 12, null, null, false, null).SetValue(ImgObj);
ImgObj = null;
ImgObj.ReStore(TStudiaConstant().GetIconCalendarMem().Stream);
StudiaScrollManager.ObjPageControl.CurrentPageControl().AddListPanel("СТРАНИЦА 2", "Я всплывающая подсказка для страницы 2");
StudiaScrollManager.ObjPageControl.CurrentPageControl().CurrentPanel().SetPanelLeftAndRightAndTopAndBottom(2, 2, 2, 1);
StudiaScrollManager.ObjPageControl.CurrentPageControl().CurrentPanel().SetBorderLine(2);
StudiaScrollManager.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(null, null, 2, true, TStudiaDlgDataType.V_PICTURE, "ImageMain2", 25, 12, null, null, false, null).SetValue(ImgObj);
StudiaScrollManager.ObjPageControl.InitDialog();
StudiaScrollManager.ObjPageControl.Run(0);
В Панелях и скроллингах в полях с типом V_DATE и если разрешено редактирование этого поля/таблицы, то можно вызвать календарь (для удобства заполнения).
Исправлена ошибка (системного скроллинга), если не задавать все поля и скроллинг в режиме редактирования, то те поля, которые не заданы обнуляются и это очень не весело. У меня это исправлено.
Очень легко раскрашивать скроллинги и назначать иконки. Даже в скроллинги встроенные в панель.
Нажав в скроллинге Shift-F12 - можно посмотреть (в зависимости от источника):
Таблица: Поля таблицы (Выбрав этот пункт и в появившемся скроллинге нажав F7 можно просмотреть поля и ключи (как в Оболочка RSL)), Поля записи.
Массив: Поля записи.
RSD: Поля записи.
Нажав Ctrl-Shift-F12 - выделенные записи можно направить в отдельный скроллинг, для удобства просмотра.
Нажав Shift-F1 (при назначенной справке в коде) открывает страницу справки. Поясню: В скроллинге системно нельзя назначить страницу справки, как в панели.
Также при небольших правках можно использовать этот макрос и в RS-Connect (я уже во всю использую. Используя источник "Массив". Да именно массив. Потому, что веб интерфейс собирается по массиву).
Очень много возможностей, описывать можно очень долго...
В качестве примера будет функционал для транспорта КД в XML и загрузка этого файла на дистрибутив:
Файлы из папки Пример скинуть также в папку ..\mac:
studia_transport_crd_export_import_run.mac - Запускной файл.
studia_tools_transport_crd.mac - Инструмент для Импорта/Экспорта КД.
studia_transport_crd_run.mac - Интерфейсная часть.
Вверху макросов все описано что да как.
Посмотреть пример
>> ОтветитьВыглядит круто сразу видно что долго работали над проэктом. ( LeonL 17.08.2022 20:29 )
0(0)Возможно придется вернутся на V6, проверим в деле.
>> ОтветитьВ качестве примера хотелось бы простейшие сколлиги табличек ( LeonL 26.08.2022 14:46 )
0(0)чтобы и скроллинг был и пара кнопочек, а так не особо понятно что это , и как правильно использовать
>> ОтветитьПростейший пример для V6. Справочник ВЭД ( Gitarist 27.08.2022 13:23 )
0(0)import "..\\mac\\studia_scroll_manager.mac";
private var StKey = TStudiaPressKey();
private var DateLastUpdate = "";
private var errCode = 0;
GetRegistryValue("ФИНМОНИТОРИНГ\\ПЕРЕЧЕНЬ_ПОДОЗР_УЧАСТНИКОВ_ВЭД\\ДАТА_ЗАГРУЗКИ", V_STRING, DateLastUpdate, errCode);
macro ShowScrollProtocol()
var StudiaScrollManager = TStudiaScrollManager();
StudiaScrollManager.ObjScrolling.DestroyListObjScrolling();
StudiaScrollManager.ObjScrolling.AddListObjScrolling();
StudiaScrollManager.ObjScrolling.CurrentScrolling().StudiaInitTBFile("FMVEDPARTY.dbt", "R", 0, null, "bank.def");
StudiaScrollManager.ObjScrolling.CurrentScrolling().AddListColInfo("NUMBER" , "№ п/п" ,0 ,2,0,0,0,0);
StudiaScrollManager.ObjScrolling.CurrentScrolling().AddListColInfo("NAME" , "Наименование резидента",68,2,0,0,0,0);
StudiaScrollManager.ObjScrolling.CurrentScrolling().AddListColInfo("Ogrn" , "ОГРН" ,13,2,0,0,0,0);
StudiaScrollManager.ObjScrolling.CurrentScrolling().AddListColInfo("Inn" , "ИНН" ,10,2,0,0,0,0);
StudiaScrollManager.ObjScrolling.CurrentScrolling().AddListColInfo("REGDATE", "Дата регистрации" ,10,2,0,0,0,0);
StudiaScrollManager.ObjScrolling.CurrentScrolling().AddListColInfo("Group" , "Группа" ,11,2,0,0,0,0);
StudiaScrollManager.ObjScrolling.CurrentScrolling().ShowScroll("Перечень подозрительных участников ВЭД: по состоянию на " + DateLastUpdate, "F4 Поиск ESC Выход", true, 0,0,0,0);
end;
ShowScrollProtocol();
>> ОтветитьПример для V6. Просто многостраничная панелька со встроенными скроллингами ( Gitarist 27.08.2022 13:26 )
0(0)import "..\\mac\\studia_scroll_manager.mac";
var StudiaScrollManager1 = TStudiaScrollManager();
var StudiaScrollManager2 = TStudiaScrollManager();
private class TStudiaUserFunc()
end;
StudiaScrollManager1.ObjScrolling.DestroyListObjScrolling();
StudiaScrollManager1.ObjScrolling.AddListObjScrolling();
StudiaScrollManager1.ObjScrolling.CurrentScrolling().SetsNameRecord("ArrScroll" + UserNumber());
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListColInfo("MessageDate" , "Дата че то там" , 10,1,0,V_DATE ,0,0);
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListColInfo("MessageStatusID" , "Статус чето там" , 4 ,1,0,V_INTEGER,2,0);
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListColInfo("Text" , "Текст с хрена ли" , 2 ,1,0,V_STRING,255,0);
StudiaScrollManager1.ObjScrolling.CurrentScrolling().DeleteAllListObjData();
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListOperation(DLG_KEY , 323, -1, "", "", CM_INSERT, "");
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListOperation(DLG_KEY, 13, -1, "", "", CM_IGNORE, "");
// Версия без использования класса (медленнее)
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddFromStudiaColInfo(Date(01,01,2020), 1, "" );
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddFromStudiaColInfo(Date(02,01,2020), 2, "1213213124234234");
//ShowScroll(Header, Footer, ReadOnly, X, Y, CX, CY, IsFocused, NumBar_, hideHeader)
//SetScroll(Header, Footer, ReadOnly, X, Y, CX, CY, IsFocused, hideHeader)
StudiaScrollManager1.ObjScrolling.CurrentScrolling().SetScroll("", "ScrollLine", false, null, null, null, null, true, true);
StudiaScrollManager1.ObjScrolling.AddListObjScrolling();
//InitListGetX(StrMoveFirst_ : string, StrMoveLast_ : string);
StudiaScrollManager1.ObjScrolling.CurrentScrolling().StudiaInitTBFile("credit_c.dbt", "R", 0, null, "loans.def");
//AddListColInfo(name_ , head_ , width_, kind_, dec_, type_, size_, decPoint_)
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListColInfo("CreditNumber" , "MessageDate" , 10,2,0,0,0,0);
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListColInfo("UsCreditNumber" , "UsCreditNumber" , 12,2,0,0,0,0);
StudiaScrollManager1.ObjScrolling.CurrentScrolling().SetScroll("", "ScrollLine", true, null, null, null, null, true, false);
StudiaScrollManager1.ObjScrolling.CurrentScrolling().AddListOperation(DLG_KEY , 323, -1, "", "", CM_INSERT, "");
StudiaScrollManager2 = TStudiaScrollManager();
StudiaScrollManager2.ObjPageControl.DestroyListPageControl();
//AddListPageControl(Title_, StatusLine_, PanelWidth_, PanelHeight_, IsIgnoreF9_, GoToKey_, IsEscQuest_, X0_, Y0_, TabPosition_, ActivTabIndex_)
StudiaScrollManager2.ObjPageControl.AddListPageControl("Title", "StatusLine", 80, 14, false, null, true, 2, 2, 0, 0);
// Принудительно выводить сообщение об изменении записи
//SetForciblyAnswer(ForciblyAnswer_ : bool)
StudiaScrollManager2.ObjPageControl.SetForciblyAnswer(false);
// Установить флаг, что были изменения в скроллинге, который встроен в панель. При выходе на Esc Будет уведомление об изменениях
//SetIsListScrollingChange(IsListScrollingChange_ : bool)
StudiaScrollManager2.ObjPageControl.SetIsListScrollingChange(true);
// Максимум 2 символа
//SetUniNum(UniNum_ : string)
StudiaScrollManager2.ObjPageControl.SetUniNum("SG");
//CurrentPageControl(Ind)
// Если не задавать Ind, то берется последний PageControl
//AddListPanel(Caption_, ToolTip_, IndexIcon_)
StudiaScrollManager2.ObjPageControl.CurrentPageControl().AddListPanel("СТРАНИЦА 1", "Подсказка");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().SetPanelLeftAndRightAndTopAndBottom(1, 1, 1, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().SetFullUniNum("MYNAME");
//SetStatusLine(StatusLine_ : string)
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().SetStatusLine("StatusLine1");
//CurrentPanel(Ind)
// Аналогично работа с индексом
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddFrame(1, 1, 40);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddFrame(41, 1, 40);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddListScrolling(StudiaScrollManager1.ObjScrolling.CurrentScrolling(0));
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddListScrolling(StudiaScrollManager1.ObjScrolling.CurrentScrolling(1));
StudiaScrollManager2.ObjPageControl.CurrentPageControl().AddListPanel("СТРАНИЦА 2", "");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddListOperation(DLG_KEY , 316, -1, "", "", CM_SAVE, "1");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().SetHelpPage(2820);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().SetPanelLeftAndRightAndTopAndBottom(2, 2, 2, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, " ┌── платежа", null, true, 1); // 40
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetTextColor(1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetToolTip("Подсказка");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(48, null, 1, true, TStudiaDlgDataType.V_DATE, "Date1", 10, 1, null, null, false, null).SetValue(Date());
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, "Дата ──┤", null, true, null); // 40
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, " └── расчета процентов, комиссий, пени", null, true, 1); // 40
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(48, null, 1, true, TStudiaDlgDataType.V_DATE, "Date2", 10, 1, null, null, false, null).SetValue(Date());
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, "Приоритет погашения", null, true, 2); // 40
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(23, null, 2, true, TStudiaDlgDataType.V_STRING, "Prioritet", null, 1, 255, null, false, null).SetValue("По умолчанию для кредитного договора");
//CurrentComponent(Ind, Name), Если необходимо найти по имени, то CurrentComponent(-1, "Name")
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().AddListAction(DLG_KEY, 317, TStudiaUserFunc, "Func1", CM_IGNORE, "");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, "Вид платежа", null, true, 2); // 40
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(23, null, 2, true, TStudiaDlgDataType.V_STRING, "Type", null, 1, 255, null, false, null).SetValue("Погашение со вклада RS-Retail");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().AddListAction(DLG_KEY, 317, TStudiaUserFunc, "Func2", CM_IGNORE, "");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, "Виды задолженности", null, true, 2); // 40
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(23, null, 2, true, TStudiaDlgDataType.V_STRING, "Kind", null, 1, 255, null, false, null).SetValue("Все");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetIsFocused(false); //фокус
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, "Выдача на СО №", null, true, 2); // 40
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(23, null, 2, false, TStudiaDlgDataType.V_STRING, "Duty", null, 1, 50, null, false, null).SetValue("1");
// Встроить в кнопку иконку, задав код иконки
//SetIndexIcon(IndexIcon_ : integer)
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetIndexIcon(111);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetAlignIcon(3);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().GetModel.SetValue(-1, "Duty", 2);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().AddListPanel("СТРАНИЦА 4", "");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().SetPanelLeftAndRightAndTopAndBottom(2, 2, 2, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, "Дата", null, true, null);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(null, null, 1, true, TStudiaDlgDataType.V_DATE, "RepDate", 10, 1, null, null, false, null).SetValue(date());
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(23, null, 3, true, TStudiaDlgDataType.V_STRING, "Button1", null, 1, 50, null, true, 2);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetIndexIcon(111);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().AddListAction(DLG_BUTTON, -1, TStudiaUserFunc, "Func_", CM_IGNORE, "");
var ResO = 18;
var o = 7;
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, "Проверять объекты", null, true, null);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(ResO, null, "Проверка резервов", null, false, null);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, " ├─( ) Все", null, true, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(o, null, 2, true, TStudiaDlgDataType.V_CHR, "RadioButton_All", 1, 1, 2, null, false, null).SetValue("X");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetGroup(1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(ResO+2, null, " ├─( ) 590-П", null, false, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(ResO+o, null, 2, true, TStudiaDlgDataType.V_CHR, "RadioButton_590P", 1, 1, 2, null, false, null).SetValue("X");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetGroup(2);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, " ├─( ) КД", null, true, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(o, null, 2, true, TStudiaDlgDataType.V_CHR, "RadioButton_Credit", 1, 1, 2, null, false, null).SetValue("");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetGroup(1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(ResO+2, null, " └─( ) Оценочный(МСФО)", null, false, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(ResO+o, null, 2, true, TStudiaDlgDataType.V_CHR, "RadioButton_MSFO", 1, 1, 2, null, false, null).SetValue("");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetGroup(2);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddLabel(null, null, " └─( ) СПРТФ", null, true, 1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().AddField(o, null, 2, true, TStudiaDlgDataType.V_CHR, "RadioButton_LbrfCase", 1, 1, 2, null, false, null).SetValue("");
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetGroup(1);
StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel().CurrentComponent().SetIsReadOnly(true);
StudiaScrollManager2.ObjPageControl.InitDialog();
//Run(Ind)
// Если не задавать Ind, то берется последний PageControl
StudiaScrollManager2.ObjPageControl.Run(0);
if (StudiaScrollManager2.ObjPageControl.GetResult() == CM_SAVE)
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).Caption());
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).GetModel.GetValue(-1, "1"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).GetModel.GetComboBoxValue(-1, "1").id, " ", StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).GetModel.GetComboBoxValue(-1, "1").name);
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).GetModel.GetValue(-1, "Date1"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).GetModel.GetValue(-1, "Date2"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).GetModel.GetValue(-1, "CheckBox1"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(1).GetModel.GetValue(-1, "CheckBox2"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).Caption());
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).GetModel.GetFirstValue(-1, "Date1"), " ", StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).GetModel.GetValue(-1, "Date1"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).GetModel.GetValue(-1, "Date2"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).GetModel.GetValue(-1, "Prioritet"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).GetModel.GetValue(-1, "Type"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).GetModel.GetValue(-1, "Kind"));
println(StudiaScrollManager2.ObjPageControl.CurrentPageControl().CurrentPanel(2).GetModel.GetValue(-1, "Duty"));
end;
>> Ответить
Обновил функционал и добавил примеры для V6 ( Gitarist 31.08.2022 14:46 )
0(0)Обновлено 31.08.2022
Добавил примеры для 6-ки.
Добавил новый функционал:
1. Переключение между вкладками в многостраничной панели по Ctrl-Tab.
2. Возможность блокировать вкладку. Например нужно пока не сохраним запись, не позволять переходить на другие вкладки.
3. Теперь поддерживают свойства полей (Field) SetFlagAnsiString(true), SetFlagPassword(true), SetFlagNoEdge(true).
4. Добавил новые значения для x0_ (AddField, AddLabel):
//, x0_ - расположение слева. если передать null, то поле расположено будет на предыдущем компоненте (справа) и +1
//, x0_ - расположение слева. если передать -1, то поле расположено будет на предыдущем компоненте (слева)
//, x0_ - расположение слева. если передать "-1" (как текст), то поле расположено будет после предыдущего компонента (справа) и - указаное число
//, x0_ - расположение слева. если передать "+1" (как текст), то поле расположено будет после предыдущего компонента (справа) и + указаное число
>> Ответить