Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-21416
JS
2002-10-03 17:09
2002.11.07
Как добавить поле к существующей таблице


1-21638
Scholl
2002-10-23 11:13
2002.11.07
Пожалуйста помогите


1-21599
From_X
2002-10-30 11:11
2002.11.07
На вопрос про CGI никто не может или нехочет ответить?


1-21467
RTZ
2002-10-28 13:42
2002.11.07
Блокировка меню в WebBrowse


1-21632
Spiteful MAx
2002-10-26 17:41
2002.11.07
Шифрование данных в реестре





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский