Changeset 541 for cprs/branches/tmg-cprs/CPRS-Chart/fDrawers.pas
- Timestamp:
- Aug 12, 2009, 7:14:16 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cprs/branches/tmg-cprs/CPRS-Chart/fDrawers.pas
r496 r541 11 11 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 12 12 ExtCtrls, StdCtrls, Buttons, ORCtrls, ComCtrls, ImgList, uTemplates, 13 TMGHTML2, rHTMLTools, StrUtils, //kt added uses on this line. 8/09 13 14 Menus, ORClasses, ORFn, DKLang; 14 15 15 16 type 17 THTMLModeSwitcher = procedure(HTMLMode : boolean; Quiet : boolean) of object; //kt 8/09 16 18 TDrawer = (odNone, odTemplates, odEncounter, odReminders, odOrders); 17 19 TDrawers = set of TDrawer; … … 114 116 FindNextText : string; //kt 115 117 //kt End Mod ------------------- 118 FHtmlEditControl: THtmlObj; //kt 8/09 119 FHtmlModeSwitcher : THTMLModeSwitcher; //kt 8/09 116 120 FOpenToNode: string; 117 121 FOldMouseUp: TMouseEvent; … … 155 159 procedure ReloadTemplates; 156 160 procedure SetRichEditControl(const Value: TRichEdit); 161 procedure SetHTMLEditControl(const Value: THtmlObj); //kt 8/09 157 162 procedure CheckAsk; 158 163 procedure FontChanged(Sender: TObject); … … 167 172 procedure AddTemplateNode(const tmpl: TTemplate; const Owner: TTreeNode = nil); 168 173 procedure MoveCaret(X, Y: integer); 174 procedure MoveHTMLCaret(X, Y: integer); //kt 8/09 169 175 procedure NewRECDragDrop(Sender, Source: TObject; X, Y: Integer); 170 176 procedure NewRECDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; 171 177 var Accept: Boolean); 178 procedure NewRECHTMLDragDrop(Sender, Source: TObject; X, Y: Integer); //kt 8/09 179 procedure NewRECHTMLDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; 180 var Accept: Boolean); //kt 8/09 172 181 procedure InsertText; 173 182 procedure SetSplitter(const Value: TSplitter); … … 175 184 procedure SetSplitterActive(Active: boolean); 176 185 function EnableDrawer(Drawer: TDrawer; EnableIt: boolean): boolean; 177 function InsertOK(Ask: boolean): boolean; 186 //kt 8/09 function InsertOK(Ask: boolean): boolean; 187 function InsertOK(Ask: boolean; TemplateIsHTML : boolean = false): boolean; //kt 8/09 178 188 procedure OpenToNode(Path: string = ''); 179 189 property FindNext: boolean read FFindNext write SetFindNext; … … 196 206 procedure ResetTemplates; 197 207 property RichEditControl: TRichEdit read FRichEditControl write SetRichEditControl; 208 property HTMLEditControl : THtmlObj read FHtmlEditControl write SetHTMLEditControl; //kt 8/09 209 property HTMLModeSwitcher : THTMLModeSwitcher read FHtmlModeSwitcher write FHtmlModeSwitcher; //kt 8/09 198 210 property NewNoteButton: TButton read FNewNoteButton write FNewNoteButton; 199 211 property Splitter: TSplitter read FSplitter write SetSplitter; … … 202 214 property DefTempPiece: integer read FDefTempPiece write FDefTempPiece; 203 215 property TheOpenDrawer: TDrawer read FOpenDrawer; 216 function HTMLEditActive : boolean; //kt 8/09 204 217 published 205 218 property Align: TAlign read GetAlign write SetAlign; … … 218 231 uses fTemplateView, uCore, rTemplates, fTemplateEditor, dShared, uReminders, 219 232 fReminderDialog, RichEdit, fRptBox, Clipbrd, fTemplateDialog, fIconLegend, 233 Inifiles, //kt 8/09 220 234 uAccessibleTreeView, uAccessibleTreeNode; 221 235 … … 846 860 end; 847 861 862 procedure TfrmDrawers.SetHTMLEditControl(const Value: THtmlObj); 863 //kt added this function 8/09 864 begin 865 if (FHtmlEditControl <> Value) then begin 866 if (assigned(FHtmlEditControl)) then begin 867 FHtmlEditControl.OnDragDrop := FOldDragDrop; 868 FHtmlEditControl.OnDragOver := FOldDragOver; 869 end; 870 FHtmlEditControl := Value; 871 if (assigned(FHtmlEditControl)) then begin 872 FOldDragDrop := FHtmlEditControl.OnDragDrop; 873 FOldDragOver := FHtmlEditControl.OnDragOver; 874 FHtmlEditControl.OnDragDrop := NewRECHTMLDragDrop; 875 FHtmlEditControl.OnDragOver := NewRECHTMLDragOver; 876 end; 877 end; 878 end; 879 880 function TfrmDrawers.HTMLEditActive : boolean; 881 //kt added this function 8/09 882 begin 883 if assigned(FHtmlEditControl) then begin 884 Result := FHtmlEditControl.Active; 885 end else Result := false; 886 end; 848 887 849 888 procedure TfrmDrawers.MoveCaret(X, Y: integer); … … 857 896 end; 858 897 898 procedure TfrmDrawers.MoveHTMLCaret(X, Y: integer); 899 //kt added entire function 8/09 900 var pt: TPoint; 901 begin 902 FHtmlEditControl.SetFocus; 903 pt := Point(x, y); 904 FHTMLEditControl.MoveCaretToPos(pt); 905 end; 859 906 860 907 procedure TfrmDrawers.NewRECDragDrop(Sender, Source: TObject; X, … … 889 936 end; 890 937 938 procedure TfrmDrawers.NewRECHTMLDragDrop(Sender, Source: TObject; X, Y: Integer); 939 //kt added function 8/09 940 //NOTE: I think this can be combined with NewRECDragDrop, but must fix MoveCaret 941 begin 942 if (Source = tvTemplates) then begin 943 MoveHTMLCaret(X, Y); 944 InsertText; 945 end else if(assigned(FOldDragDrop)) then begin 946 FOldDragDrop(Sender, Source, X, Y); 947 end; 948 end; 949 950 procedure TfrmDrawers.NewRECHTMLDragOver(Sender, Source: TObject; 951 X, Y: Integer; State: TDragState; 952 var Accept: Boolean); 953 //kt added function 8/09 954 begin 955 Accept := FALSE; 956 if (Source = tvTemplates) then begin 957 if (assigned(FDragNode)) 958 and (TTemplate(FDragNode.Data).RealType in [ttDoc, ttGroup]) then begin 959 Accept := TRUE; 960 MoveHTMLCaret(X, Y); 961 end; 962 end else if (assigned(FOldDragOver)) then begin 963 FOldDragOver(Sender, Source, X, Y, State, Accept); 964 end; 965 end; 966 891 967 procedure TfrmDrawers.InsertText; 892 968 var … … 894 970 txt, DocInfo: string; 895 971 Template: TTemplate; 972 TemplateIsHTML : boolean; //kt 8/09 896 973 897 974 begin 898 975 DocInfo := ''; 899 if InsertOK(TRUE) and (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then900 begin976 //kt if InsertOK(TRUE) and (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then begin 977 if (dmodShared.TemplateOK(tvTemplates.Selected.Data)) then begin //kt 901 978 Template := TTemplate(tvTemplates.Selected.Data); 979 TemplateIsHTML := rHTMLTools.IsHTML(Template.Text); //kt 980 if not InsertOK(TRUE,TemplateIsHTML) then exit; //kt 902 981 Template.TemplatePreviewMode := FALSE; 903 982 if Template.IsReminderDialog then … … 908 987 txt := Template.COMObjectText('', DocInfo) 909 988 else 989 uTemplates.bUsingHTMLMode := HTMLEditActive; //kt 8/09 Will be used in TTemplate.GetText 910 990 txt := Template.Text; 911 991 if(txt <> '') then … … 913 993 // CheckBoilerplate4Fields(txt, 'Template: ' + Template.PrintName); <-- original line. //kt 7/15/2007 914 994 CheckBoilerplate4Fields(txt, DKLangConstW('fDrawers_Templatex') + Template.PrintName); //kt added 7/15/2007 915 BeforeLine := SendMessage(FRichEditControl.Handle, EM_EXLINEFROMCHAR, 0, FRichEditControl.SelStart); 916 FRichEditControl.SelText := txt; 917 FRichEditControl.SetFocus; 918 SendMessage(FRichEditControl.Handle, EM_SCROLLCARET, 0, 0); 919 AfterTop := SendMessage(FRichEditControl.Handle, EM_GETFIRSTVISIBLELINE, 0, 0); 920 SendMessage(FRichEditControl.Handle, EM_LINESCROLL, 0, -1 * (AfterTop - BeforeLine)); 995 if HTMLEditActive then begin //kt added block 8/09 996 //FHtmlEditControl.InsertTextAtCaret(txt); 997 FHtmlEditControl.SelText := txt; 998 FHtmlEditControl.SetFocus; 999 end else begin //kt original below 8/09 1000 BeforeLine := SendMessage(FRichEditControl.Handle, EM_EXLINEFROMCHAR, 0, FRichEditControl.SelStart); 1001 FRichEditControl.SelText := txt; 1002 FRichEditControl.SetFocus; 1003 SendMessage(FRichEditControl.Handle, EM_SCROLLCARET, 0, 0); 1004 AfterTop := SendMessage(FRichEditControl.Handle, EM_GETFIRSTVISIBLELINE, 0, 0); 1005 SendMessage(FRichEditControl.Handle, EM_LINESCROLL, 0, -1 * (AfterTop - BeforeLine)); 1006 end; //kt 8/09 921 1007 end; 922 1008 end; … … 1497 1583 end; 1498 1584 1499 function TfrmDrawers.InsertOK(Ask: boolean): boolean; 1500 1501 function REOK: boolean; 1502 begin 1503 Result := assigned(FRichEditControl) and 1504 FRichEditControl.Visible and 1505 FRichEditControl.Parent.Visible; 1506 end; 1507 1508 begin 1509 Result := REOK; 1585 1586 //kt 8/09 function TfrmDrawers.InsertOK(Ask: boolean): boolean; 1587 function TfrmDrawers.InsertOK(Ask: boolean; TemplateIsHTML : boolean): boolean; //kt 8/09 1588 1589 function EditControlOK: boolean; //kt 8/09 renamed. Was REOK 1590 begin 1591 if HTMLEditActive then begin //kt added this part 8/09 1592 Result := assigned(FHtmlEditControl) and 1593 FHtmlEditControl.Visible and 1594 TWinControl(FHtmlEditControl).Parent.Visible; 1595 end else begin //kt original below. 1596 Result := assigned(FRichEditControl) and 1597 FRichEditControl.Visible and 1598 FRichEditControl.Parent.Visible and 1599 FRichEditControl.Parent.Parent.Visible; //kt added last line 1600 end; 1601 end; 1602 1603 begin 1604 Result := EditControlOK; //kt renamed function. 1510 1605 if (not ask) and (not Result) and (assigned(FNewNoteButton)) then 1511 1606 Result := TRUE … … 1515 1610 begin 1516 1611 FNewNoteButton.Click; 1517 Result := REOK; 1612 if TemplateIsHTML and Assigned(FHtmlModeSwitcher) then begin //kt 8/09 1613 FHtmlModeSwitcher(TemplateIsHTML, true); //kt 8/09 1614 FHtmlEditControl.MoveCaretToEnd; //kt 8/09 1615 end; //kt 8/09 1616 Result := EditControlOK; //kt 8/09 Renamed function. 1518 1617 end; 1519 1618 end;
Note:
See TracChangeset
for help on using the changeset viewer.