DBGrid и RxLookupComboBox
новой записи и при установке на определенную ячейку программно выпадал
список RxLookupComboBox (RxLib 2.75). В коде написанном ниже идет непопадание
окошка RxLookupComboBox при раскрытии списка в строку DBGrid'a
(в столбец попадаю). Где я неправ?
. . .
type
TMyDBGrid = class(TDBGrid)
public
function CellRect(ACol, ARow: Longint): TRect;
end;
var
Form1: TForm1;
RowNo: integer;
. . .
procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (Column.Field.FieldName = 'NameEd') and
(gdFocused in State) then begin
RxDBLookupCombo1.Left := Rect.Left + DBGrid2.Left;
RxDBLookupCombo1.Top := Rect.Top + DBGrid2.Top;
RxDBLookupCombo1.Width := Rect.Right - Rect.Left;
RxDBLookupCombo1.Visible := True;
end;
if Column.Field.FieldName = 'NameEd' then
RowNo := Rect.Bottom div TStringGrid(DBGrid2).DefaultRowHeight;
end;
. . .
procedure TFSpDieta.DBGrid2ColEnter(Sender: TObject);
var Rec: TRect;
begin
if DBGrid2.SelectedField.FieldName = 'NameEd' then
if Length(RxDBLookupCombo1.Text)=0 then begin
Rec := TMyDBGrid(DBGrid2).CellRect(DBGrid2.SelectedIndex+1,RowNo);
RxDBLookupCombo1.Left:=Rec.Left;
RxDBLookupCombo1.Top:=DBGrid2.Top+Rec.Top;
if not RxDBLookupCombo1.Visible then
RxDBLookupCombo1.Visible:=True;
RxDBLookupCombo1.Perform(WM_LBUTTONDOWN, 0, 0);
RxDBLookupCombo1.Perform(WM_LBUTTONUP, 0, 0);
end;
end;