//....
// 1
function TCustomGrid.EditorByStyle(Style: TColumnButtonStyle): TWinControl;
begin
case Style of
cbsEllipsis: Result := GetButtonStringEditor;
cbsButton: Result := GetButtonEditor;
cbsPicklist: Result := GetPicklistEditor;
cbsAuto: Result := GetStringEditor;
else {cbsNone, cbsCheckboxColumn, cbsButtonColumn:}
Result := nil;
end;
end;
//....
// 2
function TCustomGrid.GetButtonEditor: TWinControl;
begin
if FButtonEditor = nil then begin
FButtonEditor := TButtonCellEditor.Create(nil);
FButtonEditor.Name:='ButtonEditor';
FButtonEditor.Caption:='...';
FButtonEditor.Visible:=False;
FButtonEditor.Width:=25;
FButtonEditor.OnClick := @EditButtonClicked;
end;
Result:= FButtonEditor;
end;
function TCustomGrid.GetStringEditor: TWinControl;
begin
if FStringEditor = nil then begin
FStringEditor := TStringCellEditor.Create(nil);
FStringEditor.name :='StringEditor';
FStringEditor.Text:='';
FStringEditor.Visible:=False;
FStringEditor.Align:=alNone;
FStringEditor.BorderStyle := bsNone;
end;
Result:= FStringEditor;
end;
function TCustomGrid.GetPicklistEditor: TWinControl;
begin
if FPicklistEditor = nil then begin
FPicklistEditor := TPickListCellEditor.Create(nil);
FPickListEditor.Name := 'PickListEditor';
FPickListEditor.Visible := False;
FPickListEditor.AutoSize := false;
end;
Result:= FPicklistEditor;
end;
function TCustomGrid.GetButtonStringEditor: TWinControl;
begin
if FButtonStringEditor = nil then begin
FButtonStringEditor := TCompositeCellEditor.Create(nil);
FButtonStringEditor.Name:='ButtonTextEditor';
FButtonStringEditor.Visible:=False;
FButtonStringEditor.AddEditor(GetStringEditor, alCustom, true);
FButtonStringEditor.AddEditor(GetButtonEditor, alRight, false);
end;
Result:= FButtonStringEditor;
end;
//....
// 3
// and in TCustomGrid.Create it is necessary to comment out the corresponding lines