RightsExt.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "RightsExt.h"
  5. #include <Common.h>
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "Rights"
  9. #pragma link "GrayedCheckBox"
  10. #pragma resource "*.dfm"
  11. //---------------------------------------------------------------------------
  12. __fastcall TRightsExtFrame::TRightsExtFrame(TComponent* Owner)
  13. : TRightsFrame(Owner)
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17. void __fastcall TRightsExtFrame::UpdateControls()
  18. {
  19. if (!OctalEdit->Focused())
  20. {
  21. ForceUpdate();
  22. }
  23. TRightsFrame::UpdateControls();
  24. }
  25. //---------------------------------------------------------------------------
  26. void __fastcall TRightsExtFrame::UpdateByOctal()
  27. {
  28. if (!OctalEdit->Text.IsEmpty())
  29. {
  30. TRights R = Rights;
  31. R.Octal = OctalEdit->Text;
  32. Rights = R;
  33. }
  34. UpdateControls();
  35. OctalEdit->Modified = false;
  36. }
  37. //---------------------------------------------------------------------------
  38. void __fastcall TRightsExtFrame::ForceUpdate()
  39. {
  40. TRightsFrame::ForceUpdate();
  41. TRights R = Rights;
  42. OctalEdit->Text = R.IsUndef ? AnsiString() : R.Octal;
  43. OctalEdit->Modified = false;
  44. OctalEdit->SelectAll();
  45. }
  46. //---------------------------------------------------------------------------
  47. void __fastcall TRightsExtFrame::OctalEditChange(TObject * /*Sender*/)
  48. {
  49. if (OctalEdit->Modified && OctalEdit->Text.Length() >= 3)
  50. {
  51. try
  52. {
  53. UpdateByOctal();
  54. }
  55. catch(...)
  56. {
  57. OctalEdit->Modified = true;
  58. }
  59. }
  60. }
  61. //---------------------------------------------------------------------------
  62. void __fastcall TRightsExtFrame::OctalEditExit(TObject * /*Sender*/)
  63. {
  64. if (!Visible)
  65. {
  66. // should happen only if popup is closed by esc key
  67. assert(Popup);
  68. // cancel changes
  69. ForceUpdate();
  70. }
  71. else if (OctalEdit->Modified)
  72. {
  73. // Now the text in OctalEdit is almost necessarily invalid, otherwise
  74. // OctalEditChange would have already cleared Modified flag
  75. try
  76. {
  77. UpdateByOctal();
  78. }
  79. catch(...)
  80. {
  81. OctalEdit->SelectAll();
  82. OctalEdit->SetFocus();
  83. throw;
  84. }
  85. }
  86. else
  87. {
  88. UpdateControls();
  89. }
  90. }
  91. //---------------------------------------------------------------------------
  92. void __fastcall TRightsExtFrame::SetPopup(bool value)
  93. {
  94. if (Popup != value)
  95. {
  96. TRightsFrame::SetPopup(value);
  97. CloseButton->Visible = value;
  98. CloseButton->Cancel = value;
  99. CloseButton->Default = value;
  100. }
  101. }
  102. //---------------------------------------------------------------------------
  103. void __fastcall TRightsExtFrame::CloseButtonClick(TObject * /*Sender*/)
  104. {
  105. CloseUp();
  106. }
  107. //---------------------------------------------------------------------------