Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 53

Раздел: Delphi » Прочее
/ вопрос открыт /

Уважаемые эксперты! Из справочника DelphiWorld пытаюсь использовать фрагмент кода (Установка компонентов в TBGrid-статья Николая)Задача-выбор в TBGrid поля записи, в которую выбор из справочника из другой таблицы с использованием TDBLOOKUPCOMBO.
"Прикрученный" компонент не реагирует на события OnDrawDataCell и OnColExit.
В чем дело? Поясните, пожалуйста.

Приложение:
  1. unit GurnSt;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, Menus, ImgList, ComCtrls, Grids, DBGrids, ExtCtrls, DBCtrls,
  8. StdCtrls,DB,DBTables,Clipbrd;
  9.  
  10. type
  11. TMainForm = class(TForm)
  12. MainMenu: TMainMenu;
  13. FileMenu: TMenuItem;
  14. SprMenu: TMenuItem;
  15. PrnMenu: TMenuItem;
  16. HelpMenu: TMenuItem;
  17. FileCreate: TMenuItem;
  18. FileOpen: TMenuItem;
  19. N1: TMenuItem;
  20. FilePrnSetup: TMenuItem;
  21. N2: TMenuItem;
  22. FileExit: TMenuItem;
  23. GurnPageControl: TPageControl;
  24. GurnTabSheet: TTabSheet;
  25. PrimRisTabSheet: TTabSheet;
  26. ImageList1: TImageList;
  27. GurnDBGrid: TDBGrid;
  28. GurnDBNav: TDBNavigator;
  29. BtnExit: TButton;
  30. PrinterSetup: TPrinterSetupDialog;
  31. DBMemo1: TDBMemo;
  32. DBImage1: TDBImage;
  33. OpenDlg: TOpenDialog;
  34. Button1: TButton;
  35. DBLookupCombo1: TDBLookupComboBox;
  36. DBLookupCombo2: TDBLookupComboBox;
  37. BtnSpG: TButton;
  38. BtnSpT: TButton;
  39. procedure CloseApp(Sender: TObject);
  40. procedure BtnExitClick(Sender: TObject);
  41. procedure FilePrnSetupClick(Sender: TObject);
  42. procedure OpenFile(Sender: TObject);
  43. procedure Button1Click(Sender: TObject);
  44. procedure FormCreate(Sender: TObject);
  45. procedure GurnDBGridDrawDataCell(Sender: TObject; const Rect: TRect;
  46. Field: TField; State: TGridDrawState);
  47. procedure GurnDBGridColExit(Sender: TObject);
  48. procedure GurnDBGridKeyPress(Sender: TObject; var Key: Char);
  49. procedure BtnSpGClick(Sender: TObject);
  50. procedure BtnSpTClick(Sender: TObject);
  51. private
  52. { Private declarations }
  53. public
  54. { Public declarations }
  55. end;
  56.  
  57. var
  58. MainForm: TMainForm;
  59.  
  60. implementation
  61. uses
  62.  
  63.  
  64. {$R *.dfm}
  65.  
  66. procedure TMainForm.CloseApp(Sender: TObject);
  67. begin
  68. Close;
  69. end;
  70.  
  71. procedure TMainForm.BtnExitClick(Sender: TObject);
  72. begin
  73. Close;
  74. end;
  75.  
  76.  
  77.  
  78. procedure TMainForm.FilePrnSetupClick(Sender: TObject);
  79. begin
  80. PrinterSetup.Execute;
  81. end;
  82.  
  83. procedure TMainForm.OpenFile(Sender: TObject);
  84. begin
  85. OpenDlg.Execute;
  86. end;
  87.  
  88. procedure TMainForm.Button1Click(Sender: TObject);
  89. var
  90. C: TClipboard;
  91. begin
  92. C := TClipboard.Create;
  93. try
  94. if Clipboard.HasFormat(CF_BITMAP) then
  95. DBImage1.PasteFromClipboard
  96. else
  97.  
  98. finally
  99. C.Free;
  100. end;
  101. end;
  102.  
  103.  
  104. procedure TMainForm.FormCreate(Sender: TObject);
  105. begin
  106. DBLookupCombo1.Visible := False;
  107. DBLookupCombo2.Visible := False;
  108. end;
  109.  
  110.  
  111. procedure TMainForm.GurnDBGridDrawDataCell(Sender: TObject;
  112. const Rect: TRect; Field: TField; State: TGridDrawState);
  113. begin
  114. if (gdFocused in State) then
  115. begin
  116. if (Field.FieldName = DBLookupCombo1.DataField) then
  117. begin
  118. DBLookupCombo1.Left := Rect.Left + GurnDBGrid.Left;
  119. DBLookupCombo1.Top := Rect.Top + GurnDBGrid.top;
  120. DBLookupCombo1.Width := Rect.Right - Rect.Left;
  121. { DBLookupCombo1.Height := Rect.Bottom - Rect.Top; }
  122. DBLookupCombo1.Visible := True;
  123. end;
  124.  
  125. if (Field.FieldName = DBLookupCombo2.DataField) then
  126. begin
  127. DBLookupCombo2.Left := Rect.Left + GurnDBGrid.Left;
  128. DBLookupCombo2.Top := Rect.Top + GurnDBGrid.top;
  129. DBLookupCombo2.Width := Rect.Right - Rect.Left;
  130. { DBLookupCombo1.Height := Rect.Bottom - Rect.Top; }
  131. DBLookupCombo2.Visible := True;
  132. end;
  133. end;
  134. end;
  135.  
  136.  
  137. procedure TMainForm.GurnDBGridColExit(Sender: TObject);
  138. begin
  139. If GurnDBGrid.SelectedField.FieldName = DBLookupCombo1.DataField then
  140. DBLookupCombo1.Visible := false;
  141. end;
  142.  
  143.  
  144.  
  145. procedure TMainForm.GurnDBGridKeyPress(Sender: TObject; var Key: Char);
  146. begin
  147. if (key <> chr(9)) then
  148. begin
  149. if (GurnDBGrid.SelectedField.FieldName = DBLookupCombo1.DataField) then
  150. begin
  151. DBLookupCombo1.SetFocus;
  152. SendMessage(DBLookupCombo1.Handle, WM_Char, word(Key), 0);
  153. end;
  154. if (GurnDBGrid.SelectedField.FieldName = DBLookupCombo2.DataField) then
  155. begin
  156. DBLookupCombo2.SetFocus;
  157. SendMessage(DBLookupCombo2.Handle, WM_Char, word(Key), 0);
  158. end;
  159. end;
  160. end;
  161.  
  162. procedure TMainForm.BtnSpGClick(Sender: TObject);
  163. begin
  164. SpGForm.Show;
  165. end;
  166.  
  167. procedure TMainForm.BtnSpTClick(Sender: TObject);
  168. begin
  169. SpTForm.Show;
  170. end;
  171.  
  172. end.


Федоненко Владимир Викторович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Федоненко Владимир Викторович (статус: Посетитель)
Вопрос отправлен: 21 июня 2006, 12:48
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.02 сек.