Changeset 829 for cprs/trunk/CPRS-Chart/Templates/fTemplateEditor.pas
- Timestamp:
- Jul 7, 2010, 4:31:10 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cprs/trunk/CPRS-Chart/Templates/fTemplateEditor.pas
r456 r829 18 18 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 19 19 ExtCtrls, StdCtrls, ComCtrls, ORCtrls, Buttons, Mask, ORFn, ORNet, 20 uTemplates, Menus, ImgList, Clipbrd, ToolWin, MenuBar, TypInfo, MSXML_TLB; 20 uTemplates, Menus, ImgList, Clipbrd, ToolWin, MenuBar, TypInfo, MSXML_TLB, fBase508Form, 21 VA508AccessibilityManager, VA508ImageListLabeler; 21 22 22 23 type … … 24 25 TTemplateTreeType = (ttShared, ttPersonal); 25 26 26 TfrmTemplateEditor = class(T Form)27 TfrmTemplateEditor = class(TfrmBase508Form) 27 28 splMain: TSplitter; 28 pnlBottom: T ORAutoPanel;29 pnlBottom: TPanel; 29 30 btnApply: TButton; 30 31 btnCancel: TButton; … … 209 210 cbxLink: TORComboBox; 210 211 lblLink: TLabel; 212 imgLblTemplates: TVA508ImageListLabeler; 211 213 procedure btnNewClick(Sender: TObject); 212 214 procedure btnApplyClick(Sender: TObject); … … 339 341 Direction, InsertAt: Integer); 340 342 procedure cbxLinkChange(Sender: TObject); 341 procedure cbxLinkSynonymCheck(Sender: TObject; const Text: String;342 var IsSynonym: Boolean);343 343 procedure reBoilKeyUp(Sender: TObject; var Key: Word; 344 344 Shift: TShiftState); … … 346 346 procedure reBoilKeyDown(Sender: TObject; var Key: Word; 347 347 Shift: TShiftState); 348 procedure FormClose(Sender: TObject; var Action: TCloseAction); 348 349 private 349 350 FLastRect: TRect; … … 386 387 FCanDoReminders: boolean; 387 388 FCanDoCOMObjects: boolean; 388 FPersonalObjects: TStringList;389 //FPersonalObjects: TStringList; 389 390 FShowingTemplate: TTemplate; 390 391 FConsultServices: TStringList; … … 416 417 procedure UpdateInsertsDialogs; 417 418 procedure AutoLongLines(Sender: TObject); 418 procedure UpdatePersonalObjects;419 //procedure UpdatePersonalObjects; 419 420 procedure UpdateApply(Template: TTemplate); 420 421 procedure TemplateLocked(Sender: TObject); 421 422 procedure InitTrees; 423 procedure AdjustControls4FontChange; 424 procedure ShowGroupBoilerplate(Visible: boolean); 422 425 function GetLinkType(const ANode: TTreeNode): TTemplateLinkType; 423 426 end; 424 427 425 428 procedure EditTemplates(Form: TForm; NewTemplate: boolean = FALSE; CopiedText: string = ''; Shared: boolean = FALSE); 429 430 const 431 TemplateEditorSplitters = 'frmTempEditSplitters'; 432 TemplateEditorSplitters2 = 'frmTempEditSplitters2'; 433 434 var 435 tmplEditorSplitterMiddle: integer = 0; 436 tmplEditorSplitterProperties: integer = 0; 437 tmplEditorSplitterMain: integer = 0; 438 tmplEditorSplitterBoil: integer = 0; 439 tmplEditorSplitterNotes: integer = 0; 426 440 427 441 implementation … … 431 445 uses dShared, uCore, rTemplates, fTemplateObjects, uSpell, fTemplateView, 432 446 fTemplateAutoGen, fDrawers, fTemplateFieldEditor, fTemplateFields, XMLUtils, 433 fIconLegend, uReminders, uConst, rCore, rEventHooks, rConsults; 447 fIconLegend, uReminders, uConst, rCore, rEventHooks, rConsults, VAUtils, 448 rMisc, fFindingTemplates; 434 449 435 450 const … … 499 514 Drawers := TFrmDrawers(Form) 500 515 else 501 if IsPublishedProp(Form, 'Drawers') then502 Drawers := TFrmDrawers(GetOrdProp(Form, 'Drawers'));516 if IsPublishedProp(Form, DrawersProperty) then 517 Drawers := TFrmDrawers(GetOrdProp(Form, DrawersProperty)); 503 518 end; 504 519 … … 724 739 725 740 BtnApply.Enabled := BackupDiffers; 741 SetFormPosition(Self); 726 742 end; 727 743 … … 873 889 end; 874 890 lblNotes.Enabled := (not reNotes.ReadOnly); 875 if(reNotes.ReadOnly) then 876 reNotes.Color := ReadOnlyColor 877 else 878 reNotes.Color := clWindow; 891 UpdateReadOnlyColorScheme(reNotes, reNotes.ReadOnly); 879 892 cbxType.Enabled := ok; 880 893 lblType.Enabled := ok; … … 894 907 lblLines.Enabled := ok; 895 908 reBoil.ReadOnly := not ok; 896 if(ok) then 897 reBoil.Color := clWindow 898 else 899 reBoil.Color := ReadOnlyColor; 909 UpdateReadOnlyColorScheme(reBoil, not ok); 900 910 lblLink.Enabled := ok; 901 911 cbxLink.Enabled := ok; … … 937 947 end; 938 948 949 procedure TfrmTemplateEditor.ShowGroupBoilerplate(Visible: boolean); 950 begin 951 pnlGroupBP.Visible := Visible; 952 splBoil.Visible := Visible; 953 if Visible then 954 begin 955 reBoil.Align := alTop; 956 pnlGroupBP.Align := alClient; 957 reBoil.Height := tmplEditorSplitterBoil; 958 splBoil.Top := pnlGroupBP.Top - splBoil.Height; 959 end 960 else 961 begin 962 pnlGroupBP.Align := alBottom; 963 reBoil.Align := alClient; 964 end; 965 end; 966 939 967 procedure TfrmTemplateEditor.ShowInfo(Node: TTreeNode); 940 968 var … … 942 970 Idx: TTypeIndex; 943 971 CanDoCOM: boolean; 944 LinkTemplate: TTemplate;945 972 lt: TTemplateLinkType; 946 973 lts: string; 947 i: integer;948 974 949 975 begin … … 980 1006 begin 981 1007 FConsultServices := TStringList.Create; 982 F ConsultServices.Assign(LoadServiceListWithSynonyms(1));1008 FastAssign(LoadServiceListWithSynonyms(1), FConsultServices); 983 1009 SortByPiece(FConsultServices, U, 2); 984 1010 end; 985 for i := 0 to FConsultServices.Count-1 do 986 begin 987 LinkTemplate := GetLinkedTemplate(piece(FConsultServices[i],U,1), ltConsult); 988 if (not assigned(LinkTemplate)) or (LinkTemplate = FShowingTemplate) then 989 cbxLink.Items.Add(FConsultServices[i]); 990 end; 1011 FastAssign(FConsultServices, cbxLink.Items); 991 1012 end 992 1013 else … … 1171 1192 edtGap.Text := '0'; 1172 1193 reBoil.Clear; 1173 pnlGroupBP.Visible := FALSE; 1174 splBoil.Visible := FALSE; 1194 ShowGroupBoilerplate(False); 1175 1195 pnlBoilerplateResize(Self); 1176 1196 pnlCOM.Visible := FALSE; … … 1196 1216 begin 1197 1217 if(pnlGroupBP.Visible) and (pnlGroupBP.Height > (pnlBoilerplate.Height-29)) then 1218 begin 1198 1219 pnlGroupBP.Height := pnlBoilerplate.Height-29; 1220 end; 1199 1221 if cbLongLines.checked then 1200 1222 Max := 240 … … 1449 1471 begin 1450 1472 reBoil.ReadOnly := TRUE; 1451 reBoil.Color := ReadOnlyColor;1473 UpdateReadOnlyColorScheme(reBoil, TRUE); 1452 1474 UpdateInsertsDialogs; 1453 1475 end; 1454 pnlGroupBP.Visible := ItemOK; 1455 splBoil.Visible := ItemOK; 1476 ShowGroupBoilerplate(ItemOK); 1456 1477 if(not ItemOK) and (IsReminderDialog or IsCOMObject) then 1457 1478 BPOK := FALSE; 1458 if(ItemOK) then1459 splBoil.Top := pnlGroupBP.Top - splBoil.Height;1460 1479 pnlBoilerplateResize(Self); 1461 1480 pnlBoilerplate.Visible := BPOK; … … 1482 1501 frmTemplateFields := nil; 1483 1502 end; 1484 KillObj(@FPersonalObjects); 1503 //---------- CQ #8665 - RV -------- 1504 //KillObj(@FPersonalObjects); 1505 if (assigned(uPersonalObjects)) then 1506 begin 1507 KillObj(@uPersonalObjects); 1508 uPersonalObjects.Free; 1509 uPersonalObjects := nil; 1510 end; 1511 // ---- end CQ #8665 ------------- 1485 1512 dmodShared.OnTemplateLock := nil; 1486 1513 dmodShared.InEditor := FALSE; … … 2040 2067 end; 2041 2068 2069 procedure TfrmTemplateEditor.AdjustControls4FontChange; 2070 var 2071 x: integer; 2072 2073 procedure Adjust(Control: TWinControl); 2074 begin 2075 x := x - Control.Width - 2; 2076 Control.Left := x; 2077 end; 2078 2079 begin 2080 if FCanEditShared then 2081 begin 2082 x := pnlSharedBottom.Width; 2083 Adjust(sbSHDelete); 2084 Adjust(sbSHDown); 2085 Adjust(sbSHUp); 2086 cbSHHide.Width := x; 2087 end; 2088 x := pnlBottom.Width; 2089 Adjust(btnApply); 2090 Adjust(btnCancel); 2091 Adjust(btnOK); 2092 cbEditShared.Width := TextWidthByFont(cbEditShared.Font.Handle, cbEditShared.Caption) + 25; 2093 cbNotes.Left := cbEditShared.Left + cbEditShared.Width + 60; 2094 cbNotes.Width := TextWidthByFont(cbNotes.Font.Handle, cbNotes.Caption) + 25; 2095 end; 2096 2042 2097 function TfrmTemplateEditor.AllowMove(ADropNode, ADragNode: TTreeNode): boolean; 2043 2098 var … … 2205 2260 MoveCopyButtons; 2206 2261 tvTreeChange(FCurTree, FCurTree.Selected); 2262 if FCanEditShared then 2263 AdjustControls4FontChange; 2207 2264 end; 2208 2265 … … 2327 2384 procedure TfrmTemplateEditor.btnFindClick(Sender: TObject); 2328 2385 var 2329 Found: boolean;2386 Found: TTreeNode; 2330 2387 edtSearch: TEdit; 2388 IsNext: boolean; 2331 2389 FindNext: boolean; 2332 2390 FindWholeWords: boolean; … … 2334 2392 Tree: TTreeView; 2335 2393 LastFoundNode, TmpNode: TTreeNode; 2336 S1,S2: string;2394 // S1,S2: string; 2337 2395 2338 2396 begin … … 2345 2403 FindCase := cbShMatchCase.Checked; 2346 2404 LastFoundNode := FLastFoundShNode; 2347 if(FSharedEmptyNodeCount > 0) then2348 begin2349 FInternalHiddenExpand := TRUE;2350 try2351 tvShared.Items.GetFirstNode.Expand(TRUE);2352 finally2353 FInternalHiddenExpand := FALSE;2354 end;2355 end;2356 2405 end 2357 2406 else … … 2363 2412 FindCase := cbPerMatchCase.Checked; 2364 2413 LastFoundNode := FLastFoundPerNode; 2365 if(FPersonalEmptyNodeCount > 0) then2366 begin2367 FInternalHiddenExpand := TRUE;2368 try2369 tvPersonal.Items.GetFirstNode.Expand(TRUE);2370 finally2371 FInternalHiddenExpand := FALSE;2372 end;2373 end;2374 2414 end; 2375 2415 if(edtSearch.text <> '') then 2376 2416 begin 2377 if((FindNext) and assigned (LastFoundNode)) then 2378 TmpNode := LastFoundNode.GetNext 2417 IsNext := ((FindNext) and assigned (LastFoundNode)); 2418 if IsNext then 2419 2420 TmpNode := LastFoundNode 2379 2421 else 2380 2422 TmpNode := Tree.Items.GetFirstNode; 2381 Found := FALSE; 2382 if(assigned(TmpNode)) then 2383 begin 2384 S1 := edtSearch.Text; 2385 if(not FindCase) then 2386 S1 := UpperCase(S1); 2387 while (assigned(TmpNode) and (not Found)) do 2388 begin 2389 S2 := TmpNode.Text; 2390 if(not FindCase) then 2391 S2 := UpperCase(S2); 2392 Found := SearchMatch(S1, S2, FindWholeWords); 2393 if(not Found) then 2394 TmpNode := TmpNode.GetNext; 2395 end; 2396 end; 2397 if(Found) then 2398 begin 2423 FInternalHiddenExpand := TRUE; 2424 try 2425 Found := FindTemplate(edtSearch.Text, Tree, Self, TmpNode, 2426 IsNext, not FindCase, FindWholeWords); 2427 finally 2428 FInternalHiddenExpand := FALSE; 2429 end; 2430 if Assigned(Found) then 2431 begin 2432 Tree.Selected := Found; 2399 2433 if(Tree = tvShared) then 2400 FLastFoundShNode := TmpNode2434 FLastFoundShNode := Found 2401 2435 else 2402 FLastFoundPerNode := TmpNode;2436 FLastFoundPerNode := Found; 2403 2437 SetFindNext(Tree, TRUE); 2404 Tree.Selected := TmpNode;2405 end2406 else2407 begin2408 if(FindNext) then2409 S1 := ''2410 else2411 S1 := ' "' + edtSearch.Text + '" was not Found.';2412 SetFindNext(Tree, FALSE);2413 InfoBox('Search Complete.' + S1, 'Information', MB_OK or MB_ICONINFORMATION);2414 2438 end; 2415 2439 end; … … 2499 2523 end; 2500 2524 pnlBoilerplateResize(Self); 2525 AdjustControls4FontChange; 2526 MoveCopyButtons; 2501 2527 end; 2502 2528 end; … … 2516 2542 begin 2517 2543 UpdatePersonalObjects; 2518 if FPersonalObjects.Count > 0 then2544 if uPersonalObjects.Count > 0 then // -------- CQ #8665 - RV ------------ 2519 2545 begin 2520 2546 DoIt := FALSE; 2521 2547 for i := 0 to dmodShared.TIUObjects.Count-1 do 2522 if FPersonalObjects.IndexOf(Piece(dmodShared.TIUObjects[i],U,2)) >= 0 then2548 if uPersonalObjects.IndexOf(Piece(dmodShared.TIUObjects[i],U,2)) >= 0 then // -------- CQ #8665 - RV ------------ 2523 2549 frmTemplateObjects.cboObjects.Items.Add(dmodShared.TIUObjects[i]); 2524 2550 end; 2525 2551 end; 2526 2552 if DoIt then 2527 frmTemplateObjects.cboObjects.Items.Assign(dmodShared.TIUObjects);2553 FastAssign(dmodShared.TIUObjects, frmTemplateObjects.cboObjects.Items); 2528 2554 frmTemplateObjects.Font := Font; 2529 2555 frmTemplateObjects.re := reBoil; … … 2633 2659 end; 2634 2660 2661 procedure TfrmTemplateEditor.FormClose(Sender: TObject; 2662 var Action: TCloseAction); 2663 begin 2664 SaveUserBounds(Self); 2665 end; 2666 2635 2667 procedure TfrmTemplateEditor.FormCloseQuery(Sender: TObject; 2636 2668 var CanClose: Boolean); … … 2666 2698 procedure TfrmTemplateEditor.splBoilMoved(Sender: TObject); 2667 2699 begin 2700 if pnlBoilerplate.Visible and pnlGroupBP.Visible then 2701 tmplEditorSplitterBoil := reBoil.Height; 2702 if pnlNotes.Visible then 2703 tmplEditorSplitterNotes := pnlNotes.Height; 2668 2704 pnlBoilerplateResize(Self); 2669 2705 end; … … 3105 3141 procedure TfrmTemplateEditor.mbMainResize(Sender: TObject); 3106 3142 begin 3107 pnlMenu.Width := mbMain.Width + 3; 3143 pnlMenu.Width := mbMain.Width + 4; 3144 mbMain.Width := pnlMenu.Width - 3; 3108 3145 end; 3109 3146 … … 3179 3216 dmodShared.LoadTIUObjects; 3180 3217 UpdatePersonalObjects; 3181 GetAutoGenText(AName, AText, FPersonalObjects);3218 GetAutoGenText(AName, AText, uPersonalObjects); // -------- CQ #8665 - RV ------------ 3182 3219 if(AName <> '') and (AText <> '') then 3183 3220 begin … … 3274 3311 pnlNotes.Visible := cbNotes.Checked; 3275 3312 splNotes.Visible := cbNotes.Checked; 3276 splNotes.Top := pnlNotes.Top-3; 3313 if cbNotes.Checked then 3314 begin 3315 pnlNotes.Height := tmplEditorSplitterNotes; 3316 pnlNotes.Top := pnlBottom.Top - pnlNotes.Height; 3317 splNotes.Top := pnlNotes.Top-3; 3318 end; 3277 3319 pnlBoilerplateResize(Self); 3278 3320 end; … … 3397 3439 if (Flds.Count > 0) then begin 3398 3440 ExpandEmbeddedFields(Flds); 3399 F lds.Assign(ExportTemplateFields(Flds));3441 FastAssign(ExportTemplateFields(Flds), Flds); 3400 3442 for i := 0 to Flds.Count-1 do 3401 3443 Flds[i] := ' ' + Flds[i]; 3402 Tmpl.AddStrings(Flds);3444 FastAddStrings(Flds, Tmpl); 3403 3445 end; {if} 3404 3446 Tmpl.Add('</'+XMLHeader+'>'); … … 3704 3746 FUpdating := FALSE; 3705 3747 end; 3706 ShowM essage('Can not assign a Reminder Dialog to a Reason for Request');3748 ShowMsg('Can not assign a Reminder Dialog to a Reason for Request'); 3707 3749 end 3708 3750 else … … 3790 3832 end; 3791 3833 3792 procedure TfrmTemplateEditor.UpdatePersonalObjects;3834 (*procedure TfrmTemplateEditor.UpdatePersonalObjects; 3793 3835 var 3794 3836 i: integer; … … 3803 3845 FPersonalObjects.Sorted := TRUE; 3804 3846 end; 3805 end; 3847 end;*) 3806 3848 3807 3849 (*function TfrmTemplateEditor.ModifyAllowed(const Node: TTreeNode): boolean; … … 3875 3917 begin 3876 3918 Resync([TTemplate(Sender)]); 3877 ShowM essage(Format(TemplateLockedText, [TTemplate(Sender).PrintName]));3919 ShowMsg(Format(TemplateLockedText, [TTemplate(Sender).PrintName])); 3878 3920 end; 3879 3921 … … 4074 4116 try 4075 4117 case TTemplateLinkType(pnlLink.Tag) of 4076 ltTitle: tmpSL.Assign(SubSetOfAllTitles(StartFrom, Direction));4118 ltTitle: FastAssign(SubSetOfAllTitles(StartFrom, Direction), tmpSL); 4077 4119 // ltConsult: 4078 4120 ltProcedure: 4079 4121 begin 4080 tmpSL.Assign(SubSetOfProcedures(StartFrom, Direction));4122 FastAssign(SubSetOfProcedures(StartFrom, Direction), tmpSL); 4081 4123 for i := 0 to tmpSL.Count-1 do 4082 4124 begin … … 4096 4138 var 4097 4139 Template,LinkTemplate: TTemplate; 4140 update: boolean; 4098 4141 4099 4142 begin … … 4104 4147 if assigned(Template) and Template.CanModify then 4105 4148 begin 4149 update := true; 4106 4150 if cbxLink.ItemIEN > 0 then 4107 4151 begin … … 4109 4153 if (assigned(LinkTemplate) and (LinkTemplate <> Template)) then 4110 4154 begin 4111 ShowM essage(GetLinkName(cbxLink.ItemID, TTemplateLinkType(pnlLink.tag)) +4155 ShowMsg(GetLinkName(cbxLink.ItemID, TTemplateLinkType(pnlLink.tag)) + 4112 4156 ' is already assigned to another template.'); 4113 cbxLink.ItemIndex := -1; 4157 cbxLink.SelectByID(Template.LinkIEN); 4158 update := False; 4159 end 4160 else 4161 begin 4162 Template.FileLink := ConvertFileLink(cbxLink.ItemID, TTemplateLinkType(pnlLink.tag)); 4163 if Template.LinkName <> '' then 4164 edtName.Text := copy(Template.LinkName,1,edtName.MaxLength); 4114 4165 end; 4115 Template.FileLink := ConvertFileLink(cbxLink.ItemID, TTemplateLinkType(pnlLink.tag));4116 if Template.LinkName <> '' then4117 edtName.Text := copy(Template.LinkName,1,edtName.MaxLength);4118 4166 end 4119 4167 else 4120 4168 Template.FileLink := ''; 4121 UpdateApply(Template); 4122 end; 4123 end; 4124 end; 4125 4126 procedure TfrmTemplateEditor.cbxLinkSynonymCheck(Sender: TObject; 4127 const Text: String; var IsSynonym: Boolean); 4128 var 4129 LinkTemplate: TTemplate; 4130 var IEN: string; 4131 4132 begin 4133 IsSynonym := FALSE; 4134 if pnlLink.Visible and assigned(FShowingTemplate) then 4135 begin 4136 IEN := Piece(Text,#9,30); 4137 if IEN <> '' then 4138 begin 4139 LinkTemplate := GetLinkedTemplate(IEN, TTemplateLinkType(pnlLink.Tag)); 4140 IsSynonym := (assigned(LinkTemplate) and (LinkTemplate <> FShowingTemplate)); 4141 end 4142 else 4143 IsSynonym := FALSE; 4169 if update then 4170 UpdateApply(Template); 4171 end; 4144 4172 end; 4145 4173 end;
Note:
See TracChangeset
for help on using the changeset viewer.