Changeset 541 for cprs/branches/tmg-cprs/CPRS-Chart/fNotes.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/fNotes.pas
r453 r541 1 //kt -- Modified with SourceScanner on 7/19/2007 1 //kt -- Modified with SourceScanner on 7/19/2007, also 8/09 2 2 unit fNotes; 3 3 {$O-} … … 9 9 fHSplit, StdCtrls, ExtCtrls, Menus, ComCtrls, ORCtrls, ORFn, uConst, ORDtTm, 10 10 uPCE, ORClasses, fDrawers, ImgList, rTIU, uTIU, uDocTree, fRptBox, fPrintList, 11 fNoteST, ORNet, fNoteSTStop, OleCtrls, SHDocVw, DKLang; 11 MSHTML,TMGHTML2,ActiveX, //kt added this line 8/09 for HTML editing 12 fNoteST, ORNet, fNoteSTStop, OleCtrls, SHDocVw, DKLang, Buttons, ToolWin; 13 14 type 15 TEditModes = (emNone,emText,emHTML); //kt 8/09 16 TViewModes = (vmEdit,vmView,vmText,vmHTML); //kt 8/09 17 TViewModeSet = Set of TViewModes; //kt 8/09 18 const 19 vmHTML_MODE : array [false..true] of TViewModes = (vmText,vmHTML); //kt 8/09 20 emHTML_MODE : array [false..true] of TEditModes = (emText,emHTML); //kt 8/09 12 21 13 22 type … … 150 159 mnuViewRemoteData: TMenuItem; 151 160 mnuViewPostings: TMenuItem; 161 pnlHtmlViewer: TPanel; //kt 8/09 162 pnlTextWrite: TPanel; //kt 8/09 163 popNoteMemoHTMLFormat: TMenuItem; //kt 8/09 164 pnlHTMLWrite: TPanel; //kt 8/09 165 pnlHTMLEdit: TPanel; //kt 8/09 166 ToolBar: TToolBar; //kt 8/09 167 cbFontNames: TComboBox; //kt 8/09 168 cbFontSize: TComboBox; //kt 8/09 169 btnFonts: TSpeedButton; //kt 8/09 170 btnItalic: TSpeedButton; //kt 8/09 171 btnBold: TSpeedButton; //kt 8/09 172 btnUnderline: TSpeedButton; //kt 8/09 173 btnBullets: TSpeedButton; //kt 8/09 174 btnNumbers: TSpeedButton; //kt 8/09 175 btnLeftAlign: TSpeedButton; //kt 8/09 176 btnCenterAlign: TSpeedButton; //kt 8/09 177 btnRightAlign: TSpeedButton; //kt 8/09 178 btnMoreIndent: TSpeedButton; //kt 8/09 179 btnLessIndent: TSpeedButton; //kt 8/09 180 btnTextColor: TSpeedButton; //kt 8/09 181 btnBackColor: TSpeedButton; //kt 8/09 152 182 procedure mnuChartTabClick(Sender: TObject); 153 183 procedure lstNotesClick(Sender: TObject); … … 222 252 procedure memNewNoteKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 223 253 procedure sptHorzCanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean); 224 procedure WebBrowser1DocumentComplete(Sender: TObject; //kt added 225 const pDisp: IDispatch; var URL: OleVariant); //kt added 254 //kt procedure WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); //kt added 226 255 procedure popNoteMemoInsTemplateClick(Sender: TObject); 227 256 procedure popNoteMemoPreviewClick(Sender: TObject); … … 235 264 procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, 236 265 Y: Integer); 237 procedure WebBrowser1CommandStateChange(Sender: TObject;238 Command: Integer; Enable: WordBool); //kt239 266 procedure memNewNoteKeyPress(Sender: TObject; var Key: Char); 240 267 procedure memNewNoteKeyUp(Sender: TObject; var Key: Word; … … 245 272 procedure ViewInfo(Sender: TObject); 246 273 procedure mnuViewInformationClick(Sender: TObject); 274 procedure btnBackColorClick(Sender: TObject); //kt 8/09 275 procedure btnBoldClick(Sender: TObject); //kt 8/09 276 procedure btnBulletsClick(Sender: TObject); //kt 8/09 277 procedure btnCenterAlignClick(Sender: TObject); //kt 8/09 278 procedure btnFontsClick(Sender: TObject); //kt 8/09 279 procedure btnItalicClick(Sender: TObject); //kt 8/09 280 procedure btnLeftAlignClick(Sender: TObject); //kt 8/09 281 procedure btnLessIndentClick(Sender: TObject); //kt 8/09 282 procedure btnMoreIndentClick(Sender: TObject); //kt 8/09 283 procedure btnNumbersClick(Sender: TObject); //kt 8/09 284 procedure btnRightAlignClick(Sender: TObject); //kt 8/09 285 procedure btnTextColorClick(Sender: TObject); //kt 8/09 286 procedure btnUnderlineClick(Sender: TObject); //kt 8/09 287 procedure cbFontNamesChange(Sender: TObject); //kt 8/09 288 procedure cbFontSizeChange(Sender: TObject); //kt 8/09 289 procedure popNoteMemoHTMLFormatClick(Sender: TObject); //kt 8/09 247 290 private 248 291 FNavigatingTab : Boolean; //Currently Using tab to navigate … … 256 299 FImageFlag: TBitmap; 257 300 FEditNote: TEditNoteRec; 301 FViewNote : TStringList; //kt 8/09 302 FWarmedUp : boolean; //kt 8/09 258 303 FVerifyNoteTitle: Integer; 259 304 FDocList: TStringList; … … 271 316 LastAuthor: Int64; //kt 6-1-05 272 317 LastAuthorName: string; //kt 6-1-05 318 FHTMLEditMode : TEditModes; //kt 7/09 This is the mode of the note being edited (even if not actively displayed) 319 FViewMode : TViewModeSet; //kt 7/09 This is the status of the display 273 320 procedure frmFramePnlPatientExit(Sender: TObject); 274 321 procedure frmDrawerPnlTemplatesButtonExit(Sender: TObject); … … 307 354 function SetNoteTreeLabel(AContext: TTIUContext): string; 308 355 procedure UpdateNoteAuthor(DocInfo: string); 356 procedure SetHTMLEditMode(HTMLEditMode : boolean; Quiet : Boolean=false); //kt 357 procedure ToggleHTMLEditMode; //kt 358 procedure BroadcastImages(Note: TStrings); //kt 359 procedure ProperRepaint(Editing : Boolean); //kt 360 procedure SetEditorFocus; //kt 361 function EditorHasText : boolean; //kt 309 362 public 310 HTMLfilename : string; //kt added 363 HtmlEditor : THtmlObj; //kt 8/09 364 HtmlViewer : THtmlObj; //kt 8/09 365 procedure SetDisplayToHTMLvsText(Mode :TViewModeSet; Lines : TStrings; ActivateOnly : boolean=False); //kt 8/09 311 366 function ActiveEditOf(AnIEN: Int64; ARequest: integer): Boolean; 312 367 function AllowContextChange(var WhyNot: string): Boolean; override; … … 319 374 procedure AssignRemForm; 320 375 property OrderID: string read FOrderID; 376 property ViewMode :TViewModeSet read FViewMode; //kt 8/09 321 377 procedure LstNotesToPrint; 378 constructor Create(AOwner: TComponent); override; //kt 8/09 379 destructor Destroy; override; //kt 8/09 322 380 published 323 381 property Drawers: TFrmDrawers read GetDrawers; // Keep Drawers published … … 339 397 uAccessibleTreeView, uAccessibleTreeNode, fTemplateDialog, DateUtils, 340 398 StrUtils {//KT added 1-1-05}, 341 mshtml, {//kt added 5-2-05}342 f Images, {//kt added 9-20-05}399 //fImages, {//kt added 9-20-05} 400 fOptionsNotes, //kt 8/09 343 401 rHTMLTools; {//kt added 5-27-05 for IsHTMLDocument} 344 402 … … 352 410 NT_ACT_EDIT_NOTE = 4; 353 411 NT_ACT_ID_ENTRY = 5; 412 413 VIEW_ACTIVATE_ONLY = true; //kt 8/09 354 414 355 415 //TX_NEED_VISIT = 'A visit is required before creating a new progress note.'; <-- original line. //kt 7/19/2007 … … 534 594 uIDNotesActive: Boolean; 535 595 596 constructor TfrmNotes.Create(AOwner: TComponent); 597 //kt Added function 8/09 598 begin 599 inherited Create(AOwner); 600 FViewNote := TStringList.Create; 601 end; 602 603 destructor TfrmNotes.Destroy; 604 //kt Added function 8/09 605 begin 606 FViewNote.Free; 607 FEditNote.Lines.Free; //kt 608 inherited Destroy; 609 end; 610 536 611 537 612 { TPage common methods --------------------------------------------------------------------- } … … 578 653 case BOOLCHAR[frmFrame.CCOWContextChanging] of 579 654 '1': begin 580 if memNewNote.GetTextLen > 0 then 655 if ((vmHTML in FViewMode) and (HTMLEditor.Text <> '')) //kt 8/09 656 or ((not (vmHTML in FViewMode)) and (memNewNote.GetTextLen > 0 )) then begin //kt 581 657 // WhyNot := WhyNot + 'A note in progress will be saved as unsigned. ' <-- original line. //kt 7/19/2007 582 658 WhyNot := WhyNot + DKLangConstW('fNotes_A_note_in_progress_will_be_saved_as_unsignedx') //kt added 7/19/2007 583 e lse659 end else begin //kt 584 660 // WhyNot := WhyNot + 'An empty note in progress will be deleted. '; <-- original line. //kt 7/19/2007 585 661 WhyNot := WhyNot + DKLangConstW('fNotes_An_empty_note_in_progress_will_be_deletedx'); //kt added 7/19/2007 662 end; //kt 586 663 Result := False; 587 664 end; … … 649 726 lstNotes.Clear; 650 727 memNote.Clear; 728 HTMLViewer.Clear; //kt 729 HTMLEditor.Clear; //kt 730 FWarmedUp := false; //kt 731 SetDisplayToHTMLvsText([vmText,vmView],nil,VIEW_ACTIVATE_ONLY); //kt 651 732 memPCEShow.Clear; 652 733 uPCEShow.Clear; … … 774 855 Addend := 0; 775 856 {LastCosigner & LastCosignerName aren't cleared because they're used as default for next note.} 776 Lines := nil; 857 //kt 8/09 Lines := nil; 858 if Assigned (Lines) then Lines.Clear; //kt 8/09 777 859 PRF_IEN := 0; 778 860 ActionIEN := ''; … … 781 863 txtSubject.Text := ''; 782 864 if memNewNote <> nil then memNewNote.Clear; //CQ7012 Added test for nil 865 HTMLEditor.Clear; //kt 8/09 866 HTMLViewer.Clear; //kt 8/09 867 FHTMLEditMode := emNone; //kt 8/09 783 868 timAutoSave.Enabled := False; 784 869 // clear the PCE object for editing … … 795 880 if(ShouldShow) then 796 881 sptVert.Top := memPCEShow.Top - sptVert.Height; 797 memNote.Invalidate; 882 if (vmHTML in FViewMode) then begin //kt 8/09 883 HTMLViewer.Invalidate; //kt 8/09 884 end else begin //kt 8/09 885 memNote.Invalidate; 886 end; //kt 8/09 798 887 end; 799 888 … … 1047 1136 x, WhyNot, DocInfo: string; 1048 1137 tempPos : integer; //kt 6-1-05 1138 Mode : TViewModeSet; //kt 8/09 1139 BoilerplateIsHTML : boolean;//kt 8/09 1049 1140 1050 1141 begin … … 1057 1148 try 1058 1149 ClearEditControls; 1150 FEditNote.Lines.Free; //(done d/t full wipe-out on line below} //kt 8/09 1059 1151 FillChar(FEditNote, SizeOf(FEditNote), 0); //v15.7 1152 FEditNote.Lines := TStringList.Create; //Freed in Destructor //kt 8/09 1060 1153 with FEditNote do 1061 1154 begin … … 1074 1167 TitleName := ''; 1075 1168 end; 1076 //DateTime := FMNow; //kt 6-1-051077 DateTime := Encounter.DateTime; //kt 6-1-051169 //DateTime := FMNow; //kt 6-1-05 1170 DateTime := Encounter.DateTime; //kt 6-1-05 1078 1171 //kt begin changes -------------- 6-1-05 1079 1172 if LastAuthor<>0 then begin … … 1174 1267 FChanged := False; 1175 1268 cmdChangeClick(Self); // will set captions, sign state for Changes 1269 Mode := [vmEdit] + [vmHTML_MODE[fOptionsNotes.DefaultEditHTMLMode]]; //kt 8/09 1270 SetDisplayToHTMLvsText(Mode, nil, VIEW_ACTIVATE_ONLY); // kt 8/09 1176 1271 lstNotesClick(Self); // will make pnlWrite visible 1177 1272 if timAutoSave.Interval <> 0 then EnableAutosave := TRUE; 1178 if txtSubject.Visible then txtSubject.SetFocus else memNewNote.SetFocus; 1273 //kt 6/3/09 original --> if txtSubject.Visible then txtSubject.SetFocus else memNewNote.SetFocus; 1274 if txtSubject.Visible then begin //kt 8/09 1275 txtSubject.SetFocus; //kt 8/09 1276 end else begin //kt 8/09 1277 SetEditorFocus; //kt memNewNote.SetFocus; //kt 8/09 1278 end; //kt 8/09 1179 1279 end else 1180 1280 begin … … 1195 1295 DocInfo := MakeXMLParamTIU(IntToStr(CreatedNote.IEN), FEditNote); 1196 1296 ExecuteTemplateOrBoilerPlate(TmpBoilerPlate, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo); 1197 memNewNote.Lines.Assign(TmpBoilerPlate); 1297 //kt original --> memNewNote.Lines.Assign(TmpBoilerPlate); 1298 BoilerplateIsHTML := rHTMLTools.IsHTML(TmpBoilerPlate.Text); //kt 8/09 1299 FEditNote.Lines.Assign(TmpBoilerPlate); //kt 8/09 1300 if not ((vmHTML in FViewMode)) and BoilerplateIsHTML then begin //kt 8/09 1301 FViewMode := FViewMode - [vmText] + [vmHTML]; //kt 8/09 1302 end; //kt 8/09 1303 SetDisplayToHTMLvsText(FViewMode,FEditNote.Lines); //kt 8/09 1304 if (vmHTML in FViewMode) then begin //kt 8/09 1305 HtmlEditor.MoveCaretToEnd; //kt 8/09 1306 Application.ProcessMessages; //kt 8/09 1307 end; //kt 8/09 1198 1308 UpdateNoteAuthor(DocInfo); 1199 1309 TmpBoilerPlate.Free; … … 1204 1314 frmNotes.pnlWriteResize(Self); 1205 1315 end; 1316 1317 1318 procedure TfrmNotes.SetEditorFocus; 1319 //kt added function 8/09 1320 begin 1321 try 1322 if (vmHTML in FViewMode) then begin //kt 8/09 1323 HtmlEditor.SetFocus; //kt 8/09 1324 end else begin //kt 8/09 1325 memNewNote.SetFocus; 1326 end; //kt 8/09 1327 except 1328 on E: Exception do begin 1329 // ignore error. Info in E 1330 end; 1331 end; 1332 end; 1333 1206 1334 1207 1335 procedure TfrmNotes.InsertAddendum; … … 1290 1418 lstNotesClick(Self); // will make pnlWrite visible 1291 1419 if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True; 1292 memNewNote.SetFocus;1420 SetEditorFocus; //kt memNewNote.SetFocus; //kt 8/09 1293 1421 end else 1294 1422 begin … … 1307 1435 tmpNode: TTreeNode; 1308 1436 x: string; 1437 Mode : TViewModeSet; //kt 1438 1309 1439 begin 1310 1440 ClearEditControls; … … 1313 1443 Changes.Add(CH_DOC, lstNotes.ItemID, GetTitleText(EditingIndex), '', CH_SIGN_YES); 1314 1444 GetNoteForEdit(FEditNote, lstNotes.ItemIEN); 1315 memNewNote.Lines.Assign(FEditNote.Lines); 1445 Mode := [vmEdit] + [vmHTML_MODE[IsHTML(FEditNote.Lines) or (vmHTML in FViewMode)]]; //kt 8/09 1446 SetDisplayToHTMLvsText(Mode,FEditNote.Lines); //kt 8/09 1447 //kt memNewNote.Lines.Assign(FEditNote.Lines); //kt 8/09 1316 1448 FChanged := False; 1317 1449 if FEditNote.Title = TYP_ADDENDUM then … … 1361 1493 lstNotesClick(Self); // will make pnlWrite visible 1362 1494 if timAutoSave.Interval <> 0 then timAutoSave.Enabled := True; 1363 memNewNote.SetFocus;1495 SetEditorFocus; //kt memNewNote.SetFocus; //kt 8/09 1364 1496 end; 1365 1497 … … 1369 1501 UpdatedNote: TCreatedDoc; 1370 1502 x: string; 1503 EmptyNote : boolean; //kt 1504 1371 1505 begin 1372 1506 SetupVars; //kt added 7/19/2007 to replace constants with vars. 1373 1507 Saved := False; 1374 if (memNewNote.GetTextLen = 0) or (not ContainsVisibleChar(memNewNote.Text)) then 1375 begin 1508 if not (vmHTML in FViewMode) then begin //kt 8/09 1509 EmptyNote := (memNewNote.GetTextLen = 0) //kt 8/09 1510 or (not ContainsVisibleChar(memNewNote.Text)); //kt 8/09 1511 end else begin //kt 8/09 1512 EmptyNote := (HtmlEditor.GetTextLen = 0) //kt 8/09 1513 or (not ContainsVisibleChar(HtmlEditor.Text)); //kt 8/09 1514 end; //kt 8/09 1515 //kt 8/09 if (memNewNote.GetTextLen = 0) or (not ContainsVisibleChar(memNewNote.Text)) then 1516 //kt 8/09 begin 1517 if EmptyNote then begin 1376 1518 lstNotes.ItemIndex := EditingIndex; 1377 1519 x := lstNotes.ItemID; … … 1395 1537 end; 1396 1538 //ExpandTabsFilter(memNewNote.Lines, TAB_STOP_CHARS); 1397 FEditNote.Lines := memNewNote.Lines; 1539 if FEditNote.Lines = nil then FEditNote.Lines := TStringList.Create; //kt 1540 //kt 8/09 FEditNote.Lines := memNewNote.Lines; 1541 if (vmHTML in FViewMode) then begin //kt 8/09 1542 SplitToArray(WrapHTML(HtmlEditor.HTMLText), FEditNote.Lines); //kt 8/09 1543 end else begin //kt 8/09 1544 FEditNote.Lines.Assign(memNewNote.Lines); //kt 8/09 1545 end; //kt 8/09 1398 1546 //FEditNote.Lines:= SetLinesTo74ForSave(memNewNote.Lines, Self); 1399 1547 FEditNote.Subject := txtSubject.Text; … … 1417 1565 FNewIDChild := False; 1418 1566 FChanged := False; 1567 HTMLEditor.KeyStruck := false; //kt 1419 1568 end else 1420 1569 begin … … 1438 1587 begin 1439 1588 inherited; 1440 //kt --- Begin Modification 9-2005 kt1589 //kt --- Begin Modification 9-2005, 8/09 ------------- 1441 1590 CacheDir := ExtractFilePath(ParamStr(0))+ 'Cache'; //kt 9-05 1442 if not DirectoryExists(CacheDir) then begin 1443 CreateDir(CacheDir); 1444 end; 1445 HTMLfilename := CacheDir + '\html_note.html'; //kt 5-05 1591 if not DirectoryExists(CacheDir) then CreateDir(CacheDir); 1592 //kt HTMLfilename := CacheDir + '\html_note.html'; //kt 5-05 1446 1593 LastAuthor :=0; //kt 5-05 1447 1594 LastAuthorName:=''; //kt 5-05 1448 //kt --- End Modification 9-2005 kt 1595 DesiredHTMLFontSize := 2; //Used later to downsize during printing. 1596 SetRegHTMLFontSize(DesiredHTMLFontSize); //0=SMALLEST ... 4=LARGEST 1597 //kt Note: On creation, THtmlObj will remember Application.OnMessage. But if 1598 // another object (say a prior THtmlObj) has become active and already 1599 // changed the handler, then there will be a problem. So probably best 1600 // to create them all at one. //kt 1601 HtmlViewer := THtmlObj.Create(pnlHTMLViewer,Application); 1602 HtmlEditor := THtmlObj.Create(pnlHTMLEdit,Application); 1603 TWinControl(HtmlViewer).Parent:=pnlHTMLViewer; 1604 TWinControl(HtmlViewer).Align:=alClient; 1605 HtmlEditor.PrevControl := cmdPCE; 1606 HtmlEditor.NextControl := cmdChange; 1607 //Note: A 'loaded' function will initialize the THtmlObj's, but it can't be 1608 // done until after this constructor is done, and this TfrmNotes has been 1609 // assigned a parent. So done elsewhere. 1610 HtmlViewer.PopupMenu := popNoteMemo; 1611 TWinControl(HtmlEditor).Parent:=pnlHTMLEdit; 1612 TWinControl(HtmlEditor).Align:=alClient; 1613 HtmlEditor.PopupMenu := popNoteMemo; 1614 cbFontNames.Items.Assign(Screen.Fonts); 1615 FViewMode := [vmView,vmText]; 1616 FHTMLEditMode := emNone; 1617 HTMLViewer.BackgroundColor := ReadOnlyColor; 1618 //kt --- End Modification 9-2005, 8/09 ------ 1449 1619 PageID := CT_NOTES; 1450 1620 memNote.Color := ReadOnlyColor; … … 1458 1628 frmDrawers.Align := alBottom; 1459 1629 frmDrawers.RichEditControl := memNewNote; 1630 frmDrawers.HTMLEditControl := HtmlEditor; //kt 8/09 1631 frmDrawers.HTMLModeSwitcher := SetHTMLEditMode; //kt 8/09 1460 1632 frmDrawers.NewNoteButton := cmdNewNote; 1461 1633 frmDrawers.Splitter := splDrawers; … … 1468 1640 FDocList := TStringList.Create; 1469 1641 TAccessibleTreeView.WrapControl(tvNotes); 1642 RestoreRegHTMLFontSize; //kt, elh 8/09 1470 1643 end; 1471 1644 … … 1475 1648 inherited; 1476 1649 pnlRight.Refresh; 1477 memNote.Repaint; 1650 if (vmHTML in FViewMode) then begin //kt 8/09 1651 HTMLViewer.Repaint; //kt 8/09 1652 end else begin //kt 8/09 1653 memNote.Repaint 1654 end; //kt 8/09 1478 1655 end; 1479 1656 … … 1483 1660 begin 1484 1661 inherited; 1662 //kt NOTE: I don't know how to do the equivalent for HTML. Actually, I don't think it applies. 1485 1663 LimitEditWidth(memNewNote, MAX_PROGRESSNOTE_WIDTH - 1); 1486 1664 … … 1498 1676 { loads the text for the selected note or displays the editing panel for the selected note } 1499 1677 var 1500 ImageList : TStringList; //kt added 1/1/05 1501 i : integer; //kt added 1/1/05 1502 begin 1503 inherited; 1504 with lstNotes do if ItemIndex = -1 then Exit 1505 else if ItemIndex = EditingIndex then 1506 begin 1507 pnlWrite.Visible := True; 1508 pnlRead.Visible := False; 1509 mnuViewDetail.Enabled := False; 1510 if (FEditNote.IDParent <> 0) and (not FNewIDChild) then 1511 mnuActChange.Enabled := False 1512 else 1513 mnuActChange.Enabled := True; 1514 mnuActLoadBoiler.Enabled := True; 1515 UpdateReminderFinish; 1516 end else 1517 begin 1518 // StatusText('Retrieving selected progress note...'); <-- original line. //kt 7/19/2007 1519 StatusText(DKLangConstW('fNotes_Retrieving_selected_progress_notexxx')); //kt added 7/19/2007 1520 Screen.Cursor := crAppStart; //kt changed from crHourGlass; 1/1/05 1521 //Screen.Cursor := crHourGlass; //kt 1522 pnlRead.Visible := True; 1523 pnlWrite.Visible := False; 1524 UpdateReminderFinish; 1525 lblTitle.Caption := Piece(Piece(Items[ItemIndex], U, 8), ';', 1) + #9 + Piece(Items[ItemIndex], U, 2) + ', ' + 1526 Piece(Items[ItemIndex], U, 6) + ', ' + Piece(Piece(Items[ItemIndex], U, 5), ';', 2) + 1527 ' (' + FormatFMDateTime('mmm dd,yy@hh:nn', MakeFMDateTime(Piece(Items[ItemIndex], U, 3))) 1528 + ')'; 1529 lvNotes.Caption := lblTitle.Caption; 1530 LoadDocumentText(memNote.Lines, ItemIEN); 1531 memNote.SelStart := 0; 1532 mnuViewDetail.Enabled := True; 1533 mnuViewDetail.Checked := False; 1534 mnuActChange.Enabled := False; 1535 mnuActLoadBoiler.Enabled := False; 1536 Screen.Cursor := crDefault; 1537 StatusText(''); 1538 end; 1539 if(assigned(frmReminderTree)) then 1540 frmReminderTree.EnableActions; 1541 1542 //kt changed to following block 5/31/05 1543 if IsHTMLDocument(MemNote.Lines) then begin 1544 rHTMLTools.ActivateWebBrowser; 1545 end else begin 1546 rHTMLTools.ActivateMemo; 1547 end; 1548 //------end block -------- 1549 1678 Note : TStrings; //kt 6/09. Will be pointer to FViewNote, or FEditNote.Lines 1679 Editing : boolean; //kt 8/09 1680 Mode : TViewModeSet; //kt 8/09 1681 IsHTML : boolean; //kt 8/09 1682 1683 begin 1684 inherited; 1685 //kt 8/09 with lstNotes do if ItemIndex = -1 then Exit 1686 //kt 8/09 else if ItemIndex = EditingIndex then 1687 1688 with lstNotes do begin //kt 8/09 1689 if ItemIndex = -1 then Exit; //kt 8/09 1690 Editing := (ItemIndex = EditingIndex); //kt 8/09 1691 if Editing then begin //kt 8/09 1692 if FEditNote.Lines = nil then FEditNote.Lines := TStringList.Create; //kt 8/09 1693 Note := FEditNote.Lines; //kt 8/09 1694 {pnlWrite.Visible := True; //kt 8/09 1695 pnlRead.Visible := False; } //kt done in SetHTMLorTextEditor //kt 8/09 1696 mnuViewDetail.Enabled := False; 1697 if (FEditNote.IDParent <> 0) and (not FNewIDChild) then 1698 mnuActChange.Enabled := False 1699 else 1700 mnuActChange.Enabled := True; 1701 mnuActLoadBoiler.Enabled := True; 1702 UpdateReminderFinish; 1703 Mode := [vmEdit] + [vmHTML_MODE[(FHTMLEditMode=emHTML)]]; //kt 8/09 1704 SetDisplayToHTMLvsText(Mode,FEditNote.Lines,VIEW_ACTIVATE_ONLY); //kt 8/09 1705 FWarmedUp := true; //kt 8/09 1706 end else begin 1707 // StatusText('Retrieving selected progress note...'); <-- original line. //kt 7/19/2007 1708 StatusText(DKLangConstW('fNotes_Retrieving_selected_progress_notexxx')); //kt added 7/19/2007 1709 Screen.Cursor := crAppStart; //kt changed from crHourGlass; 1/1/05 1710 //kt 8/09 pnlRead.Visible := True; 1711 //kt 8/09 pnlWrite.Visible := False; 1712 UpdateReminderFinish; 1713 lblTitle.Caption := Piece(Piece(Items[ItemIndex], U, 8), ';', 1) + #9 + Piece(Items[ItemIndex], U, 2) + ', ' + 1714 Piece(Items[ItemIndex], U, 6) + ', ' + Piece(Piece(Items[ItemIndex], U, 5), ';', 2) + 1715 ' (' + FormatFMDateTime('mmm dd,yy@hh:nn', MakeFMDateTime(Piece(Items[ItemIndex], U, 3))) 1716 + ')'; 1717 lvNotes.Caption := lblTitle.Caption; 1718 //kt 8/09 LoadDocumentText(memNote.Lines, ItemIEN); 1719 LoadDocumentText(FViewNote, ItemIEN); //kt 8/09 1720 Note := FViewNote; //kt 8/09 1721 memNote.SelStart := 0; 1722 mnuViewDetail.Enabled := True; 1723 mnuViewDetail.Checked := False; 1724 mnuActChange.Enabled := False; 1725 mnuActLoadBoiler.Enabled := False; 1726 Screen.Cursor := crDefault; 1727 StatusText(''); 1728 IsHTML := rHTMLTools.IsHTML(FViewNote); //kt 8/09 1729 Mode := [vmView] + [vmHTML_MODE[IsHTML]]; //kt 8/09 1730 SetDisplayToHTMLvsText(Mode,FViewNote); //kt 8/09 1731 if not FWarmedUp and IsHTML then begin //kt 8/09 1732 FWarmedUp := true; //kt 8/09 1733 //First HTML page won't display without this... //kt 8/09 1734 SetDisplayToHTMLvsText(Mode,FViewNote); //kt 8/09 1735 end; //kt 8/09 1736 end; 1737 end; //kt 8/09 1738 1739 if(assigned(frmReminderTree)) then frmReminderTree.EnableActions; 1550 1740 //DisplayPCE; //kt 5-31-05 (moved down below) 1551 1741 pnlRight.Refresh; 1552 memNewNote.Repaint; 1553 memNote.Repaint; 1742 ProperRepaint(Editing); //kt 8/09 1743 //kt 8/09 memNewNote.Repaint; 1744 //kt 8/09 memNote.Repaint; 1554 1745 NotifyOtherApps(NAE_REPORT, 'TIU^' + lstNotes.ItemID); 1555 DisplayPCE; //kt 5-31-05 (move down from above) 1746 //kt RESTORE LATER... frmImages.NewNoteSelected(Editing); //kt 9/05 1747 DisplayPCE; //kt 5-31-05 (move down from above) 1748 BroadcastImages(Note); //kt 8/09 1556 1749 1557 1750 //----------------------------- 1558 frmImages.NewNoteSelected(lstNotes.ItemIndex=EditingIndex); //kt added 9-20-05 1559 //kt added the following block: 1/1/05 1751 //kt RESTORE LATER... frmImages.NewNoteSelected(lstNotes.ItemIndex=EditingIndex); //kt added 9-20-05 1752 end; 1753 1754 procedure TfrmNotes.ProperRepaint(Editing : Boolean); 1755 //kt Added function 8/09 1756 begin 1757 if Editing then begin 1758 if (vmHTML in FViewMode) then begin 1759 HtmlEditor.Repaint; 1760 end else begin 1761 memNewNote.Repaint; 1762 end; 1763 end else begin 1764 if (vmHTML in FViewMode) then begin 1765 HtmlViewer.Repaint; 1766 end else begin 1767 memNote.Repaint; 1768 end; 1769 end; 1770 Application.ProcessMessages; 1771 end; 1772 1773 procedure TfrmNotes.BroadcastImages(Note: TStrings); 1774 //kt added function 8/09 1775 var 1776 ImageList : TStringList; 1777 i : integer; 1778 begin 1560 1779 ImageList := TStringList.Create; 1561 if rHTMLTools.CheckForImageLink( memNote.Lines, ImageList) then begin1780 if rHTMLTools.CheckForImageLink(Note, ImageList) then begin 1562 1781 for i:= 0 to ImageList.Count-1 do begin 1563 1782 NotifyOtherApps(NAE_REPORT, 'IMAGE^' + ImageList.Strings[i]); … … 1565 1784 end; 1566 1785 ImageList.Free; 1567 //kt end of addition 1/1/05 1568 //----------------------------- 1786 end; 1787 1788 function TfrmNotes.EditorHasText : boolean; 1789 //kt added function 8/09 1790 begin 1791 if (vmHTML in FViewMode) then begin 1792 Result := (HTMLViewer.Text <> ''); 1793 end else begin 1794 Result := (memNote.Lines.Count > 0); 1795 end; 1569 1796 end; 1570 1797 … … 1590 1817 PCEObj := nil; 1591 1818 AnIEN := lstNotes.ItemIEN; 1592 if (AnIEN <> 0) and (memNote.Lines.Count > 0) then 1819 //kt 8/09 if (AnIEN <> 0) and (memNote.Lines.Count > 0) then 1820 if (AnIEN <> 0) and EditorHasText then //kt 8/09 1593 1821 begin 1594 1822 ActOnDocument(ActionSts, AnIEN, 'VIEW'); … … 1650 1878 begin 1651 1879 ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo); 1652 memNewNote.Lines.Assign(BoilerText); 1880 SetDisplayToHTMLvsText([vmHTML,vmEdit],BoilerText); //kt 8/09 1881 //kt 8/09 memNewNote.Lines.Assign(BoilerText); 1653 1882 UpdateNoteAuthor(DocInfo); 1654 1883 FChanged := False; … … 1661 1890 BoilerText := TStringList.Create; 1662 1891 try 1663 NoteEmpty := memNewNote.Text = ''; 1892 if (vmHTML in FViewMode) then begin //kt 8/09 1893 NoteEmpty := (HTMLEditor.Text = ''); //kt 8/09 1894 end else begin //kt 8/09 1895 NoteEmpty := memNewNote.Text = ''; 1896 end; //kt 8/09 1664 1897 LoadBoilerPlate(BoilerText, FEditNote.Title); 1665 1898 if (BoilerText.Text <> '') or … … 1673 1906 1: begin 1674 1907 ExecuteTemplateOrBoilerPlate(BoilerText, FEditNote.Title, ltTitle, Self, 'Title: ' + FEditNote.TitleName, DocInfo); 1675 memNewNote.Lines.AddStrings(BoilerText); // append 1908 if (vmHTML in FViewMode) then begin //kt 8/09 1909 HTMLEditor.Text := HTMLEditor.Text + Text2HTML(BoilerText); //kt 8/09 1910 end else begin //kt 8/09 1911 memNewNote.Lines.AddStrings(BoilerText); // append 1912 end; //kt 8/09 1676 1913 UpdateNoteAuthor(DocInfo); 1677 1914 end; … … 1687 1924 if not NoteEmpty then 1688 1925 // if not FChanged and (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES) 1689 if (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES) 1690 then memNewNote.Lines.Clear; 1926 if (InfoBox(TX_BLR_CLEAR, TC_BLR_CLEAR, MB_YESNO) = ID_YES) then begin 1927 if (vmHTML in FViewMode) then begin //kt 8/09 1928 HTMLEditor.Clear; //kt 8/09 1929 end else begin //kt 8/09 1930 memNewNote.Lines.Clear; 1931 end; //kt 8/09 1932 end; 1691 1933 end; 1692 1934 end; {if BoilerText.Text <> ''} … … 1783 2025 begin 1784 2026 inherited; 2027 //kt 8/09 NOTE: the equivalent functionality for HTML is HTMLEditor.Keystruck. Don't have to set here. 1785 2028 FChanged := True; 1786 2029 end; … … 1798 2041 var 1799 2042 ErrMsg: string; 1800 begin 1801 if (EditingIndex > -1) and FChanged then 2043 Changed : boolean; //kt 8/09 2044 begin 2045 Changed := false; //kt 8/09 2046 if (vmHTML in FViewMode) then begin //kt 8/09 2047 Changed := HTMLEditor.KeyStruck; //kt 8/09 2048 end else begin //kt 8/09 2049 Changed := FChanged; //kt 8/09 2050 end; //kt 8/09 2051 //kt 8/09 if (EditingIndex > -1) and FChanged then 2052 if (EditingIndex > -1) and Changed then //kt 8/09 1802 2053 begin 1803 2054 // StatusText('Autosaving note...'); <-- original line. //kt 7/19/2007 … … 1806 2057 timAutoSave.Enabled := False; 1807 2058 try 2059 if (vmHTML in FViewMode) then begin //kt 2060 rHTMLTools.SplitToArray (HTMLEditor.HTMLText, FEditNote.Lines); //kt 2061 SetText(ErrMsg, FEditNote.Lines, lstNotes.GetIEN(EditingIndex),Suppress);//kt 2062 end else begin //kt 1808 2063 SetText(ErrMsg, memNewNote.Lines, lstNotes.GetIEN(EditingIndex), Suppress); 2064 end; //kt 1809 2065 finally 1810 2066 timAutoSave.Enabled := True; 1811 2067 end; 1812 2068 FChanged := False; 2069 HTMLEditor.KeyStruck := false; //kt 1813 2070 StatusText(''); 1814 2071 end; … … 2259 2516 if tvNotes.Selected <> nil then tvNotesChange(Self, tvNotes.Selected) else 2260 2517 begin*) 2518 FHTMLEditMode := emNone; //kt 8/09 2261 2519 pnlWrite.Visible := False; 2262 2520 pnlRead.Visible := True; … … 2530 2788 2531 2789 procedure TfrmNotes.popNoteMemoPopup(Sender: TObject); 2790 const FORMAT_MODE : array[false..true] of string = ('fNotes_Formatted_Text','fNotes_Plain_Text'); //kt 8/09 2532 2791 begin 2533 2792 inherited; … … 2545 2804 end else 2546 2805 begin 2806 popNoteMemoHTMLFormat.Enabled := False; //kt 8/09 2547 2807 popNoteMemoCut.Enabled := False; 2548 2808 popNoteMemoCopy.Enabled := False; … … 2550 2810 popNoteMemoTemplate.Enabled := False; 2551 2811 end; 2812 popNoteMemoHTMLFormat.Caption := DKLangConstW('fNotes_Change_Edit_Mode_To') + ' ' + //kt 8/09 2813 DKLangConstW(FORMAT_MODE[(vmHTML in FViewMode)]); //kt 8/09 2814 popNoteMemoHTMLFormat.Enabled := pnlWrite.Visible; //kt 8/09 2552 2815 if pnlWrite.Visible then 2553 2816 begin 2554 popNoteMemoSpell.Enabled := True; 2555 popNoteMemoGrammar.Enabled := True; 2556 popNoteMemoReformat.Enabled := True; 2817 //kt 8/09 popNoteMemoSpell.Enabled := True; 2818 //kt 8/09 popNoteMemoGrammar.Enabled := True; 2819 //kt 8/09 popNoteMemoReformat.Enabled := True; 2820 popNoteMemoSpell.Enabled := not pnlHTMLWrite.Visible; //kt 8/09 2821 popNoteMemoGrammar.Enabled := not pnlHTMLWrite.Visible; //kt 8/09 2822 popNoteMemoReformat.Enabled := not pnlHTMLWrite.Visible; //kt 8/09 2557 2823 popNoteMemoReplace.Enabled := (FEditCtrl.GetTextLen > 0); 2558 2824 popNoteMemoPreview.Enabled := (frmDrawers.TheOpenDrawer = odTemplates) and Assigned(frmDrawers.tvTemplates.Selected); … … 2567 2833 popNoteMemoInsTemplate.Enabled := False; 2568 2834 end; 2835 end; 2836 2837 (*//kt 8/09 NOTICE: 2838 On the form, popNoteMenu was edited to add a new item as below 2839 popNoteMemoHTMLFormat : TMenuItem 2840 Captions: ~ Edit as Formatted Text 2841 OnClick -- popNoteMemoHTMLFormatClick 2842 *) 2843 2844 procedure TfrmNotes.popNoteMemoHTMLFormatClick(Sender: TObject); 2845 //kt added function 8/09 2846 begin 2847 inherited; 2848 ToggleHTMLEditMode; 2569 2849 end; 2570 2850 … … 2698 2978 StatusText(DKLangConstW('fNotes_Retrieving_progress_note_detailsxxx')); //kt added 7/19/2007 2699 2979 Screen.Cursor := crAppStart; //kt, was crHourGlass; 2700 LoadDetailText(memNote.Lines, lstNotes.ItemIEN); 2980 //kt LoadDetailText(memNote.Lines, lstNotes.ItemIEN); 2981 LoadDetailText(FViewNote, lstNotes.ItemIEN); //kt 8/09 2982 SetDisplayToHTMLvsText(FViewMode,FViewNote); //kt 8/09 2701 2983 Screen.Cursor := crDefault; 2702 2984 StatusText(''); 2703 2985 memNote.SelStart := 0; 2704 memNote.Repaint; 2986 if not (vmHTML in FViewMode) then //kt 8/09 2987 memNote.Repaint; 2705 2988 end 2706 2989 else 2707 2990 lstNotesClick(Self); 2708 SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0); 2991 if (vmHTML in FViewMode) then begin //kt 8/09 2992 SendMessage(HTMLViewer.Handle, WM_VSCROLL, SB_TOP, 0); //kt 8/09 2993 end else begin //kt 8/09 2994 SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0); 2995 end; //kt 8/09 2709 2996 end; 2710 2997 … … 2720 3007 begin 2721 3008 FSilent := True; 2722 if memNewNote.GetTextLen > 0 then SaveCurrentNote(Saved) 3009 //kt 8/09 if memNewNote.GetTextLen > 0 then SaveCurrentNote(Saved) 3010 if EditorHasText then SaveCurrentNote(Saved) //kt 8/09 2723 3011 else 2724 3012 begin … … 2968 3256 lvNotes.Items.Clear; 2969 3257 memNote.Clear; 3258 HTMLViewer.Clear; //kt 8/09 2970 3259 tvNotes.FullCollapse; 2971 3260 tvNotes.Selected := tvNotes.TopItem; … … 3041 3330 //kt note: The Images tab will delete all files in .\Cache, which 3042 3331 // might include HTMLfilename. No harm if already deleted. 3043 DeleteFile(HTMLfilename); //kt added 5-2-053332 //kt 8/09 DeleteFile(HTMLfilename); //kt added 5-2-05 3044 3333 TAccessibleTreeView.UnwrapControl(tvNotes); 3045 3334 FDocList.Free; 3046 3335 FImageFlag.Free; 3047 3336 KillDocTreeObjects(tvNotes); 3337 HtmlEditor.Free; //kt 6/7/09 3338 HtmlViewer.Free; //kt 6/7/09 3048 3339 inherited; 3049 3340 end; … … 3056 3347 procedure TfrmNotes.AssignRemForm; 3057 3348 begin 3349 //kt 8/09 ReminderDialog interaction has not yet been debugged with HTML formatted text. 3058 3350 with RemForm do 3059 3351 begin … … 3065 3357 Drawers := frmDrawers; 3066 3358 NewNoteRE := memNewNote; 3359 NewNoteHTMLE := HTMLEditor; //kt 3067 3360 NoteList := lstNotes; 3068 3361 end; … … 3093 3386 uChanging := True; 3094 3387 RedrawSuspend(memNote.Handle); 3388 RedrawSuspend(HTMLViewer.Handle); //kt 8/09 3095 3389 RedrawSuspend(lvNotes.Handle); 3096 3390 tvNotes.Items.BeginUpdate; … … 3101 3395 lvNotes.Items.Clear; 3102 3396 memNote.Clear; 3397 HTMLViewer.Clear; //kt 8/09 3103 3398 memNote.Invalidate; 3104 3399 lblTitle.Caption := ''; … … 3217 3512 end; 3218 3513 memNote.Clear; 3514 HTMLViewer.Clear; //kt 8/09 3219 3515 with lvNotes do 3220 3516 begin … … 3240 3536 end; 3241 3537 finally 3242 RedrawActivate(memNote.Handle); 3538 //kt NOTE: Is this enough?? 3539 if (vmHTML in FViewMode) then begin //kt 8/09 3540 RedrawActivate(HtmlViewer.Handle); //kt 8/09 3541 end else begin //kt 8/09 3542 RedrawActivate(memNote.Handle); 3543 end; //kt 8/09 3243 3544 RedrawActivate(lvNotes.Handle); 3244 3545 tmpList.Free; … … 3264 3565 i: integer; 3265 3566 WhyNot: string; 3567 Mode : TViewModeSet; //kt 8/09 3266 3568 begin 3267 3569 if uChanging then Exit; … … 3272 3574 begin 3273 3575 memNote.Clear; 3576 HTMLViewer.Clear; //kt 8/09 3274 3577 if Selected = nil then Exit; 3275 3578 if uIDNotesActive then … … 3292 3595 RedrawSuspend(lvNotes.Handle); 3293 3596 RedrawSuspend(memNote.Handle); 3597 RedrawSuspend(HTMLViewer.Handle); //kt 8/09 3294 3598 popNoteListExpandSelected.Enabled := Selected.HasChildren; 3295 3599 popNoteListCollapseSelected.Enabled := Selected.HasChildren; … … 3354 3658 ShowPCEControls(False); 3355 3659 end; 3356 pnlWrite.Visible := False; 3357 pnlRead.Visible := True; 3660 //kt 8/09 3661 //kt NOTE: At this point the list has changed. But what is the new note-to-view's format? 3662 // We can't just use FViewMode. Because that just states what mode was used on the last note. 3663 Mode := [vmView] + [vmHTML_MODE[vmHTML in FViewMode]]; //kt 8/09 3664 SetDisplayToHTMLvsText(Mode,nil,VIEW_ACTIVATE_ONLY); //kt 8/09 3665 //kt 8/09 pnlWrite.Visible := False; 3666 //kt 8/09 pnlRead.Visible := True; 3358 3667 // uncommented next 4 lines in v17.5 (RV) 3359 3668 //----------------------------- … … 3368 3677 begin 3369 3678 memNote.Clear; 3679 HTMLViewer.Clear; //kt 8/09 3370 3680 lvNotes.Visible := False; 3371 3681 lstNotes.SelectByID(Piece(x, U, 1)); 3372 3682 lstNotesClick(Self); 3373 SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0); 3683 if (vmHTML in FViewMode) then begin //kt 8/09 3684 SendMessage(HTMLViewer.Handle, WM_VSCROLL, SB_TOP, 0); //kt 8/09 3685 end else begin //kt 8/09 3686 SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0); 3687 end; //kt 8/09 3374 3688 end; 3375 3689 SendMessage(tvNotes.Handle, WM_HSCROLL, SB_THUMBTRACK, 0); 3376 3690 RedrawActivate(lvNotes.Handle); 3377 RedrawActivate(memNote.Handle); 3691 if (vmHTML in FViewMode) then begin //kt 8/09 3692 RedrawActivate(HtmlViewer.Handle); //kt 8/09 3693 end else begin //kt 8/09 3694 RedrawActivate(memNote.Handle); 3695 end; //kt 8/09 3378 3696 end; 3379 3697 end; … … 3599 3917 lstNotes.SelectByID(Item.SubItems[5]); 3600 3918 lstNotesClick(Self); 3601 SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0); 3919 if (vmHTML in FViewMode) then begin //kt 8/09 3920 SendMessage(HTMLViewer.Handle, WM_VSCROLL, SB_TOP, 0); //kt 8/09 3921 end else begin //kt 8/09 3922 SendMessage(memNote.Handle, WM_VSCROLL, SB_TOP, 0); 3923 end; //kt 8/09 3602 3924 end; 3603 3925 end; … … 3900 4222 end; 3901 4223 4224 (* 3902 4225 //kt 5-2-05 added following function (initially copied from fReports.pas) 3903 4226 procedure TfrmNotes.WebBrowser1DocumentComplete(Sender: TObject; … … 3920 4243 } 3921 4244 end; 3922 4245 *) 3923 4246 3924 4247 procedure TfrmNotes.popNoteMemoInsTemplateClick(Sender: TObject); … … 4075 4398 end; 4076 4399 4400 procedure TfrmNotes.SetHTMLEditMode(HTMLEditMode : boolean; Quiet : boolean); 4401 //kt added function 7/09 4402 var Mode : TViewModeSet; //kt 4403 const HTML_MODE_S : Array[false..true] of string[16] = ('PLAIN','FORMATTED'); 4404 begin 4405 if FEditNote.Lines = nil then FEditNote.Lines := TStringList.Create; //kt 4406 if HTMLEditMode then begin 4407 if (FViewMode = [vmHTML,vmEdit]) then exit; //no change needed. 4408 FEditNote.Lines.Assign(memNewNote.Lines); 4409 end else begin 4410 if (FViewMode = [vmText,vmEdit]) then exit; //no change needed. 4411 if HtmlEditor.GetTextLen > 0 then begin 4412 if MessageDlg('Do you want to convert this note to PLAIN TEXT?'+#10#13+ 4413 '(May cause loss of formatting information.)',mtWarning, mbOKCancel,0) <> mrOK then begin 4414 exit; 4415 end; 4416 end; 4417 FEditNote.Lines.Text := HTMLEditor.Text; 4418 end; 4419 Mode := [vmEdit] + [vmHTML_MODE[HTMLEditMode]]; //kt 4420 SetDisplayToHTMLvsText(Mode,FEditNote.Lines); 4421 if not Quiet then begin 4422 if MessageDlg('Start new notes in '+HTML_MODE_S[HTMLEditMode]+' TEXT by default?',mtConfirmation,[mbYES,mbNO],0) = mrYES then begin 4423 fOptionsNotes.SetDefaultEditHTMLMode(HTMLEditMode); 4424 end; 4425 end; 4426 end; 4427 4428 procedure TfrmNotes.ToggleHTMLEditMode; 4429 //kt added function 6/09 4430 var NewHTMLMode: boolean; 4431 begin 4432 if not (vmEdit in FViewMode) then exit; //quit if not in edit mode 4433 NewHTMLMode := not (vmHTML in FViewMode); 4434 SetHTMLEditMode(NewHTMLMode); 4435 end; 4436 4437 4438 procedure TfrmNotes.SetDisplayToHTMLvsText(Mode : TViewModeSet; 4439 Lines : TStrings; 4440 ActivateOnly : boolean {default=False}); 4441 //kt added function 7/09 4442 //If ActivateOnly=True, then the visibility is set, but the control is not filled with text. 4443 4444 type 4445 TPanelVisibilityMode = (pvmReadMode, pvmWriteMode); //kt 4446 4447 procedure SetPanelVisibility(Mode: TPanelVisibilityMode; HTMLMode : boolean); 4448 4449 procedure SetpnlReadVisibility(Visible : boolean; HTMLMode : boolean); 4450 begin 4451 pnlRead.Visible := Visible; 4452 if Visible then begin 4453 memNote.Visible := not HTMLMode; 4454 memNote.TabStop := not HTMLMode; 4455 pnlHTMLViewer.Visible := HTMLMode; 4456 HTMLViewer.Visible := HTMLMode; 4457 if HTMLMode then begin 4458 HtmlViewer.BringToFront; 4459 end else begin 4460 MemNote.BringToFront; 4461 end; 4462 end else begin 4463 memNote.Visible := false; 4464 memNote.TabStop := false; 4465 pnlHTMLViewer.Visible := false; 4466 HTMLViewer.Visible := false; 4467 end; 4468 end; {SetDisplayToHTMLvsText.SetPanelVisibility.SetpnlReadVisibility} 4469 4470 procedure SetpnlWriteVisibility(Visible : boolean; HTMLMode : boolean); 4471 begin 4472 pnlWrite.Visible := Visible; 4473 if Visible then begin 4474 pnlHTMLWrite.Visible := HTMLMode; 4475 pnlHTMLEdit.Visible := HTMLMode; 4476 HTMLEditor.Visible := HTMLMode; 4477 pnlTextWrite.Visible := not HTMLMode; 4478 MemNewNote.Visible := not HTMLMode; 4479 if HTMLMode then begin 4480 HTMLEditor.BringToFront; 4481 end else begin 4482 MemNewNote.BringToFront; 4483 end; 4484 end else begin 4485 pnlHTMLWrite.Visible := false; 4486 pnlHTMLEdit.Visible := false; 4487 HTMLEditor.Visible := false; 4488 pnlTextWrite.Visible := false; 4489 memNewNote.Visible := false; 4490 end; 4491 end; {SetDisplayToHTMLvsText.SetPanelVisibility.SetpnlWriteVisibility} 4492 4493 begin {SetDisplayToHTMLvsText.SetPanelVisibility} 4494 SetpnlReadVisibility ((Mode=pvmReadMode), HTMLMode); 4495 SetpnlWriteVisibility((Mode=pvmWriteMode),HTMLMode); 4496 Application.ProcessMessages; 4497 end; {SetDisplayToHTMLvsText.SetPanelVisibility} 4498 4499 procedure SetHTMLorTextEditor(HTMLEditMode : boolean; 4500 Lines : TStrings; 4501 ActivateOnly : boolean {default=False}); 4502 procedure ActivateHtmlEditor(Lines : TStrings); 4503 var HTMLText : string; 4504 begin 4505 HtmlEditor.Editable := true; 4506 if ActivateOnly=false then begin 4507 if Lines <> nil then begin 4508 if rHTMLTools.IsHTML(Lines) then begin 4509 HTMLText := Lines.Text; 4510 end else begin 4511 HTMLText := Text2HTML(Lines); 4512 if HTMLText='' then HTMLText := ' '; 4513 end; 4514 end else HTMLText := ' '; 4515 HtmlEditor.HTMLText := HTMLText; 4516 HTMLEditor.KeyStruck := false; 4517 end; 4518 end; {SetDisplayToHTMLvsText.SetHTMLorTextEditor.ActivateHtmlEditor} 4519 4520 procedure ActiveMemoEditor(Lines : TStrings); 4521 begin 4522 if ActivateOnly=false then begin 4523 memNewNote.Lines.Assign(Lines); //kt new 4524 end; 4525 //kt HtmlEditor.Active := false; //stop intercepting OnMessages 4526 HtmlEditor.Clear; 4527 end; {SetDisplayToHTMLvsText.SetHTMLorTextEditor.ActiveMemoEditor} 4528 4529 begin {SetDisplayToHTMLvsText.SetHTMLorTextEditor} 4530 FHTMLEditMode := emHTML_MODE[HTMLEditMode]; 4531 FViewMode := [vmEdit] + [vmHTML_MODE[HTMLEditMode]]; 4532 SetPanelVisibility(pvmWriteMode,HTMLEditMode); 4533 pnlRight.Repaint; //kt TEMP 4534 if HTMLEditMode then begin 4535 ActivateHtmlEditor(Lines); 4536 end else begin 4537 ActiveMemoEditor(Lines); 4538 end; 4539 pnlRight.Repaint; //kt TEMP 4540 end; {SetDisplayToHTMLvsText.SetHTMLorTextEditor} 4541 4542 procedure SetHTMLorTextViewer(HTMLViewMode : boolean; 4543 Lines : TStrings; 4544 ActivateOnly : boolean); //kt 4545 //Set forms such that either HTML Viewer is visible, or standard edit window. 4546 procedure ActivateHtmlViewer(Lines : TStrings); 4547 begin 4548 with frmNotes do begin 4549 //ScanForSubs(MemNote.Lines); 4550 pnlHtmlViewer.Visible := true; 4551 //memNote.Visible := false; 4552 //memNote.TabStop := false; 4553 HtmlViewer.BringToFront; 4554 if ActivateOnly=False then begin 4555 FixHTML(Lines); 4556 HtmlViewer.HTMLText := Lines.Text; 4557 end; 4558 HtmlViewer.Editable := false; 4559 HtmlViewer.BackgroundColor := clCream; 4560 HtmlViewer.TabStop := true; 4561 RedrawActivate(HtmlViewer.Handle); 4562 end; 4563 end; {SetDisplayToHTMLvsText.SetHTMLorTextViewer.ActivateHtmlViewer} 4564 4565 procedure ActivateMemoViewer(Lines : TStrings); 4566 begin 4567 with frmNotes do begin 4568 pnlHtmlViewer.Visible := false; 4569 HtmlViewer.Clear; 4570 //HtmlEditor.Clear; //don't this here. Only clear in ClearEditControls... 4571 HtmlViewer.TabStop := false; 4572 if ActivateOnly=False then memNote.Lines.Assign(Lines); //new 4573 memNote.Visible := true; 4574 memNote.TabStop := true; 4575 memNote.BringToFront; 4576 RedrawActivate(memNote.Handle); 4577 end; 4578 end; {SetDisplayToHTMLvsText.SetHTMLorTextViewer.ActivateMemoViewer} 4579 4580 begin {SetHTMLorTextViewer} 4581 FViewMode := [vmView] + [vmHTML_MODE[HTMLViewMode]]; 4582 SetPanelVisibility(pvmReadMode,HTMLviewMode); 4583 //pnlRight.Repaint; //kt TEMP 4584 if HTMLViewMode then begin 4585 ActivateHtmlViewer(Lines); 4586 end else begin 4587 ActivateMemoViewer(Lines); 4588 HtmlViewer.Clear; 4589 end; 4590 pnlRight.Repaint; //kt TEMP 4591 end; {SetDisplayToHTMLvsText.SetHTMLorTextViewer} 4592 4593 begin {SetDisplayToHTMLvsText} 4594 if vmEdit in Mode then begin 4595 SetHTMLorTextEditor((vmHTML in Mode),Lines,ActivateOnly); 4596 end else begin 4597 SetHTMLorTextViewer((vmHTML in Mode),Lines,ActivateOnly); 4598 end; 4599 end; {SetDisplayToHTMLvsText} 4600 4601 procedure TfrmNotes.btnBoldClick(Sender: TObject); 4602 //kt added function 4603 begin 4604 inherited; 4605 HtmlEditor.ToggleBold; 4606 end; 4607 4608 procedure TfrmNotes.btnItalicClick(Sender: TObject); 4609 //kt added function 4610 begin 4611 inherited; 4612 HtmlEditor.ToggleItalic; 4613 end; 4614 4615 procedure TfrmNotes.btnLessIndentClick(Sender: TObject); 4616 //kt added function 4617 begin 4618 inherited; 4619 HtmlEditor.Outdent; 4620 end; 4621 4622 procedure TfrmNotes.btnMoreIndentClick(Sender: TObject); 4623 //kt added function 4624 begin 4625 inherited; 4626 HtmlEditor.Indent; 4627 end; 4628 4629 procedure TfrmNotes.btnRightAlignClick(Sender: TObject); 4630 //kt added function 4631 begin 4632 inherited; 4633 HtmlEditor.AlignRight; 4634 end; 4635 4636 procedure TfrmNotes.btnCenterAlignClick(Sender: TObject); 4637 //kt added function 4638 begin 4639 inherited; 4640 HtmlEditor.AlignCenter; 4641 end; 4642 4643 procedure TfrmNotes.btnLeftAlignClick(Sender: TObject); 4644 //kt added function 4645 begin 4646 inherited; 4647 HtmlEditor.AlignLeft; 4648 end; 4649 4650 procedure TfrmNotes.btnNumbersClick(Sender: TObject); 4651 //kt added function 4652 begin 4653 inherited; 4654 HtmlEditor.ToggleNumbering; 4655 end; 4656 4657 procedure TfrmNotes.btnBulletsClick(Sender: TObject); 4658 //kt added function 4659 begin 4660 inherited; 4661 HtmlEditor.ToggleBullet; 4662 end; 4663 4664 procedure TfrmNotes.btnUnderlineClick(Sender: TObject); 4665 //kt added function 4666 begin 4667 inherited; 4668 HtmlEditor.ToggleUnderline; 4669 end; 4670 4671 procedure TfrmNotes.btnTextColorClick(Sender: TObject); 4672 //kt added function 4673 begin 4674 inherited; 4675 HtmlEditor.TextForeColorDialog; 4676 end; 4677 4678 procedure TfrmNotes.btnBackColorClick(Sender: TObject); 4679 //kt added function 4680 begin 4681 inherited; 4682 HtmlEditor.TextBackColorDialog; 4683 end; 4684 4685 procedure TfrmNotes.btnFontsClick(Sender: TObject); 4686 //kt added function 4687 begin 4688 inherited; 4689 HtmlEditor.FontDialog; 4690 end; 4691 4692 procedure TfrmNotes.cbFontSizeChange(Sender: TObject); 4693 //kt added function 4694 const 4695 FontSizes : array [0..6] of byte = (8,10,12,14,18,24,36); 4696 begin 4697 inherited; 4698 //HtmlEditor.FontSize := StrToInt(cbFontSize.Text); 4699 HtmlEditor.FontSize := FontSizes[cbFontSize.ItemIndex]; 4700 end; 4701 4702 procedure TfrmNotes.cbFontNamesChange(Sender: TObject); 4703 //kt added function 4704 var i : integer; 4705 FontName : string; 4706 const 4707 TEXT_BAR = '---------------'; 4708 begin 4709 inherited; 4710 if cbFontNames.Text[1]='<' then exit; 4711 FontName := cbFontNames.Text; 4712 HtmlEditor.FontName := FontName; 4713 i := cbFontNames.Items.IndexOf(TEXT_BAR); 4714 if i < 1 then cbFontNames.Items.Insert(0,TEXT_BAR); 4715 if i > 5 then cbFontNames.Items.Delete(5); 4716 if cbFontNames.Items.IndexOf(FontName)> i then begin 4717 cbFontNames.Items.Insert(0,FontName); 4718 end; 4719 end; 4720 4721 (* 4077 4722 //kt made this entire temp function 4078 4723 procedure TfrmNotes.WebBrowser1CommandStateChange(Sender: TObject; … … 4101 4746 end; 4102 4747 end; 4748 *) 4103 4749 4104 4750 procedure TfrmNotes.memNewNoteKeyPress(Sender: TObject; var Key: Char);
Note:
See TracChangeset
for help on using the changeset viewer.