Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.07;
Скачать: CL | DM;

Вниз

Можно ли в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
1-21639
Zhenya_g
2002-10-26 23:22
2002.11.07
Проблема с Delphi5


1-21684
Yuraz
2002-10-28 12:17
2002.11.07
Как сделать свою подсказку для каждой строчки ListBox?


3-21428
nikolo
2002-10-16 12:55
2002.11.07
Как удалить пароль из Paradox-таблицы?


1-21642
lena13
2002-10-25 17:31
2002.11.07
DriveComboBox DirectoryListBox


3-21443
irmantukas
2002-10-19 21:24
2002.11.07
Lookup лист в таблице