RightsExt.cpp 2.9 KB

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