📄 rsgcombobox.pas
字号:
unit RsgComboBox;
interface
uses
SysUtils, Classes, Controls, StdCtrls,Db,dbctrls;
type
TRsgComboBox = class(TComboBox)
private
FKeyField:string;
FListField:string;
//FShowKey:boolean;
FDataSet:TDataSet;
KeyFieldList:Tstrings;
ListFieldList:Tstrings;
//FKeyText:string;
{ Private declarations }
procedure setkey(value:string);
procedure setlist(value:string);
procedure setdataset(Value:Tdataset);
//procedure SetShowKey(value:boolean);
protected
{ Protected declarations }
public
destructor Destroy; override;
constructor Create(AOwner: TComponent); override;
function GetKeyText:string;
function GetListText:string;
{ Public declarations }
published
property KeyField:string read FKeyField write setkey;
property ListField:string read FListField write setList;
property DataSet:TDataSet read FDataSet write setDataSet;
//property ShowKey:Boolean read FShowKey write setShowKey;
//property KeyText:string read FKeyText;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('DbAnyWhere', [TRsgComboBox]);
end;
destructor TRsgComboBox.Destroy;
begin
inherited Destroy;
FreeAndNil(KeyFieldList);
FreeAndNil(ListFieldList);
end;
constructor TRsgComboBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
KeyFieldList:=TstringList.Create;
ListFieldList:=TstringList.Create;
//FShowKey:=false;
end;
function TRsgComboBox.GetKeyText;
begin
if self.ItemIndex=-1 then
begin
result:='';
exit;
end;
result:=KeyFieldList.Strings[self.itemindex];
end;
function TRsgComboBox.GetListText;
begin
if self.ItemIndex=-1 then
begin
result:='';
exit;
end;
result:=ListFieldList.Strings[self.itemindex];
end;
procedure TRsgComboBox.setkey(value:string);
begin
FKeyField:=Value;
end;
procedure TRsgComboBox.setlist(value:string);
begin
FListField:=Value;
end;
procedure TRsgComboBox.setdataset(Value:Tdataset);
begin
if value=nil then exit;
if not value.Active then exit;
if value.RecordCount=0 then exit;
FDataSet:=value;
//显示列表内容
value.First;
value.DisableControls;
keyfieldlist.Clear;
listfieldlist.Clear;
while not value.Eof do
begin
if length(trim(FKeyField))<>0 then
KeyFieldList.Add(value.fieldbyname(FKeyField).AsString);
if length(trim(FListField))<>0 then
ListFieldList.add(value.fieldbyname(FListField).AsString);
value.Next;
end;
value.EnableControls;
self.Items.Assign(ListFieldList);
end;
{procedure TRsgComboBox.SetShowKey(value:boolean);
var
Cur_index:integer;
begin
if length(trim(Keyfieldlist.Text))=0 then exit;
if length(trim(Listfieldlist.Text))=0 then exit;
cur_index:=self.ItemIndex;
if value then
begin
self.Items.Assign(KeyFieldList);
self.ItemIndex:=cur_index;
end else
begin
self.Items.Assign(ListFieldList);
self.ItemIndex:=cur_index;
end;
end; }
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -