某一列的第一行 是什么意思: 某一行的第1列吧.把TableViewprocedure TForm1.cxGrid1DBTableView1EditKeyDown(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState); begin if Sender.DataController.IsEOF then Sender.DataController.GotoFirst; if Key = VK_Return then begin Key := VK_Down; end; end;procedure TForm1.FormCreate(Sender: TObject); begin cxGrid1DBTableView1.DataController.FocusedRowIndex := 1; cxGrid1DBTableView1.OptionsBehavior.AlwaysShowEditor := true; end;
处理一下EditKeyDown(显示内置编辑器时)和KeyDown(未显示内置编辑器时)事件, 没什么特别难的地方procedure TFormItemList.tvResultEditKeyDown(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState); begin if Key = VK_Return then begin if not Sender.DataController.IsEOF then begin Sender.DataController.GotoNext; Sender.Controller.EditingController.ShowEdit(); end; Key := 0; end; end;procedure TFormItemList.tvResultKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_Return then begin if not (Sender as TcxGridSite).GridView.DataController.IsEOF then (Sender as TcxGridSite).GridView.DataController.GotoNext; Key := 0; end; end;//判断当前cxGrid是否有焦点 function IsGridFocused: Boolean; var AContainer: TcxCustomEdit; begin Result := Screen.ActiveControl is TcxGridSite; if not Result then begin AContainer := nil; if Screen.ActiveControl is TcxCustomEdit then begin AContainer := TcxCustomEdit(Screen.ActiveControl); Result := True; end else if (Screen.ActiveControl.Parent <> nil) and (Screen.ActiveControl.Parent is TcxCustomEdit) then begin AContainer := TcxCustomEdit(Screen.ActiveControl.Parent); Result := True; end; Result := Result and (AContainer.Parent is TcxGridSite); end; end;
FocusCellOnCycle, FocusCellOnTab, FocusFirstCellOnNewRecord,
GoToNextCellOnEnter都设为True. 如果要位用
DBTableView.DataController.FocusedRowIndex,
DBTableView.DataController.FocusedRecordIndex.
超强的报表功能,适用于所有开发工具。http://www.anylib.com
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word;
Shift: TShiftState);
begin
if Sender.DataController.IsEOF then
Sender.DataController.GotoFirst;
if Key = VK_Return then begin
Key := VK_Down;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
cxGrid1DBTableView1.DataController.FocusedRowIndex := 1;
cxGrid1DBTableView1.OptionsBehavior.AlwaysShowEditor := true;
end;
没什么特别难的地方procedure TFormItemList.tvResultEditKeyDown(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
begin
if not Sender.DataController.IsEOF then
begin
Sender.DataController.GotoNext;
Sender.Controller.EditingController.ShowEdit();
end;
Key := 0;
end;
end;procedure TFormItemList.tvResultKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
begin
if not (Sender as TcxGridSite).GridView.DataController.IsEOF then
(Sender as TcxGridSite).GridView.DataController.GotoNext;
Key := 0;
end;
end;//判断当前cxGrid是否有焦点
function IsGridFocused: Boolean;
var
AContainer: TcxCustomEdit;
begin
Result := Screen.ActiveControl is TcxGridSite;
if not Result then
begin
AContainer := nil;
if Screen.ActiveControl is TcxCustomEdit then
begin
AContainer := TcxCustomEdit(Screen.ActiveControl);
Result := True;
end
else
if (Screen.ActiveControl.Parent <> nil) and
(Screen.ActiveControl.Parent is TcxCustomEdit) then
begin
AContainer := TcxCustomEdit(Screen.ActiveControl.Parent);
Result := True;
end;
Result := Result and (AContainer.Parent is TcxGridSite);
end;
end;
TableView.OptionBehavior.GoToNextCellOnEnter := false;
//TableView.Controller.FocusedItem := TableView.GetColumnByFieldName("字段名");