Форум: "Базы";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
ВнизМожно ли в DBGride на поле look-up выводить не одно поле, а два? Найти похожие ветки
← →
arkara (2002-10-21 16:50) [0]Уважаемые мастера, помогите! Можно ли в DBGride на поле look-up выводить не одно поле, а два? Т.е.: надо в одно поле таблицы1 занести данные из другого поля таблицы2. Но показывать при выборе нужно не только одно то поле, а и еще одно для того чтобы пользователь мог понять , что за цифры он вообще выбирает. Типа: 1 - номер, 2 - цвет. (1|белый). Кто-нибудь! подскажите как этот выпадающий список к DBGridу таблицы1 прицепить!! Без использования всяких сторонних компонент.
← →
Андрей Прокофьев (2002-10-21 16:52) [1]ListField can represent more than one field. Multiple field names should be separated by semicolons.
← →
arkara (2002-10-21 16:59) [2]Так это я тоже читал. Только это относиться к DBLookupCombo, а мне надо чтобы список выпадал в одном из полей DBGridа!!! или можно как-то прицепить DBLookupComboBox к DBGrid?? Как??
← →
Johnmen (2002-10-21 17:25) [3]В свойствах лукапного поля перечисляешь через ; список отображаемых в списке полей !
← →
arkara (2002-10-21 17:29) [4]Народ, я тоже читал хелпы!! Цитировать не нужно... Конкретно кто-нить может сказать???
← →
Игорь Шевченко (2002-10-21 17:46) [5]
{
Использование дополнительного компонента для InplaceEditor"а в DBGrid.
Для примера используется редактор поля State в таблице Clients из стандартного
алиаса DBDEMOS.
Для колонки State в DBGrid добавлен PickList из нескольких штатов. (CA,MA,NY)
2002, Игорь Шевченко
}
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, Db, DBTables, DBCtrls, StdCtrls;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBGrid: TDBGrid;
Edit: TEdit;
AddressLabel: TLabel;
procedure FormCreate(Sender: TObject);
procedure DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DBGridColExit(Sender: TObject);
procedure DBGridKeyPress(Sender: TObject; var Key: Char);
private
FEditor : TDBComboBox; { Тот самый ComboBox,
который будет замещать стандартный InplaceEditor
для поля State }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var I : Integer;
begin
{ Создание комбобокса вручную, можно положить на форму в design-time }
FEditor := TDBComboBox.Create(Self);
FEditor.Parent := Self;
FEditor.Visible := false;
FEditor.Style := csDropdownList;
FEditor.DataSource := DBGrid.DataSource;
FEditor.DataField := "STATE";
for I:=0 to Pred(DBGrid.Columns.Count) do
if DBGrid.Columns[I].Field.FieldName = FEditor.DataField then begin
{ Присвоение списка PickList списку строк ComboBox"a }
FEditor.Items.Assign(DBGrid.Columns[I].PickList);
Break;
end;
end;
procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (gdFocused in State) then
if (Column.Field.FieldName = FEditor.DataField) then begin
{ Вместо стандартного InplaceEditor"а показываем ComboBox }
FEditor.Left := Rect.Left + DBGrid.Left;
FEditor.Top := Rect.Top + DBGrid.top;
FEditor.Width := Rect.Right - Rect.Left + 2;
FEditor.Visible := True;
end;
end;
procedure TForm1.DBGridColExit(Sender: TObject);
begin
{ При выходе с поля ComboBox надо скрыть }
if DBGrid.SelectedField.FieldName = FEditor.DataField then
FEditor.Visible := false;
end;
procedure TForm1.DBGridKeyPress(Sender: TObject; var Key: Char);
begin
{ Передаем все нажатия клавиш в InplaceEditor"е созданному ComboBox"у }
if (Key <> chr(9)) then
if (DBGrid.SelectedField.FieldName = FEditor.DataField) then begin
FEditor.SetFocus;
SendMessage(FEditor.Handle, WM_Char, word(Key), 0);
end;
end;
end.
Вместо ComboBox"а можно работать с любым другим Control"ом
← →
Johnmen (2002-10-21 18:04) [6]Не шуми... :)
Создай вычисляемое поле в НД таблицы2 такое, какое тебе надо, и отображай его в лукапном списке...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c