RxFPC:fix RxDBLookupCombo in RxDBGrid

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6694 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2018-10-17 05:44:07 +00:00
parent a265432f39
commit 6cfa51cb44
5 changed files with 184 additions and 65 deletions

View File

@@ -26,9 +26,6 @@
</BuildModes> </BuildModes>
<PublishOptions> <PublishOptions>
<Version Value="2"/> <Version Value="2"/>
<IgnoreBinaries Value="False"/>
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
</PublishOptions> </PublishOptions>
<RunParams> <RunParams>
<FormatVersion Value="2"/> <FormatVersion Value="2"/>
@@ -75,8 +72,8 @@
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="RxDBGridMainUnit"/> <UnitName Value="RxDBGridMainUnit"/>
<IsVisibleTab Value="True"/> <IsVisibleTab Value="True"/>
<TopLine Value="118"/> <TopLine Value="132"/>
<CursorPos X="50" Y="152"/> <CursorPos X="96" Y="144"/>
<UsageCount Value="130"/> <UsageCount Value="130"/>
<Loaded Value="True"/> <Loaded Value="True"/>
<LoadedDesigner Value="True"/> <LoadedDesigner Value="True"/>
@@ -450,9 +447,10 @@
</Unit52> </Unit52>
<Unit53> <Unit53>
<Filename Value="/home/install/source/fpcsrc/packages/fcl-db/src/base/db.pas"/> <Filename Value="/home/install/source/fpcsrc/packages/fcl-db/src/base/db.pas"/>
<UnitName Value="DB"/>
<EditorIndex Value="-1"/> <EditorIndex Value="-1"/>
<TopLine Value="1652"/> <TopLine Value="2271"/>
<CursorPos X="14" Y="1665"/> <CursorPos Y="2288"/>
<UsageCount Value="11"/> <UsageCount Value="11"/>
</Unit53> </Unit53>
<Unit54> <Unit54>
@@ -651,122 +649,122 @@
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid.pas"/>
<Caret Line="1182" Column="61" TopLine="1151"/> <Caret Line="1192" Column="45" TopLine="1180"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="2340" Column="3" TopLine="2338"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="1182" Column="15" TopLine="1164"/> <Caret Line="80" Column="27" TopLine="50"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="1162" Column="15" TopLine="1143"/> <Caret Line="162" TopLine="153"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="2341" Column="3" TopLine="2338"/> <Caret Line="159" TopLine="152"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="1161" Column="15" TopLine="1101"/> <Caret Line="160" TopLine="152"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="1269" TopLine="1241"/> <Caret Line="161" TopLine="152"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="3023" Column="13" TopLine="3017"/> <Caret Line="163" TopLine="152"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="../../../rxdb/rxlookup.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="322" Column="14" TopLine="305"/> <Caret Line="164" TopLine="152"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="3023" Column="26" TopLine="3017"/> <Caret Line="166" TopLine="152"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="../../../rxdb/rxdbgrid.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="1192" Column="45" TopLine="1180"/> <Caret Line="165" Column="2" TopLine="152"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="159" TopLine="152"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="80" Column="27" TopLine="50"/> <Caret Line="160" TopLine="152"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="162" TopLine="153"/> <Caret Line="161" TopLine="152"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="159" TopLine="152"/> <Caret Line="166" TopLine="152"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="160" TopLine="152"/> <Caret Line="169" Column="4" TopLine="152"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="161" TopLine="152"/> <Caret Line="159" TopLine="152"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="163" TopLine="152"/> <Caret Line="160" TopLine="152"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="164" TopLine="152"/> <Caret Line="161" TopLine="152"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/>
<Caret Line="166" TopLine="152"/> <Caret Line="166" TopLine="152"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="165" Column="2" TopLine="152"/> <Caret Line="152" Column="50" TopLine="121"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="159" TopLine="152"/> <Caret Line="153" Column="50" TopLine="122"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="160" TopLine="152"/> <Caret Line="154" Column="50" TopLine="123"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="161" TopLine="152"/> <Caret Line="101" Column="15" TopLine="85"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="166" TopLine="152"/> <Caret Line="244" Column="3" TopLine="239"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="169" Column="4" TopLine="152"/> <Caret Line="143" Column="98" TopLine="128"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="159" TopLine="152"/> <Caret Line="144" Column="98" TopLine="129"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="160" TopLine="152"/> <Caret Line="145" Column="98" TopLine="130"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="161" TopLine="152"/> <Caret Line="146" Column="98" TopLine="131"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="../../../rxdb/rxdbgrid_popupfilterunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
<Caret Line="166" TopLine="152"/> <Caret Line="147" Column="98" TopLine="132"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>

View File

@@ -1,22 +1,22 @@
object RxDBGridMainForm: TRxDBGridMainForm object RxDBGridMainForm: TRxDBGridMainForm
Left = 279 Left = 250
Height = 732 Height = 732
Top = 137 Top = 192
Width = 1182 Width = 1240
ActiveControl = Panel1 ActiveControl = Panel1
Caption = 'RxDBGrid Demo' Caption = 'RxDBGrid Demo'
ClientHeight = 704 ClientHeight = 704
ClientWidth = 1182 ClientWidth = 1240
Menu = MainMenu1 Menu = MainMenu1
OnCreate = FormCreate OnCreate = FormCreate
SessionProperties = 'RxDBGridExportSpreadSheet1.FileName;RxDBGridExportSpreadSheet1.OpenAfterExport;RxDBGridExportSpreadSheet1.Options;RxDBGridExportSpreadSheet1.PageName;RxDBGridPrint1.Options;RxDBGridPrint1.Orientation;RxDBGridPrint1.PageMargin;RxDBGridPrint1.ReportTitle;RxDBGridPrint1.ShowColumnHeaderOnAllPage' SessionProperties = 'RxDBGridExportSpreadSheet1.FileName;RxDBGridExportSpreadSheet1.OpenAfterExport;RxDBGridExportSpreadSheet1.Options;RxDBGridExportSpreadSheet1.PageName;RxDBGridPrint1.Options;RxDBGridPrint1.Orientation;RxDBGridPrint1.PageMargin;RxDBGridPrint1.ReportTitle;RxDBGridPrint1.ShowColumnHeaderOnAllPage'
ShowHint = True ShowHint = True
LCLVersion = '1.9.0.0' LCLVersion = '2.1.0.0'
object RxDBGrid1: TRxDBGrid object RxDBGrid1: TRxDBGrid
Left = 0 Left = 0
Height = 627 Height = 627
Top = 77 Top = 77
Width = 1182 Width = 1240
ColumnDefValues.BlobText = '(примечание)' ColumnDefValues.BlobText = '(примечание)'
TitleButtons = True TitleButtons = True
AutoSort = True AutoSort = True
@@ -367,6 +367,36 @@ object RxDBGridMainForm: TRxDBGridMainForm
Filter.EmptyFont.Style = [fsItalic] Filter.EmptyFont.Style = [fsItalic]
Filter.ItemIndex = -1 Filter.ItemIndex = -1
Footers = <> Footers = <>
end
item
Title.Alignment = taCenter
Title.Orientation = toHorizontal
Title.Caption = 'сategory_id'
Width = 100
FieldName = 'сategory_id'
EditButtons = <>
Filter.DropDownRows = 0
Filter.EmptyValue = '(Пусто)'
Filter.NotEmptyValue = '(Не пусто)'
Filter.AllValue = '(Все значения)'
Filter.EmptyFont.Style = [fsItalic]
Filter.ItemIndex = -1
Footers = <>
end
item
Title.Alignment = taCenter
Title.Orientation = toHorizontal
Title.Caption = 'сategory_name'
Width = 200
FieldName = 'сategory_name'
EditButtons = <>
Filter.DropDownRows = 0
Filter.EmptyValue = '(Пусто)'
Filter.NotEmptyValue = '(Не пусто)'
Filter.AllValue = '(Все значения)'
Filter.EmptyFont.Style = [fsItalic]
Filter.ItemIndex = -1
Footers = <>
end> end>
KeyStrokes = < KeyStrokes = <
item item
@@ -453,11 +483,11 @@ object RxDBGridMainForm: TRxDBGridMainForm
Left = 0 Left = 0
Height = 77 Height = 77
Top = 0 Top = 0
Width = 1182 Width = 1240
Align = alTop Align = alTop
AutoSize = True AutoSize = True
ClientHeight = 77 ClientHeight = 77
ClientWidth = 1182 ClientWidth = 1240
TabOrder = 1 TabOrder = 1
object Label1: TLabel object Label1: TLabel
AnchorSideLeft.Control = Button2 AnchorSideLeft.Control = Button2
@@ -664,6 +694,15 @@ object RxDBGridMainForm: TRxDBGridMainForm
Name = 'RAIT' Name = 'RAIT'
DataType = ftString DataType = ftString
Size = 15 Size = 15
end
item
Name = 'сategory_id'
DataType = ftInteger
end
item
Name = 'сategory_name'
DataType = ftString
Size = 100
end> end>
PacketRecords = 0 PacketRecords = 0
Left = 152 Left = 152
@@ -747,6 +786,29 @@ object RxDBGridMainForm: TRxDBGridMainForm
Required = False Required = False
Size = 15 Size = 15
end end
object RxMemoryData1ategory_id: TLongintField
FieldKind = fkData
FieldName = 'сategory_id'
Index = 7
LookupCache = False
ProviderFlags = [pfInUpdate, pfInWhere]
ReadOnly = False
Required = False
end
object RxMemoryData1ategory_name: TStringField
FieldKind = fkData
FieldName = 'сategory_name'
Index = 8
KeyFields = 'сategory_id'
LookupCache = False
LookupDataSet = RxMemoryData3
LookupKeyFields = 'сategory_id'
LookupResultField = 'сategory_name'
ProviderFlags = [pfInUpdate, pfInWhere]
ReadOnly = False
Required = False
Size = 100
end
end end
object Datasource1: TDataSource object Datasource1: TDataSource
DataSet = RxMemoryData1 DataSet = RxMemoryData1
@@ -1561,4 +1623,43 @@ object RxDBGridMainForm: TRxDBGridMainForm
Left = 897 Left = 897
Top = 164 Top = 164
end end
object RxMemoryData3: TRxMemoryData
FieldDefs = <
item
Name = 'сategory_id'
DataType = ftInteger
end
item
Name = 'сategory_name'
DataType = ftString
Size = 100
end>
PacketRecords = 0
Left = 896
Top = 384
object RxMemoryData3ategory_id: TLongintField
FieldKind = fkData
FieldName = 'сategory_id'
Index = 0
LookupCache = False
ProviderFlags = [pfInUpdate, pfInWhere]
ReadOnly = False
Required = False
end
object RxMemoryData3ategory_name: TStringField
FieldKind = fkData
FieldName = 'сategory_name'
Index = 1
LookupCache = False
ProviderFlags = [pfInUpdate, pfInWhere]
ReadOnly = False
Required = False
Size = 100
end
end
object DataSource3: TDataSource
DataSet = RxMemoryData3
Left = 848
Top = 384
end
end end

View File

@@ -17,6 +17,7 @@ type
TRxDBGridMainForm = class(TForm) TRxDBGridMainForm = class(TForm)
actCalcTotal: TAction; actCalcTotal: TAction;
CheckBox5: TCheckBox; CheckBox5: TCheckBox;
DataSource3: TDataSource;
Label2: TLabel; Label2: TLabel;
MenuItem10: TMenuItem; MenuItem10: TMenuItem;
MenuItem11: TMenuItem; MenuItem11: TMenuItem;
@@ -29,7 +30,12 @@ type
RxDBGridFooterTools1: TRxDBGridFooterTools; RxDBGridFooterTools1: TRxDBGridFooterTools;
RxDBGridPrint1: TRxDBGridPrint; RxDBGridPrint1: TRxDBGridPrint;
RxIniPropStorage1: TRxIniPropStorage; RxIniPropStorage1: TRxIniPropStorage;
RxMemoryData1ategory_id: TLongintField;
RxMemoryData1ategory_name: TStringField;
RxMemoryData1RAIT: TStringField; RxMemoryData1RAIT: TStringField;
RxMemoryData3: TRxMemoryData;
RxMemoryData3ategory_id: TLongintField;
RxMemoryData3ategory_name: TStringField;
SpeedButton1: TSpeedButton; SpeedButton1: TSpeedButton;
sysExit: TAction; sysExit: TAction;
hlpAbout: TAction; hlpAbout: TAction;
@@ -130,8 +136,12 @@ begin
RxMemoryData2.AppendRecord([2, 'Borland']); RxMemoryData2.AppendRecord([2, 'Borland']);
RxMemoryData2.AppendRecord([3, 'Microsoft']); RxMemoryData2.AppendRecord([3, 'Microsoft']);
RxMemoryData3.Open;
RxMemoryData3.AppendRecord([1, 'Lite']);
RxMemoryData3.AppendRecord([2, 'Full version']);
RxMemoryData1.Open; RxMemoryData1.Open;
RxMemoryData1.AppendRecord([1, 'Lazarus', 0, 'Open source', EncodeDate(2006, 1, 1), 1]); RxMemoryData1.AppendRecord([1, 'Lazarus', 0, 'Open source', EncodeDate(2006, 1, 1), 1, 1, 1, 'Lite']);
RxMemoryData1.AppendRecord([2, 'Delphi 7.0 Prof', 990, 'Borland', EncodeDate(2002, 1, 1), 2]); RxMemoryData1.AppendRecord([2, 'Delphi 7.0 Prof', 990, 'Borland', EncodeDate(2002, 1, 1), 2]);
RxMemoryData1.AppendRecord([3, 'Open Office 2.2.0', 0, 'Open source', EncodeDate(2006, 10, 1), 1]); RxMemoryData1.AppendRecord([3, 'Open Office 2.2.0', 0, 'Open source', EncodeDate(2006, 10, 1), 1]);
RxMemoryData1.AppendRecord([4, 'Microsoft Office', 150, 'Microsoft', EncodeDate(1997, 8, 12), 3]); RxMemoryData1.AppendRecord([4, 'Microsoft Office', 150, 'Microsoft', EncodeDate(1997, 8, 12), 3]);

View File

@@ -2961,10 +2961,20 @@ begin
DataSource := FGrid.DataSource; DataSource := FGrid.DataSource;
if Assigned(F) then if Assigned(F) then
begin begin
FLDS.DataSet := nil;
{ DataField := '';
LookupDisplay := '';
LookupField := '';
FLDS.DataSet := F.LookupDataSet; }
DataField := F.KeyFields; DataField := F.KeyFields;
LookupDisplay := F.LookupResultField; LookupDisplay := F.LookupResultField;
LookupField := F.LookupKeyFields; LookupField := F.LookupKeyFields;
FLDS.DataSet := F.LookupDataSet; FLDS.DataSet := F.LookupDataSet;
FGrid.GetOnCreateLookup; FGrid.GetOnCreateLookup;
end; end;
end; end;

View File

@@ -1696,7 +1696,7 @@ begin
FListActive := True; FListActive := True;
FDisplayField := FLookupDataLink.DataSet.FieldByName(FFieldList[FLookupDisplayIndex]); FDisplayField := FLookupDataLink.DataSet.FieldByName(FFieldList[FLookupDisplayIndex]);
end; end;
FLocateObject.DataSet := DataSet; FLocateObject.DataSet := FLookupDataLink.DataSet;//DataSet;
if not (csDestroying in ComponentState) then if not (csDestroying in ComponentState) then
begin begin