Главная страница
    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.47 MB
Время: 0.007 c
3-21362
RomZm
2002-10-20 01:23
2002.11.07
База в InterBase


3-21449
vladimir_12
2002-10-21 12:23
2002.11.07
Поиск в Dataset или DBGrid


1-21649
123Misha
2002-10-27 19:51
2002.11.07
Всплывающие меню в стиле XP


14-21795
^Sanya
2002-10-19 00:15
2002.11.07
Почемураз работчики приложений Delphi обходят стороной???!!!!


3-21424
Andrey Pelipets
2002-10-18 18:33
2002.11.07
ADO:фильтрация записей с частичным совпадением





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский