MdListDial.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit MdListDial;
  2. interface
  3. uses
  4.   SysUtils, Windows, Messages, Classes,
  5.   Graphics, Controls, Forms, Dialogs, StdCtrls,
  6.   Buttons;
  7. type
  8.   TMdListDialog = class (TComponent)
  9.   private
  10.     FLines: TStrings;
  11.     FSelected: Integer;
  12.     FTitle: string;
  13.     function GetSelItem: string;
  14.     procedure SetLines (Value: TStrings);
  15.     function GetLines: TStrings;
  16.   public
  17.     constructor Create(AOwner: TComponent); override;
  18.     destructor Destroy; override;
  19.     function Execute: Boolean;
  20.     property SelItem: string
  21.       read GetSelItem;
  22.   published
  23.     property Lines: TStrings
  24.       read GetLines write SetLines;
  25.     property Selected: Integer
  26.       read FSelected write FSelected;
  27.     property Title: string
  28.       read FTitle write FTitle;
  29.   end;
  30. type
  31.   TMdListBoxForm = class(TForm)
  32.     ListBox1: TListBox;
  33.     BitBtn1: TBitBtn;
  34.     BitBtn2: TBitBtn;
  35.     procedure ListBox1DblClick(Sender: TObject);
  36.   private
  37.     { Private declarations }
  38.   public
  39.     { Public declarations }
  40.   end;
  41. {$R *.DFM}
  42. procedure Register;
  43. implementation
  44. // component methods
  45. constructor TMdListDialog.Create(AOwner: TComponent);
  46. begin
  47.   inherited Create (AOwner);
  48.   FLines := TStringList.Create;
  49.   FTitle := 'Choose a string';
  50. end;
  51. destructor TMdListDialog.Destroy;
  52. begin
  53.   FLines.Free;
  54.   inherited Destroy;
  55. end;
  56. function TMdListDialog.GetSelItem: string;
  57. begin
  58.   if (Selected >= 0) and (Selected < FLines.Count) then
  59.     Result := FLines [Selected]
  60.   else
  61.     Result := '';
  62. end;
  63. function TMdListDialog.GetLines: TStrings;
  64. begin
  65.   Result := FLines;
  66. end;
  67. procedure TMdListDialog.SetLines (Value: TStrings);
  68. begin
  69.   FLines.Assign (Value);
  70. end;
  71. function TMdListDialog.Execute: Boolean;
  72. var
  73.   ListBoxForm: TMdListBoxForm;
  74. begin
  75.   if FLines.Count = 0 then
  76.     raise EStringListError.Create ('No items in the list');
  77.   ListBoxForm := TMdListBoxForm.Create (nil);
  78.   try
  79.     ListBoxForm.ListBox1.Items := FLines;
  80.     ListBoxForm.ListBox1.ItemIndex := FSelected;
  81.     ListBoxForm.Caption := FTitle;
  82.     if ListBoxForm.ShowModal = mrOk then
  83.     begin
  84.       Result := True;
  85.       Selected := ListBoxForm.ListBox1.ItemIndex;
  86.     end
  87.     else
  88.       Result := False;
  89.   finally
  90.     ListBoxForm.Free;
  91.   end;
  92. end;
  93. // form methods
  94. procedure TMdListBoxForm.ListBox1DblClick(Sender: TObject);
  95. begin
  96.   ModalResult := mrOk;
  97. end;
  98. procedure Register;
  99. begin
  100.   RegisterComponents('Md', [TMdListDialog]);
  101. end;
  102. end.