TRxDBLookupCombo

Модераторы: alexs, Модераторы

TRxDBLookupCombo

Сообщение kit » 21.11.2016 10:12:55

Почему не работает без задания LookupSource?
В TDBLookupComboBox если DataField := DataSet.LookupField то LookupSource создается автоматически:

procedure TDBLookup.DoInitialize;
var
ListFields: TList;
ListLinkDataset: TDataSet;
begin
FDataFields.Clear;
FKeyFields.Clear;
FListField := nil;
FHasLookUpField := False;
FLookUpFieldIsCached := False;
if Assigned(FControlLink) and Assigned(FControlLink.DataSet)
and FControlLink.DataSet.Active then
begin
if Assigned(FControlLink.Field) then
begin
FHasLookUpField := (FControlLink.Field.FieldKind = fkLookup);
FLookUpFieldIsCached := (FHasLookupField and FControlLink.Field.LookupCache);
if FHasLookUpField then
begin
if FLookupSource = nil then
FLookupSource := TDataSource.Create(Self);
if (FLookupSource.DataSet <> FControlLink.Field.LookupDataSet) then
FLookupSource.DataSet:= FControlLink.Field.LookupDataSet;
FListLink.DataSource := FLookupSource;
FDataFieldNames := FControlLink.Field.KeyFields;
FKeyFieldNames := FControlLink.Field.LookupKeyFields;
end else
FDataFieldNames := FControlLink.Field.FieldName;
FControlLink.DataSet.GetFieldList(FDataFields, FDataFieldNames);
end;
end;
if not FHasLookUpField then
FListLink.DataSource := FListSource;

if (FKeyFieldNames > '') and FListLink.Active then
begin
ListLinkDataset := FListLink.DataSet;
ListFields := TList.Create;
try
ListLinkDataset.GetFieldList(ListFields, FListFieldName);
ListLinkDataset.GetFieldList(FKeyFields, FKeyFieldNames);
if FHasLookUpField then
begin
FListField := ListLinkDataset.FindField(FControlLink.Field.LookupResultField);
if (Assigned(FListField) and (ListFields.IndexOf(FListField) < 0)) then
ListFields.Insert(0, FListField);
if (ListFields.Count > 0) then
FListField := TField(ListFields[0]);
end else
begin
if ((FKeyFields.Count > 0) and (ListFields.Count = 0)) then
ListFields.Add(FKeyFields[0]);
if ((FListFieldIndex > -1) and (FListFieldIndex < ListFields.Count)) then
FListField := TField(ListFields[FListFieldIndex])
else
FListField := TField(ListFields[0]);
end;
finally
ListFields.Free;
end;
FetchLookupData;
end;
end;
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: TRxDBLookupCombo

Сообщение alexs » 21.11.2016 10:28:43

kit писал(а):Почему не работает без задания LookupSource?

А в чём смысл этой компоненты без лукапа?
Откуда значения брать?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: TRxDBLookupCombo

Сообщение kit » 21.11.2016 10:36:34

Надо создавать при инициалицации так как в TDBLookupComboBox
FLookupSource := TDataSource.Create(Self);
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: TRxDBLookupCombo

Сообщение alexs » 21.11.2016 13:45:03

Зачем?
Там надо указывать тот источник данных, который содержит в себе справочные значение.
А так - ну создали - и что?
Кто данные предоставит?
И если я потом указываю свой источник данных - с этим созданным что делать?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: TRxDBLookupCombo

Сообщение kit » 21.11.2016 16:48:49

В TDBLookupComboBox работает.. но там есть проблема если KeyField = 'id1;id2';
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: TRxDBLookupCombo

Сообщение alexs » 05.02.2018 17:58:09

Чтобы не начинать новую тему
Ревизия 6177.Реализовал новое свойство - RxDBLookupCombo.Style
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: TRxDBLookupCombo

Сообщение alexkam » 10.02.2018 21:09:40

У TRxDBLookupCombo Height=27 Как сделать меньше? Чтобы выглядел как стандартный.
alexkam
постоялец
 
Сообщения: 152
Зарегистрирован: 07.09.2009 20:03:59

Re: TRxDBLookupCombo

Сообщение alexs » 11.02.2018 01:49:40

Самому уменьшать. Если есть возможность - привязать по высоте к расположенному рядом какому нибудь edit-у или combobox-у.
На самом деле - это у меня проблема сейчас. Я не знаю как получить стандартную высоту ComboBox-а в системе для установки её в лукапе.
Если кто знает - делитесь секретом.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: TRxDBLookupCombo

Сообщение kit » 01.12.2018 15:58:59

Реально сделать фильтр списка lookup?
Может так как в JvDBCombobox.pas по условию Pos(Text, Items[Index]) > 0 прорисовивать DrawText
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: TRxDBLookupCombo

Сообщение alexs » 01.12.2018 16:07:19

там в виде списка используется RxDBGrid. Используй фильтра на подключенный датасет.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в RxLib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru