|
Вопрос # 53/ вопрос открыт / |
|
Уважаемые эксперты! Из справочника DelphiWorld пытаюсь использовать фрагмент кода (Установка компонентов в TBGrid-статья Николая)Задача-выбор в TBGrid поля записи, в которую выбор из справочника из другой таблицы с использованием TDBLOOKUPCOMBO.
"Прикрученный" компонент не реагирует на события OnDrawDataCell и OnColExit.
В чем дело? Поясните, пожалуйста.
Приложение: Переключить в обычный режим- unit GurnSt;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Menus, ImgList, ComCtrls, Grids, DBGrids, ExtCtrls, DBCtrls,
- StdCtrls,DB,DBTables,Clipbrd;
-
- type
- TMainForm = class(TForm)
- MainMenu: TMainMenu;
- FileMenu: TMenuItem;
- SprMenu: TMenuItem;
- PrnMenu: TMenuItem;
- HelpMenu: TMenuItem;
- FileCreate: TMenuItem;
- FileOpen: TMenuItem;
- N1: TMenuItem;
- FilePrnSetup: TMenuItem;
- N2: TMenuItem;
- FileExit: TMenuItem;
- GurnPageControl: TPageControl;
- GurnTabSheet: TTabSheet;
- PrimRisTabSheet: TTabSheet;
- ImageList1: TImageList;
- GurnDBGrid: TDBGrid;
- GurnDBNav: TDBNavigator;
- BtnExit: TButton;
- PrinterSetup: TPrinterSetupDialog;
- DBMemo1: TDBMemo;
- DBImage1: TDBImage;
- OpenDlg: TOpenDialog;
- Button1: TButton;
- DBLookupCombo1: TDBLookupComboBox;
- DBLookupCombo2: TDBLookupComboBox;
- BtnSpG: TButton;
- BtnSpT: TButton;
- procedure CloseApp(Sender: TObject);
- procedure BtnExitClick(Sender: TObject);
- procedure FilePrnSetupClick(Sender: TObject);
- procedure OpenFile(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure GurnDBGridDrawDataCell(Sender: TObject; const Rect: TRect;
- Field: TField; State: TGridDrawState);
- procedure GurnDBGridColExit(Sender: TObject);
- procedure GurnDBGridKeyPress(Sender: TObject; var Key: Char);
- procedure BtnSpGClick(Sender: TObject);
- procedure BtnSpTClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- MainForm: TMainForm;
-
- implementation
- uses
-
-
- {$R *.dfm}
-
- procedure TMainForm.CloseApp(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TMainForm.BtnExitClick(Sender: TObject);
- begin
- Close;
- end;
-
-
-
- procedure TMainForm.FilePrnSetupClick(Sender: TObject);
- begin
- PrinterSetup.Execute;
- end;
-
- procedure TMainForm.OpenFile(Sender: TObject);
- begin
- OpenDlg.Execute;
- end;
-
- procedure TMainForm.Button1Click(Sender: TObject);
- var
- C: TClipboard;
- begin
- C := TClipboard.Create;
- try
- if Clipboard.HasFormat(CF_BITMAP) then
- DBImage1.PasteFromClipboard
- else
-
- finally
- C.Free;
- end;
- end;
-
-
- procedure TMainForm.FormCreate(Sender: TObject);
- begin
- DBLookupCombo1.Visible := False;
- DBLookupCombo2.Visible := False;
- end;
-
-
- procedure TMainForm.GurnDBGridDrawDataCell(Sender: TObject;
- const Rect: TRect; Field: TField; State: TGridDrawState);
- begin
- if (gdFocused in State) then
- begin
- if (Field.FieldName = DBLookupCombo1.DataField) then
- begin
- DBLookupCombo1.Left := Rect.Left + GurnDBGrid.Left;
- DBLookupCombo1.Top := Rect.Top + GurnDBGrid.top;
- DBLookupCombo1.Width := Rect.Right - Rect.Left;
- { DBLookupCombo1.Height := Rect.Bottom - Rect.Top; }
- DBLookupCombo1.Visible := True;
- end;
-
- if (Field.FieldName = DBLookupCombo2.DataField) then
- begin
- DBLookupCombo2.Left := Rect.Left + GurnDBGrid.Left;
- DBLookupCombo2.Top := Rect.Top + GurnDBGrid.top;
- DBLookupCombo2.Width := Rect.Right - Rect.Left;
- { DBLookupCombo1.Height := Rect.Bottom - Rect.Top; }
- DBLookupCombo2.Visible := True;
- end;
- end;
- end;
-
-
- procedure TMainForm.GurnDBGridColExit(Sender: TObject);
- begin
- If GurnDBGrid.SelectedField.FieldName = DBLookupCombo1.DataField then
- DBLookupCombo1.Visible := false;
- end;
-
-
-
- procedure TMainForm.GurnDBGridKeyPress(Sender: TObject; var Key: Char);
- begin
- if (key <> chr(9)) then
- begin
- if (GurnDBGrid.SelectedField.FieldName = DBLookupCombo1.DataField) then
- begin
- DBLookupCombo1.SetFocus;
- SendMessage(DBLookupCombo1.Handle, WM_Char, word(Key), 0);
- end;
- if (GurnDBGrid.SelectedField.FieldName = DBLookupCombo2.DataField) then
- begin
- DBLookupCombo2.SetFocus;
- SendMessage(DBLookupCombo2.Handle, WM_Char, word(Key), 0);
- end;
- end;
- end;
-
- procedure TMainForm.BtnSpGClick(Sender: TObject);
- begin
- SpGForm.Show;
- end;
-
- procedure TMainForm.BtnSpTClick(Sender: TObject);
- begin
- SpTForm.Show;
- end;
-
- end.
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|