平时打字很少用感叹号,实在没招了!
在网上搜了好久,看到的解决方法都是在PickList和KeyList里写入值,然后就顺理成章的使用了。
可我怎么就不行呢?太奇怪了。
点进去看了PickList,是个TStringList,我就自己定义了一个TStringList,然后用PickList.Assign(),
那个Column也设置了ButtonStyle=cbsDropDown;AlwaysShowEditButton:=True,总之是按照网上写的做了。全都做完之后主动去取PickList也是有值的。
现在的状况是点击那个DropDown的向下箭头的按钮,没反映。
当然了,按钮会扁下去再弹上来
这个东西的代码没有什么好贴得了吧,麻烦会的同志指点一下吧。第一次发帖,不懂规矩,不知道这样的问题给多少分,如果少了的话请别放在心上。
在网上搜了好久,看到的解决方法都是在PickList和KeyList里写入值,然后就顺理成章的使用了。
可我怎么就不行呢?太奇怪了。
点进去看了PickList,是个TStringList,我就自己定义了一个TStringList,然后用PickList.Assign(),
那个Column也设置了ButtonStyle=cbsDropDown;AlwaysShowEditButton:=True,总之是按照网上写的做了。全都做完之后主动去取PickList也是有值的。
现在的状况是点击那个DropDown的向下箭头的按钮,没反映。
当然了,按钮会扁下去再弹上来
这个东西的代码没有什么好贴得了吧,麻烦会的同志指点一下吧。第一次发帖,不懂规矩,不知道这样的问题给多少分,如果少了的话请别放在心上。
//接口部分
THeaderField = class;
THeaderFields = class(TCollection)
private
FHeaderFields: THeaderField;
procedure AddField(AField:THeaderField);
function GetItem(Index: Integer): THeaderField;
procedure SetItem(Index: Integer; const Value: THeaderField);
published
property Fields:THeaderField read FHeaderFields write FHeaderFields;
public
property Items[Index: Integer]: THeaderField read GetItem write SetItem;default;
end; THeaderField = class(TCollectionItem)
private
FFieldName: string;
FDisplayName: string;
FisCheckBox: Boolean;
FisVisible: Boolean;
FWidth: Integer;
FisAttach: Boolean;
FAttachValue: TStringList;
FAttachItem: TStringList;
FAlignment: TAlignment;
FisReadOnly: Boolean;
published
property FieldName:string read FFieldName write FFieldName;
property Displayname:string read FDisplayName write FDisplayName;
property isCheckBox:Boolean read FisCheckBox write FisCheckBox;
property isVisible:Boolean read FisVisible write FisVisible;
property isReadOnly:Boolean read FisReadOnly write FisReadOnly;
property isAttach:Boolean read FisAttach write FisAttach;
property Alignment:TAlignment read FAlignment write FAlignment;
property AttachItem:TStringList read FAttachItem write FAttachItem;
property AttachValue:TStringList read FAttachValue write FAttachValue;
property Width:Integer read FWidth write FWidth;
public
constructor Create(Collection: TCollection); override;
destructor Destroy; override;
end;//实现区
constructor THeaderField.Create(Collection: TCollection);
begin
inherited;
FAttachValue := TStringList.Create;
FAttachItem := TStringList.Create;
end;destructor THeaderField.Destroy;
begin
FAttachValue.Free;
FAttachItem.Free;
inherited;
end;function THeaderFields.GetItem(Index: Integer): THeaderField;
begin
Result := THeaderField(inherited Items[Index]);
end;procedure THeaderFields.SetItem(Index: Integer; const Value: THeaderField);
begin
inherited SetItem(Index, TCollectionItem(Value));
end;procedure THeaderFields.AddField(AField: THeaderField);
begin
AField.Collection:=Self;
end;procedure TForm1.CreateHeader;
begin
AHeaderField := THeaderField.Create(nil);
with AHeaderField do
begin
FieldName:='vOperator';
DisplayName:='条件操作符';
isCheckBox:=False;
isVisible:=True;
isReadOnly:=False;
isAttach:=True;
AttachItem.Add('等于');
AttachValue.Add('0');
AttachItem.Add('模糊查找');
AttachValue.Add('1');
AttachItem.Add('大于');
AttachValue.Add('2');
AttachItem.Add('小于');
AttachValue.Add('3');
AttachItem.Add('大于等于');
AttachValue.Add('4');
AttachItem.Add('小于等于');
AttachValue.Add('5');
AttachItem.Add('不等于');
AttachValue.Add('6');
Alignment:=taCenter;
Width:=100;
end;
AHeaderFields.AddField(AHeaderField);procedure TForm1.InsertHeaderToGrid(ADBGridEh:TDBGridEh);
var
i:Integer;
AHeaderFld:THeaderField;
AColumn:TColumnEh;
begin
if ADBGridEh.Columns.Count>0 then
ADBGridEh.Columns.Clear;
for i:=0 to AHeaderFields.Count -1 do
begin
AHeaderFld:=AHeaderFields.Items[i];
if AHeaderFld.isVisible then
begin
AColumn:=ADBGridEh.Columns.Add;
AColumn.FieldName:=AHeaderFld.FieldName;
AColumn.Alignment:=AHeaderFld.Alignment;
AColumn.ReadOnly:=AHeaderFld.isReadOnly;
AColumn.Width:=AHeaderFld.Width;
AColumn.Title.Caption:=AHeaderFld.Displayname;
AColumn.Checkboxes:=AHeaderFld.isCheckBox;
end;
if AHeaderFld.isAttach then
begin
AColumn.AlwaysShowEditButton:=True;
AColumn.DblClickNextVal:=True;
AColumn.ButtonStyle:=cbsDropDown;
AColumn.PickList:=AHeaderFld.AttachItem;
AColumn.KeyList:=AHeaderFld.AttachValue;
end;
end;
end;procedure TForm1.btn1Click(Sender: TObject);
begin
AHeaderFields:=THeaderFields.Create(THeaderField);
CreateHeader;
InsertHeaderToGrid(dbgrdh1);
end;
在网上搜了好久,看到的解决方法都是在PickList和KeyList里写入值,然后就顺理成章的使用了。
可我怎么就不行呢?太奇怪了。
点进去看了PickList,是个TStringList,我就自己定义了一个TStringList,然后用PickList.Assign(),
那个Column也设置了ButtonStyle=cbsDropDown;AlwaysShowEditButton:=True,总之是按照网上写的做了。全都做完之后主动去取PickList也是有值的。
现在的状况是点击那个DropDown的向下箭头的按钮,没反映。
当然了,按钮会扁下去再弹上来
这个东西的代码没有什么好贴得了吧,麻烦会的同志指点一下吧。
红色的那部份好像多余的
xx.PickList := 'aaa,bbb';xx.KeyList := 'AAA,BBB'