Иерархия классов MIS3 — различия между версиями
Zhukov (обсуждение | вклад) (→TfmIBISTab) |
Admin (обсуждение | вклад) |
||
| (не показано 40 промежуточных версий 5 участников) | |||
| Строка 3: | Строка 3: | ||
== TfmIBISTab == | == TfmIBISTab == | ||
| − | Предок для форм которые реализуют набор кнопок на главном RIBBON. Основной функционал мержить на главный RIBBON закладки с кнопками вызова других форм. Наследники от этой формы должны именоваться по правилу: '''Tfm<имя cущьности>Tab'''. Например TfmTeamTab | + | Предок для форм которые реализуют набор кнопок на главном RIBBON. Основной функционал мержить (объединять) на главный RIBBON закладки с кнопками вызова других форм. Наследники от этой формы должны именоваться по правилу: '''Tfm<имя cущьности>Tab'''. Например TfmTeamTab |
| + | |||
| + | === Создание === | ||
| + | |||
| + | 1. Создаем новую форму VCL (убираем из autocreate) | ||
| + | |||
| + | 2. Добавляем: | ||
| + | |||
| + | interface | ||
| + | uses fIBISWinTab | ||
| + | |||
| + | 3. Наследуем | ||
| + | type | ||
| + | TfmVaccinDictTAB = class(fmIBISWinTab) | ||
| + | |||
| + | 4. Добавляем в implementation | ||
| + | implementation | ||
| + | uses | ||
| + | fMIS3FrameworkUtil,dMain, dImages; | ||
| + | |||
| + | 4. Секцию инициализации | ||
| + | |||
| + | initialization | ||
| + | |||
| + | MIS3WintabList.Add('TfmVaccinDictTAB'); | ||
| + | RegisterClass(TfmVaccinDictTAB ); | ||
| + | |||
| + | |||
| + | 5. Дальше все как обычно | ||
| + | Добавляем TdxBarmanager, прописываем ImageOption | ||
| + | Добавляем TdxRibbon, дизайним кнопки | ||
| − | |||
== TfmIBISBaseForm == | == TfmIBISBaseForm == | ||
| Строка 20: | Строка 49: | ||
* CTRL+ENTER вызывает обработчик кнопки "СОХРАНИТЬ И ЗАКРЫТЬ" | * CTRL+ENTER вызывает обработчик кнопки "СОХРАНИТЬ И ЗАКРЫТЬ" | ||
* поддерживает скины (а также изменение вида в зависимости от главной формы) | * поддерживает скины (а также изменение вида в зависимости от главной формы) | ||
| + | * свойство TagBig : Int64; // ID могуть быть очень большими, нужно чтобы отличать формы друг от друга | ||
== TfmWINOnTask == | == TfmWINOnTask == | ||
| − | * устанавливает стиль окна | + | * весь функционал наследуемый от TfmIBISBaseForm и устанавливает стиль окна |
Наследники от этого класса должны именоваться по правилу '''Tfm<имя сущности>WOT'''. Например: TfmTeamWOT, TfmTeamScheduleList | Наследники от этого класса должны именоваться по правилу '''Tfm<имя сущности>WOT'''. Например: TfmTeamWOT, TfmTeamScheduleList | ||
| + | |||
| + | === Создание === | ||
| + | |||
| + | 1. Создаем новую форму VCL (убираем из autocreate) | ||
| + | |||
| + | 2. Добавляем: | ||
| + | interface | ||
| + | uses fWinOnTask,uSFMessages | ||
| + | |||
| + | 3. Наследуем | ||
| + | |||
| + | type | ||
| + | TfmMedDocWOT = class(TfmWinOnTask) | ||
| + | 4. | ||
| + | implementation | ||
| + | uses | ||
| + | dImages, dMain, uSFVCLUtils | ||
| + | |||
| + | 5. Прописываем конструктор | ||
| + | public | ||
| + | constructor Create(AOwner:TComponent;AID:Integer=0);overload; | ||
| + | |||
| + | constructor .. .Create(AOwner: TComponent; AID: Integer; | ||
| + | AREadOnly: Boolean); | ||
| + | begin | ||
| + | inherited Create(AOwner); | ||
| + | dmImages.il16.GetIcon(45,Self.Icon); // Себе иконку | ||
| + | |||
| + | |||
| + | 6. Прописываем процедуру | ||
| + | |||
| + | procedure OpenMedDoc(AID:Int64); | ||
| + | var | ||
| + | Form : TForm; | ||
| + | begin | ||
| + | Form:=FindFormByTag(TfmMedDocWOT,AID); | ||
| + | if Form=nil then | ||
| + | begin | ||
| + | Form := TfmMedDocWOT.Create(Application,AID); | ||
| + | Form.Show; | ||
| + | end; | ||
| + | end; | ||
| + | |||
| + | 7. Дальше все как обычно | ||
| + | * Добавляем TdxBarmanager, прописываем ImageOption | ||
| + | * Добавляем TdxRibbon, дизайним кнопки | ||
| + | |||
| + | === Создание из шаблона === | ||
| + | |||
| + | # Копируем два файла IBIS\trunk\ER3\Source\SRCTemplate\fTileButtonWOT.* | ||
| + | # Заменяем в обоих файлах TileButton на нужное | ||
| + | # Переименовываем оба файла. | ||
| + | # Подключаем в проект | ||
| + | # для BIGInt немного правим процедуры | ||
== TfmIBISWinList == | == TfmIBISWinList == | ||
| Строка 37: | Строка 121: | ||
** Фильтр (CTRL+F) - только shortcut | ** Фильтр (CTRL+F) - только shortcut | ||
* дабл клик на gride вызывает кнопку редактировать | * дабл клик на gride вызывает кнопку редактировать | ||
| + | |||
| + | Имена наследников должны оканчиваться на '''LIST'''. Например TfmTeamList | ||
| + | |||
| + | === Создание === | ||
| + | 1. Создаем новую форму VCL (убираем из autocreate) | ||
| + | 2. Добавляем: | ||
| + | interface | ||
| + | uses fIBISWinList,uSFMessages | ||
| + | |||
| + | 3. Наследуем | ||
| + | type | ||
| + | TfmPacAmbList = class(TfmIBISWinList) | ||
| + | |||
| + | 4. Добавляем в implementation | ||
| + | implementation | ||
| + | uses | ||
| + | fMIS3FrameworkUtil,dMain, dImages; | ||
| + | |||
| + | 5. Прописываем секцию инициализации | ||
| + | initialization | ||
| + | |||
| + | RegisterClass(TfmPacAmbList); | ||
| + | MIS3RibbonTabWinValues.Add('Списки пациентов=TfmPacAmbList'); // для вызова по умолчанию | ||
| + | |||
| + | 6. Кладем на форму TdxBarManager, TdxRIBBON (лучше именно в этом порядке), добавляем закладку и кнопки. Прописываем свойства: | ||
| + | * TdxBarManager.ImageOption | ||
| + | |||
| + | 7. Не забываем менять следующие свойства у формы: | ||
| + | * ICON (можно в конструкторе dmImages.il16.GetIcon(116,Self.Icon)) | ||
| + | * Caption | ||
| + | |||
| + | {{warning}} На событии onShow нельзя вызывать методы SetFocus у контролов. | ||
| + | |||
| + | {{warning}} Если есть OnCreate, OnClose , то они должны обязательно вызывать inherited | ||
| + | |||
| + | == TfmIBISaTopForm== | ||
| + | * Наследник формы TfmWinOnTask. форма поверх другой формы (но не модальная). Используется в формах выбора, редакторах сущностей (т.е. пока не выбрали что либо, вернуться на вызывающую форму нельзя). В отличии от модальной формы блокирует переключение только на вызывающую форму. | ||
| + | |||
| + | |||
| + | [[Категория:Руководство программиста MIS3]] | ||
Текущая версия на 14:16, 26 марта 2018
Содержание
TfmIBISTab
Предок для форм которые реализуют набор кнопок на главном RIBBON. Основной функционал мержить (объединять) на главный RIBBON закладки с кнопками вызова других форм. Наследники от этой формы должны именоваться по правилу: Tfm<имя cущьности>Tab. Например TfmTeamTab
Создание
1. Создаем новую форму VCL (убираем из autocreate)
2. Добавляем:
interface uses fIBISWinTab
3. Наследуем
type TfmVaccinDictTAB = class(fmIBISWinTab)
4. Добавляем в implementation
implementation uses fMIS3FrameworkUtil,dMain, dImages;
4. Секцию инициализации
initialization
MIS3WintabList.Add('TfmVaccinDictTAB');
RegisterClass(TfmVaccinDictTAB );
5. Дальше все как обычно
Добавляем TdxBarmanager, прописываем ImageOption
Добавляем TdxRibbon, дизайним кнопки
TfmIBISBaseForm
- устанавливает шорткаты и иконки для кнопок RIRIBBON с заголовками:
- Добавить
- Редактировать
- Обновить
- Удалить
- Выбрать
- Закрыть
- Обрабатывает кнопку ESCAPE - если есть изменённые данные в актином контроле, то отменяет их, иначе закрывает форму
- CTRL+S вызывает обработчик кнопки "СОХРАНИТЬ"
- CTRL+ENTER вызывает обработчик кнопки "СОХРАНИТЬ И ЗАКРЫТЬ"
- поддерживает скины (а также изменение вида в зависимости от главной формы)
- свойство TagBig : Int64; // ID могуть быть очень большими, нужно чтобы отличать формы друг от друга
TfmWINOnTask
- весь функционал наследуемый от TfmIBISBaseForm и устанавливает стиль окна
Наследники от этого класса должны именоваться по правилу Tfm<имя сущности>WOT. Например: TfmTeamWOT, TfmTeamScheduleList
Создание
1. Создаем новую форму VCL (убираем из autocreate)
2. Добавляем: interface
uses fWinOnTask,uSFMessages
3. Наследуем
type
TfmMedDocWOT = class(TfmWinOnTask)
4. implementation uses
dImages, dMain, uSFVCLUtils
5. Прописываем конструктор
public constructor Create(AOwner:TComponent;AID:Integer=0);overload;
constructor .. .Create(AOwner: TComponent; AID: Integer;
AREadOnly: Boolean);
begin
inherited Create(AOwner); dmImages.il16.GetIcon(45,Self.Icon); // Себе иконку
6. Прописываем процедуру
procedure OpenMedDoc(AID:Int64); var
Form : TForm;
begin
Form:=FindFormByTag(TfmMedDocWOT,AID); if Form=nil then begin Form := TfmMedDocWOT.Create(Application,AID); Form.Show; end;
end;
7. Дальше все как обычно
- Добавляем TdxBarmanager, прописываем ImageOption
- Добавляем TdxRibbon, дизайним кнопки
Создание из шаблона
- Копируем два файла IBIS\trunk\ER3\Source\SRCTemplate\fTileButtonWOT.*
- Заменяем в обоих файлах TileButton на нужное
- Переименовываем оба файла.
- Подключаем в проект
- для BIGInt немного правим процедуры
TfmIBISWinList
- создает на главном RIBBON необходимые закладки
- управляет видимостью закладки (TAB) на главном RIBBON в зависимости от активности формы. Т.е. если окно становится активным, то становиться актновной соответсвующая закладка на RIBBON
- устанавливает imageindex и shortcut для следующих кнопок:
- Добавить (плюс на доп клавиатуре)
- Редактировать (F4)
- Обновить (F5)
- Закрыть (F12)
- УДАЛИТЬ (Shift+DEL)
- Фильтр (CTRL+F) - только shortcut
- дабл клик на gride вызывает кнопку редактировать
Имена наследников должны оканчиваться на LIST. Например TfmTeamList
Создание
1. Создаем новую форму VCL (убираем из autocreate) 2. Добавляем: interface
uses fIBISWinList,uSFMessages
3. Наследуем type
TfmPacAmbList = class(TfmIBISWinList)
4. Добавляем в implementation implementation uses
fMIS3FrameworkUtil,dMain, dImages;
5. Прописываем секцию инициализации initialization
RegisterClass(TfmPacAmbList);
MIS3RibbonTabWinValues.Add('Списки пациентов=TfmPacAmbList'); // для вызова по умолчанию
6. Кладем на форму TdxBarManager, TdxRIBBON (лучше именно в этом порядке), добавляем закладку и кнопки. Прописываем свойства:
- TdxBarManager.ImageOption
7. Не забываем менять следующие свойства у формы:
- ICON (можно в конструкторе dmImages.il16.GetIcon(116,Self.Icon))
- Caption
Внимание: На событии onShow нельзя вызывать методы SetFocus у контролов.
Внимание: Если есть OnCreate, OnClose , то они должны обязательно вызывать inherited
TfmIBISaTopForm
- Наследник формы TfmWinOnTask. форма поверх другой формы (но не модальная). Используется в формах выбора, редакторах сущностей (т.е. пока не выбрали что либо, вернуться на вызывающую форму нельзя). В отличии от модальной формы блокирует переключение только на вызывающую форму.
