Интерфейс пользователя MIS3 — различия между версиями

Материал из ИбисоПедии
Перейти к: навигация, поиск
(Окно список)
(Правила дизайна Ribbon)
 
(не показано 50 промежуточных версий 5 участников)
Строка 1: Строка 1:
 +
== Общие ==
 +
# расстояние между контролами по вертикали 10
 +
# свойство TOP для контролов: 10,41,72, 103,134,165 ,195
 +
# метки обязательных полей подчеркиваются красным (см. dmImages.SetRequiredFieldLabelStyle)
 +
# настройки соединения с БД  в [[ibis.ini]]
 +
# текущие настройки приложения (положения окон, выбранный стили и т.п.) в реестре Software\IBIS\MIS (актуальное значение находится в dConfig.dmConfig.AppStorage.Root). Путь ветки реестра правильно брать так dmConfig.AppStorage.Root + '\' + Self.ClassName
 +
# русификация в файле russian.lng  (в том числе и для других языков через cxLocalizer)
 +
# стиль нередактируемых контролов dmImages.escInfo
 +
# стиль заголовков (для cxLabel над списками и пр) - dmImages.escCaption.
 +
#* cxlabel.Height := 14
 +
#* cxlabel.Style.Font.Size := 8
 +
# AlignWithMargin := False (Избегаем его использования)
 +
 
== Главное окно ==
 
== Главное окно ==
 
== Горячие клавиши ==
 
== Горячие клавиши ==
 +
Здесь информация может немного устареть. См описание классов и исходные коды модулей [[MIS3._Иерархия_классов]]
 +
иконки, горячие клавиши определены в модуле dImages.pas. См. dImages.SetShurtCutOnRibbon(AForm:TForm);
 +
 +
{|cellspacing="0" border="1"
 +
!Действие
 +
!Hotkey
 +
!Место применения
 +
!Примечания
 +
|-
 +
|Сохранить
 +
|F2 Ctrl+S
 +
|
 +
|
 +
|-
 +
|Сохранить и закрыть
 +
|Ctrl+Q или Ctrl+Enter
 +
|
 +
|
 +
|-
 +
|Добавить
 +
|F3, NumPlus
 +
|
 +
|
 +
|-
 +
|Редактировать
 +
|F4
 +
|
 +
|
 +
|-
 +
|Обновить
 +
|F5
 +
|
 +
|
 +
|-
 +
|Удалить
 +
|Shift+Del
 +
|
 +
|
 +
|-
 +
|Закрыть
 +
|F12 или ESC
 +
|
 +
|
 +
|-
 +
|Выбрать
 +
|Shift+ENTER
 +
|
 +
|
 +
|-
 +
|Фильтр
 +
|Ctrl+F
 +
|
 +
|
 +
|-
 +
|Печать
 +
|Ctrl+P
 +
|
 +
|
 +
|-
 +
|Сохранить и вернуть
 +
|Shift+Enter
 +
|
 +
|
 +
|-
 +
|Проверить
 +
|F7
 +
|
 +
|
 +
|-
 +
|}
 +
 +
=== В окнах списках ===
 +
* Ctrl+F4 - Закрыть текущий список
 +
* Ctrl+I - Включить инкрементальный поиск по таблице
 +
 +
=== Для разработчика ===
  
* F2 - Сохранить
+
  IBISShortCut_DebuInfo : String = 'Ctrl+Shift+L'; // сочетание клавиш для показа системной информации об окне (имя класса, идентификатор объекта и т.п)
* F4 - редактировать
+
  IBISShortCut_Audit    : String = 'Ctrl+Shift+H'; // сочетание клавиш для вызова окна аудита
* F5 - обновить
 
* F6 - выполнить отчет
 
* F9 - конструктор отчетов
 
* F12 Закрыть форму
 
* Ctrl+Q Сохранить и закрыть
 
* Shift+Del - удалить
 
* Alt+backspace - отменить изменения на форме
 
* Enter - В окнах выбора "выбрать и вернуть"
 
  
 
== Окно с кнопками операций ==
 
== Окно с кнопками операций ==
Строка 20: Строка 101:
 
- наследник от TdxRibbonForm
 
- наследник от TdxRibbonForm
  
<source lang="delphi">
+
см [[MIS3. Иерархия классов]]
procedure TfmDict.FormCreate(Sender: TObject);
 
begin
 
  // для форм без списка достаточно только одного вызова
 
  // Проверяем доступ
 
//  dxbrUserControl.Visible := dmMain.CheckRight(1);
 
 
 
  if not rbtDict.IsMerged then  fmMain.rbtDict.Merge(rbtDict);
 
  dxRibbon1.Visible := False;
 
 
 
end;
 
</source>
 
  
 
== Окно список ==
 
== Окно список ==
  
- Заканчивается на List
+
* Отображает один список (список справочников, людей и т.п.)
- Ribbon с кнопками
+
* имя pas-файлы должно заканчиваться на List
 +
* умеет реагировать на сообщения об обновлении
 +
=== Дизайн ===
 +
* FormStyle = fsMDIChild
 +
* tdxbarmanager
 +
* TdxRibbon
  
[[Файл:WinList.png]]
+
[[File:WinList.png]]
 
+
см [[MIS3. Иерархия классов]]
<source lang="delphi">
 
uses
 
 
 
  UniScript,uSFMessages
 
 
 
FormStyle := fsMDIChild
 
 
 
procedure TfmTeamList.FormActivate(Sender: TObject);
 
begin
 
  if Application.Terminated then exit;
 
 
 
  fmMain.rbtTeam.Active :=True;
 
  if not rbtTeamList.IsMerged then  fmMain.rbtTeam.Merge(rbtTeamList);
 
 
 
end;
 
 
 
procedure TfmTeamList.FormClose(Sender: TObject; var Action: TCloseAction);
 
begin
 
  Action := caFree;
 
end;
 
 
 
procedure TfmTeamList.FormCreate(Sender: TObject);
 
begin
 
  dxRibbon1.Visible := False;
 
  uqTeamList.Open;
 
  dmImages.il16.GetIcon(cii16_Brig,Self.Icon);
 
 
 
end;
 
 
 
procedure TfmTeamList.FormDeactivate(Sender: TObject);
 
begin
 
  if rbtTeamList.IsMerged then  fmMain.rbtTeam.Unmerge(rbtTeamList);
 
 
 
end;
 
</source>
 
  
 
== WinOnTask ==
 
== WinOnTask ==
Строка 80: Строка 120:
 
- наследник от WinOnTask (кнопка на панели задач)
 
- наследник от WinOnTask (кнопка на панели задач)
 
- название заканчиваем на WOT (WinOnTask)
 
- название заканчиваем на WOT (WinOnTask)
- dxRibbon.showheaders := False (в дизайнере)
 
 
 
 
<source lang="delphi">
 
uses
 
  fWinOnTask
 
...
 
type
 
  TfmTeamWOT = class(TfmWinOnTask)
 
 
  private
 
    procedure SaveData;
 
    procedure CheckData;
 
    procedure SetCaption;
 
    procedure SetControls;
 
    procedure SetRequedFieldStyle;
 
    procedure SendMessageOnChange;
 
  public
 
    procedure InitData(AID:Integer);
 
  end;
 
  
 +
[[Файл:IBIS_WOT1.png]]
  
 +
=== Дизайн ===
 +
* Наследуем от TfmWinOnTask
 +
* TdxBarmanager
 +
* dxRibbon.showheaders := False (в дизайнере)
  
 +
см [[MIS3. Иерархия классов]]
  
  procedure OpenTransport(AID:Integer);
+
== Правила дизайна Ribbon ==
  procedure DeleteTransport(AID: Integer);
+
* Подпись к группе кнопок должна быть существительным с Большой буквы (Файлы, Пользователи, Расписание, Документы, Действия и т.п.)
 +
* Подписи к кнопкам должны по возможности означать действие (глагол в совершенной форме) над объектом который указан в заголовке группы. Например: Сохранить, Редактировать, Закрыть, Удалить. Для двухсловных действий (Показать фильтр, Показать расписание) допускается пропуск действия. Т.е. Указываем просто Фильтр, Расписание и т.п. По возможности подпись к кнопке должна состоять из одного слова.
  
 +
== Модальное окно ==
 +
[[Файл:ibis_modal.png]]
  
procedure OpenTransport(AID:Integer);
+
== Простое модальное окно ==
var
+
* Panel
  Form : TForm;
+
** Align := paBottom
begin
+
** Height := 41
  Form:=FindFormByTag(TfmTrasportWOT,AID);
+
* Кнопки
  if Form=nil then
+
** Width := 75
  begin
+
** Top := 8
    Form := TfmTrasportWOT.Create(Application);
+
** Height := 25
    TfmTrasportWOT(Form).InitData(AID);
+
** Anchors := [akTop,akRight]
    Form.Show;
+
** Кнопка "Отмена" Left := Panel.Width-15-75 := Panel.Width -90
  end;
+
** Кнопка "ОК"  Left := Panel.Width-(15-75)*2 := Panel.Width -180 расстояние между кнопками = 15
end;
+
** Кнопки TcxButton, Skin = ultraflat, skin = UserSkin
//------------------------------------------------------------------------------
+
** Кнопка OK имеет значение Default := True;
procedure DeleteTransport(AID: Integer);
 
var
 
  us :TUniScript;
 
begin
 
  us := TUniScript.Create(dmMain);
 
  us.Connection := dmMain.con;
 
  //TEAM
 
// TEAM_SHCEDULE_TRANSPORT
 
  us.SQL.Add('Delete from mm.transport_emp t where t.transport_id= &id ;');
 
  us.SQL.Add('update mm.team set transport_id=null where transport_id= &id ;');
 
  us.SQL.Add('Delete from mm.transport t where t.id= &id ;');
 
  us.MacroByName('id').AsString := intToStr(AID);
 
  try
 
    us.Execute;
 
  finally
 
    us.Free;
 
  end;
 
  
end;
+
== Поддержка скинов ==
 +
Проект внутри себя не должен содержать никаких скинов. Все скины находятся во внешних файлах в папке skins и подгружаются динамически.
 +
Поэтому в исходных кодах в секции uses  не должно быть следующих файлов (компиляция на сервере не пройдет):
  
</source>
+
* dxSkinBlack.dcu                 
 +
* dxSkinBlue.dcu                   
 +
* dxSkinBlueprint.dcu             
 +
* dxSkinCaramel.dcu               
 +
* dxSkinCoffee.dcu                 
 +
* dxSkinDarkRoom.dcu               
 +
* dxSkinDarkSide.dcu               
 +
* dxSkinDevExpressDarkStyle.dcu   
 +
* dxSkinDevExpressStyle.dcu       
 +
* dxSkinFoggy.dcu                 
 +
* dxSkinGlassOceans.dcu           
 +
* dxSkinHighContrast.dcu           
 +
* dxSkiniMaginary.dcu             
 +
* dxSkinLilian.dcu                 
 +
* dxSkinLiquidSky.dcu             
 +
* dxSkinLondonLiquidSky.dcu       
 +
* dxSkinMcSkin.dcu                 
 +
* dxSkinMetropolis.dcu             
 +
* dxSkinMetropolisDark.dcu         
 +
* dxSkinMoneyTwins.dcu             
 +
* dxSkinOffice2007Black.dcu       
 +
* dxSkinOffice2007Blue.dcu         
 +
* dxSkinOffice2007Green.dcu       
 +
* dxSkinOffice2007Pink.dcu         
 +
* dxSkinOffice2007Silver.dcu       
 +
* dxSkinOffice2010Black.dcu       
 +
* dxSkinOffice2010Blue.dcu         
 +
* dxSkinOffice2010Silver.dcu       
 +
* dxSkinOffice2013DarkGray.dcu     
 +
* dxSkinOffice2013LightGray.dcu   
 +
* dxSkinOffice2013White.dcu       
 +
* dxSkinPumpkin.dcu               
 +
* dxSkinSeven.dcu                 
 +
* dxSkinSevenClassic.dcu           
 +
* dxSkinSharp.dcu                 
 +
* dxSkinSharpPlus.dcu             
 +
* dxSkinSilver.dcu                 
 +
* dxSkinSpringTime.dcu             
 +
* dxSkinStardust.dcu               
 +
* dxSkinSummer2008.dcu             
 +
* dxSkinTheAsphaltWorld.dcu       
 +
* dxSkinValentine.dcu             
 +
* dxSkinVS2010.dcu                 
 +
* dxSkinWhiteprint.dcu             
 +
* dxSkinXmas2008Blue.dcu           
  
 +
Для того чтобы Delphi не включала эти файлы автоматически существует галочка
 +
Project -> ModifySkinOption. (можно просто обновить файл из svn policlinic.skincfg)
  
  
[[Категория:MIS3]]
+
[[Категория:Руководство программиста MIS3]]

Текущая версия на 10:26, 19 мая 2015

Общие

  1. расстояние между контролами по вертикали 10
  2. свойство TOP для контролов: 10,41,72, 103,134,165 ,195
  3. метки обязательных полей подчеркиваются красным (см. dmImages.SetRequiredFieldLabelStyle)
  4. настройки соединения с БД в ibis.ini
  5. текущие настройки приложения (положения окон, выбранный стили и т.п.) в реестре Software\IBIS\MIS (актуальное значение находится в dConfig.dmConfig.AppStorage.Root). Путь ветки реестра правильно брать так dmConfig.AppStorage.Root + '\' + Self.ClassName
  6. русификация в файле russian.lng (в том числе и для других языков через cxLocalizer)
  7. стиль нередактируемых контролов dmImages.escInfo
  8. стиль заголовков (для cxLabel над списками и пр) - dmImages.escCaption.
    • cxlabel.Height := 14
    • cxlabel.Style.Font.Size := 8
  9. AlignWithMargin := False (Избегаем его использования)

Главное окно

Горячие клавиши

Здесь информация может немного устареть. См описание классов и исходные коды модулей MIS3._Иерархия_классов иконки, горячие клавиши определены в модуле dImages.pas. См. dImages.SetShurtCutOnRibbon(AForm:TForm);

Действие Hotkey Место применения Примечания
Сохранить F2 Ctrl+S
Сохранить и закрыть Ctrl+Q или Ctrl+Enter
Добавить F3, NumPlus
Редактировать F4
Обновить F5
Удалить Shift+Del
Закрыть F12 или ESC
Выбрать Shift+ENTER
Фильтр Ctrl+F
Печать Ctrl+P
Сохранить и вернуть Shift+Enter
Проверить F7

В окнах списках

  • Ctrl+F4 - Закрыть текущий список
  • Ctrl+I - Включить инкрементальный поиск по таблице

Для разработчика

 IBISShortCut_DebuInfo : String = 'Ctrl+Shift+L'; // сочетание клавиш для показа системной информации об окне (имя класса, идентификатор объекта и т.п)
 IBISShortCut_Audit    : String = 'Ctrl+Shift+H'; // сочетание клавиш для вызова окна аудита

Окно с кнопками операций

Назначение показ кнопок с различными списками, без реализации самих списков

- Название должно заканчиваться на Tab - наследник от TdxRibbonForm

см MIS3. Иерархия классов

Окно список

  • Отображает один список (список справочников, людей и т.п.)
  • имя pas-файлы должно заканчиваться на List
  • умеет реагировать на сообщения об обновлении

Дизайн

  • FormStyle = fsMDIChild
  • tdxbarmanager
  • TdxRibbon

WinList.png см MIS3. Иерархия классов

WinOnTask

- наследник от WinOnTask (кнопка на панели задач) - название заканчиваем на WOT (WinOnTask)

IBIS WOT1.png

Дизайн

  • Наследуем от TfmWinOnTask
  • TdxBarmanager
  • dxRibbon.showheaders := False (в дизайнере)

см MIS3. Иерархия классов

Правила дизайна Ribbon

  • Подпись к группе кнопок должна быть существительным с Большой буквы (Файлы, Пользователи, Расписание, Документы, Действия и т.п.)
  • Подписи к кнопкам должны по возможности означать действие (глагол в совершенной форме) над объектом который указан в заголовке группы. Например: Сохранить, Редактировать, Закрыть, Удалить. Для двухсловных действий (Показать фильтр, Показать расписание) допускается пропуск действия. Т.е. Указываем просто Фильтр, Расписание и т.п. По возможности подпись к кнопке должна состоять из одного слова.

Модальное окно

Ibis modal.png

Простое модальное окно

  • Panel
    • Align := paBottom
    • Height := 41
  • Кнопки
    • Width := 75
    • Top := 8
    • Height := 25
    • Anchors := [akTop,akRight]
    • Кнопка "Отмена" Left := Panel.Width-15-75 := Panel.Width -90
    • Кнопка "ОК" Left := Panel.Width-(15-75)*2 := Panel.Width -180 расстояние между кнопками = 15
    • Кнопки TcxButton, Skin = ultraflat, skin = UserSkin
    • Кнопка OK имеет значение Default := True;

Поддержка скинов

Проект внутри себя не должен содержать никаких скинов. Все скины находятся во внешних файлах в папке skins и подгружаются динамически. Поэтому в исходных кодах в секции uses не должно быть следующих файлов (компиляция на сервере не пройдет):

  • dxSkinBlack.dcu
  • dxSkinBlue.dcu
  • dxSkinBlueprint.dcu
  • dxSkinCaramel.dcu
  • dxSkinCoffee.dcu
  • dxSkinDarkRoom.dcu
  • dxSkinDarkSide.dcu
  • dxSkinDevExpressDarkStyle.dcu
  • dxSkinDevExpressStyle.dcu
  • dxSkinFoggy.dcu
  • dxSkinGlassOceans.dcu
  • dxSkinHighContrast.dcu
  • dxSkiniMaginary.dcu
  • dxSkinLilian.dcu
  • dxSkinLiquidSky.dcu
  • dxSkinLondonLiquidSky.dcu
  • dxSkinMcSkin.dcu
  • dxSkinMetropolis.dcu
  • dxSkinMetropolisDark.dcu
  • dxSkinMoneyTwins.dcu
  • dxSkinOffice2007Black.dcu
  • dxSkinOffice2007Blue.dcu
  • dxSkinOffice2007Green.dcu
  • dxSkinOffice2007Pink.dcu
  • dxSkinOffice2007Silver.dcu
  • dxSkinOffice2010Black.dcu
  • dxSkinOffice2010Blue.dcu
  • dxSkinOffice2010Silver.dcu
  • dxSkinOffice2013DarkGray.dcu
  • dxSkinOffice2013LightGray.dcu
  • dxSkinOffice2013White.dcu
  • dxSkinPumpkin.dcu
  • dxSkinSeven.dcu
  • dxSkinSevenClassic.dcu
  • dxSkinSharp.dcu
  • dxSkinSharpPlus.dcu
  • dxSkinSilver.dcu
  • dxSkinSpringTime.dcu
  • dxSkinStardust.dcu
  • dxSkinSummer2008.dcu
  • dxSkinTheAsphaltWorld.dcu
  • dxSkinValentine.dcu
  • dxSkinVS2010.dcu
  • dxSkinWhiteprint.dcu
  • dxSkinXmas2008Blue.dcu

Для того чтобы Delphi не включала эти файлы автоматически существует галочка Project -> ModifySkinOption. (можно просто обновить файл из svn policlinic.skincfg)