BidiCtrls.pas 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. unit BidiCtrls;
  2. {
  3. Inno Setup
  4. Copyright (C) 1997-2024 Jordan Russell
  5. Portions by Martijn Laan
  6. For conditions of distribution and use, see LICENSE.TXT.
  7. RTL-capable versions of standard controls
  8. }
  9. interface
  10. uses
  11. Windows, SysUtils, Messages, Classes, Graphics, Controls, Forms, Dialogs,
  12. StdCtrls, ExtCtrls;
  13. type
  14. TNewEdit = class(TEdit)
  15. protected
  16. procedure CreateParams(var Params: TCreateParams); override;
  17. end;
  18. TNewMemo = class(TMemo)
  19. protected
  20. procedure CreateParams(var Params: TCreateParams); override;
  21. end;
  22. TNewComboBox = class(TComboBox)
  23. protected
  24. procedure CreateParams(var Params: TCreateParams); override;
  25. end;
  26. TNewListBox = class(TListBox)
  27. protected
  28. procedure CreateParams(var Params: TCreateParams); override;
  29. end;
  30. TNewButton = class(TButton)
  31. protected
  32. procedure CreateParams(var Params: TCreateParams); override;
  33. end;
  34. TNewCheckBox = class(TCheckBox)
  35. protected
  36. procedure CreateParams(var Params: TCreateParams); override;
  37. end;
  38. TNewRadioButton = class(TRadioButton)
  39. protected
  40. procedure CreateParams(var Params: TCreateParams); override;
  41. end;
  42. TNewLinkLabel = class(TLinkLabel)
  43. protected
  44. procedure CreateParams(var Params: TCreateParams); override;
  45. public
  46. function AdjustHeight: Integer;
  47. end;
  48. procedure Register;
  49. implementation
  50. uses
  51. CommCtrl, BidiUtils;
  52. procedure Register;
  53. begin
  54. RegisterComponents('JR', [TNewEdit, TNewMemo, TNewComboBox, TNewListBox,
  55. TNewButton, TNewCheckBox, TNewRadioButton]);
  56. end;
  57. { TNewEdit }
  58. procedure TNewEdit.CreateParams(var Params: TCreateParams);
  59. begin
  60. inherited;
  61. SetBiDiStyles(Self, Params);
  62. end;
  63. { TNewMemo }
  64. procedure TNewMemo.CreateParams(var Params: TCreateParams);
  65. begin
  66. inherited;
  67. SetBiDiStyles(Self, Params);
  68. end;
  69. { TNewComboBox }
  70. procedure TNewComboBox.CreateParams(var Params: TCreateParams);
  71. begin
  72. inherited;
  73. SetBiDiStyles(Self, Params);
  74. end;
  75. { TNewListBox }
  76. procedure TNewListBox.CreateParams(var Params: TCreateParams);
  77. begin
  78. inherited;
  79. SetBiDiStyles(Self, Params);
  80. end;
  81. { TNewButton }
  82. procedure TNewButton.CreateParams(var Params: TCreateParams);
  83. begin
  84. inherited;
  85. SetBiDiStyles(Self, Params);
  86. Params.ExStyle := Params.ExStyle and not WS_EX_RIGHT;
  87. end;
  88. { TNewCheckBox }
  89. procedure TNewCheckBox.CreateParams(var Params: TCreateParams);
  90. begin
  91. inherited;
  92. SetBiDiStyles(Self, Params);
  93. end;
  94. { TNewRadioButton }
  95. procedure TNewRadioButton.CreateParams(var Params: TCreateParams);
  96. begin
  97. inherited;
  98. SetBiDiStyles(Self, Params);
  99. end;
  100. { TNewLinkLabel }
  101. procedure TNewLinkLabel.CreateParams(var Params: TCreateParams);
  102. begin
  103. inherited;
  104. SetBiDiStyles(Self, Params);
  105. end;
  106. function TNewLinkLabel.AdjustHeight: Integer;
  107. begin
  108. var OldHeight := Height;
  109. var IdealSize: TSize;
  110. SendMessage(Handle, LM_GETIDEALSIZE, Width, LPARAM(@IdealSize));
  111. Height := IdealSize.cy;
  112. Result := Height - OldHeight;
  113. end;
  114. end.