RightsExt.cpp 2.7 KB

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