LOCAL lnRecNo
lnRecNo = IIF(!EOF(), RECNO(), -1)
ThisForm.DataEnvironment.cursor1.Order = "Column_Order"
WITH This.Parent.Parent
.ActivateCell(1, .ActiveColumn)
IF lnRecNo > 0
GO (lnRecNo)
ELSE
GO TOP
ENDIF
.Refresh()
ENDWITH
...
WITH ThisForm
IF VARTYPE(.ActiveControl) = "O";
AND .ActiveControl.BaseClass == "Grid";
AND !INLIST(CURSORGETPROP("Buffering"), 4, 5);
AND !.ActiveControl.DeleteMark
*
* - Grid с DeleteMark = .F. и buffering record имеет проблему
* - при удалении записи, необходимо временно установить свойство DeleteMark = .T.
LOCAL loGrid
LoGrid = .ActiveControl
LoGrid.DeleteMark = .T.
ENDIF
ENDWITH
lnRecNo = RECNO()
DELETE
llError = !TABLEUPDATE(.T.)
IF TYPE("loGrid") = "O"
LoGrid.DeleteMark = .F.
ENDIF
...
WITH This.Parent
IF .Visible
.Visible = .F.
.Width = 0
ELSE
.Visible = .T.
.Width = 75 && <- или прежний размер из предварительно созданного свойства-массива формы
ENDIF
ENDWITH
можете установить Grid1.GridLineColor = RGB(128, 128, 128), чтобы скрытая колонка "не бросалась в глаза"... как, надеюсь, самый простой вариант... К списку вопросов.
IF !DBUSED("MyDbc")
OPEN DATABASE [full_path]MyDbc.dbc SHARED
IF !DBUSED("MyDbc")
?CHR(7)
MessageBox("Can not open database: MyDbc", 16, "Error")
RETURN .F.
ENDIF
ENDIF
SET DATABASE TO MyDbc
IF !INDBC("MyTable", "Table")
?CHR(7)
MessageBox("No table: MyTable in database: MyDbc", 16, "Error")
RETURN .F.
ENDIF
USE MyDbc!MyTable IN 0 SHARED
SELECT * ; FROM MyDbc!Payments p; WHERE DTOC(p.date)+STR(p.idclient) IN ; (SELECT DTOC(MAX(p.date))+STR(p.idclient); FROM MyDbc!Payments p; GROUP BY p.idclient)
... тоже как бы два в одном. К списку вопросов.