RTDebugWin.pas 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. unit RTDebugWin;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5. Buttons, StdCtrls, ComCtrls, ExtCtrls, RTDebug, ImgList, ToolWin;
  6. type
  7. TRTDebugMainWin = class(TForm)
  8. lvAssert: TListView;
  9. ToolBar1: TToolBar;
  10. tbLock: TToolButton;
  11. tbClear: TToolButton;
  12. tbOnTop: TToolButton;
  13. ImageList1: TImageList;
  14. ToolButton1: TToolButton;
  15. tbOptions: TToolButton;
  16. procedure btClearClick(Sender: TObject);
  17. procedure tbLockClick(Sender: TObject);
  18. procedure FormCreate(Sender: TObject);
  19. procedure tbOnTopClick(Sender: TObject);
  20. procedure tbOptionsClick(Sender: TObject);
  21. protected
  22. { Private declarations }
  23. AcceptMsg :Boolean;
  24. procedure MGGetListHandle(Var Msg :TMessage); message MG_RTD_GetListHandle;
  25. procedure WMCopyData(var M : TMessage); message WM_COPYDATA;
  26. public
  27. { Public declarations }
  28. end;
  29. var
  30. RTDebugMainWin: TRTDebugMainWin;
  31. implementation
  32. uses RTDebugOptions;
  33. {$R *.DFM}
  34. procedure TRTDebugMainWin.btClearClick(Sender: TObject);
  35. begin
  36. lvAssert.Clear;
  37. end;
  38. procedure TRTDebugMainWin.MGGetListHandle(Var Msg :TMessage);
  39. begin
  40. Msg.Result :=lvAssert.Handle;
  41. end;
  42. procedure TRTDebugMainWin.WMCopyData(var M : TMessage);
  43. Var
  44. Parametri :^TRTDebugParameters;
  45. lvItem :TListItem;
  46. Spaces :ShortString;
  47. begin
  48. if AcceptMsg then
  49. begin
  50. Parametri :=PcopyDataStruct(M.lParam)^.lpData;
  51. FillChar(Spaces, 255, '*');
  52. Spaces[0] :=Char(Parametri.Level);
  53. lvItem :=lvAssert.Items.Add;
  54. lvItem.Caption :=Parametri.theString;
  55. lvItem.SubItems.Add(IntToHex(Parametri.processID, 8));
  56. lvItem.SubItems.Add(IntToHex(Parametri.ThreadID, 8));
  57. end;
  58. M.Result :=Integer(AcceptMsg);
  59. end;
  60. procedure TRTDebugMainWin.tbLockClick(Sender: TObject);
  61. begin
  62. AcceptMsg :=Not(AcceptMsg);
  63. if AcceptMsg then tbLock.ImageIndex :=0
  64. else tbLock.ImageIndex :=1;
  65. end;
  66. procedure TRTDebugMainWin.FormCreate(Sender: TObject);
  67. begin
  68. AcceptMsg :=True;
  69. end;
  70. procedure TRTDebugMainWin.tbOnTopClick(Sender: TObject);
  71. begin
  72. if tbOnTop.ImageIndex=3
  73. then begin
  74. Self.FormStyle :=fsNormal;
  75. tbOnTop.ImageIndex :=4;
  76. end
  77. else begin
  78. Self.FormStyle :=fsStayOnTop;
  79. tbOnTop.ImageIndex :=3;
  80. end;
  81. end;
  82. procedure TRTDebugMainWin.tbOptionsClick(Sender: TObject);
  83. begin
  84. FormOptions.ShowModal;
  85. end;
  86. end.