{"id":97,"date":"2009-04-16T11:08:53","date_gmt":"2009-04-16T03:08:53","guid":{"rendered":"http:\/\/www.2lin.net\/?p=97"},"modified":"2009-04-16T11:08:53","modified_gmt":"2009-04-16T03:08:53","slug":"97","status":"publish","type":"post","link":"https:\/\/www.2lin.top\/?p=97","title":{"rendered":"\u8ba9DevExpress V4 \u7684 LookupComboBox \u53ef\u4ee5\u591a\u5217\u67e5\u8be2\u3002"},"content":{"rendered":"<p>\u7ecf\u5206\u6790\u4fee\u6539\u4ee5\u4e0b\u4e24\u4e2a\u6587\u4ef6\u5373\u53ef\u8fbe\u5230\u76ee\u6807<br \/>cxCustomData.pas&nbsp;<br \/>\u4fee\u6539\u4e00<\/p>\n<pre class=\"brush:delphi;toolbar:false\">&nbsp;&nbsp;TcxCustomDataController&nbsp;=&nbsp;class(TPersistent,&nbsp;IUnknown)\n&nbsp;&nbsp;private\n&nbsp;&nbsp;&nbsp;&nbsp;FDisplayIndex:&nbsp;Integer;&nbsp;--\u6dfb\u52a0\u4e00\u4e2a\u5c5e\u6027\n&nbsp;&nbsp;&nbsp;&nbsp;FActive:&nbsp;Boolean;\n&nbsp;&nbsp;&nbsp;&nbsp;FAfterSummaryFlag:&nbsp;Boolean;\n&nbsp;&nbsp;&nbsp;&nbsp;FBookmarkRecordIndex:&nbsp;Integer;\n...\n&nbsp;&nbsp;public\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;property&nbsp;DisplayIndex:&nbsp;Integer&nbsp;&nbsp;read&nbsp;FDisplayIndex&nbsp;write&nbsp;FDisplayIndex;&nbsp;--\u628a\u5c5e\u6027\u516c\u5e03\u51fa\u6765<\/pre>\n<p>\u4fee\u6539\u4e8c<\/p>\n<pre class=\"brush:delphi;toolbar:false\">function&nbsp;TcxCustomDataController.DoIncrementalFilterRecord\n&nbsp;&nbsp;(ARecordIndex:&nbsp;Integer):&nbsp;Boolean;\nvar\n&nbsp;&nbsp;S:&nbsp;string;\n&nbsp;&nbsp;I:&nbsp;Integer;\nbegin\n&nbsp;&nbsp;Result&nbsp;:=&nbsp;False;\n&nbsp;&nbsp;for&nbsp;I&nbsp;:=&nbsp;0&nbsp;to&nbsp;Fields.ItemCount&nbsp;-&nbsp;1&nbsp;do\n&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;:=&nbsp;GetInternalDisplayText(ARecordIndex,&nbsp;Fields[I]);\n&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;DataCompareText(S,&nbsp;FIncrementalFilterText,&nbsp;True);\n&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Result&nbsp;then\n&nbsp;&nbsp;&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FDisplayIndex&nbsp;:=&nbsp;I;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit;\n&nbsp;&nbsp;&nbsp;&nbsp;end;\n&nbsp;&nbsp;end;\n&nbsp;&nbsp;\/\/&nbsp;\u6ce8\u91ca\u6389\u539f\u6765\u7684\u4ee3\u7801\n&nbsp;&nbsp;\/\/&nbsp;S&nbsp;:=&nbsp;GetInternalDisplayText(ARecordIndex,&nbsp;FIncrementalFilterField);\n&nbsp;&nbsp;\/\/&nbsp;Result&nbsp;:=&nbsp;DataCompareText(S,&nbsp;FIncrementalFilterText,&nbsp;True);\nend;<\/pre>\n<p>cxLookupEdit.pas<br \/>\u4fee\u6539\u4e00<\/p>\n<pre class=\"brush:delphi;toolbar:false\">function&nbsp;TcxCustomLookupEditLookupData.Locate(var&nbsp;AText,&nbsp;ATail:&nbsp;string;\n&nbsp;&nbsp;ANext:&nbsp;Boolean):&nbsp;Boolean;\n&nbsp;&nbsp;function&nbsp;SetGridFilter(AItemIndex:&nbsp;Integer;&nbsp;const&nbsp;AText:&nbsp;string):&nbsp;Integer;\n&nbsp;&nbsp;...\n&nbsp;&nbsp;var\n&nbsp;&nbsp;&nbsp;&nbsp;AItemIndex,&nbsp;ARecordIndex:&nbsp;Integer;\n&nbsp;&nbsp;&nbsp;&nbsp;S:&nbsp;string;\n&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;False;\n&nbsp;&nbsp;&nbsp;&nbsp;DisableChanging;\n&nbsp;&nbsp;&nbsp;&nbsp;try\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AItemIndex&nbsp;:=&nbsp;GetListIndex;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(AItemIndex&nbsp;&lt;&gt;&nbsp;-1)&nbsp;and&nbsp;(DataController&nbsp;&lt;&gt;&nbsp;nil)&nbsp;then\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;TODO:&nbsp;Next\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;FVisible&nbsp;and\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Properties.GetIncrementalFiltering&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;and&nbsp;(Properties.DropDownListStyle&nbsp;&lt;&gt;&nbsp;lsFixedList)&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARecordIndex&nbsp;:=&nbsp;SetGridFilter(AItemIndex,&nbsp;AText)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARecordIndex&nbsp;:=&nbsp;Properties.FindByText(AItemIndex,&nbsp;AText,&nbsp;True);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;ARecordIndex&nbsp;&lt;&gt;&nbsp;-1&nbsp;then\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataController.ChangeFocusedRecordIndex(ARecordIndex);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoSetCurrentKey(ARecordIndex);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;True;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u6b64\u5904\u4e3a\u6dfb\u52a0\u4ee3\u7801\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;DataController.DisplayIndex&nbsp;&gt;&nbsp;-1&nbsp;then\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;:=&nbsp;DataController.DisplayTexts[ARecordIndex,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataController.DisplayIndex];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataController.DisplayIndex&nbsp;:=&nbsp;-1;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;:=&nbsp;DataController.DisplayTexts[ARecordIndex,&nbsp;AItemIndex];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/&nbsp;\u7ed3\u675f\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AText&nbsp;:=&nbsp;Copy(S,&nbsp;1,&nbsp;Length(AText));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ATail&nbsp;:=&nbsp;Copy(S,&nbsp;Length(AText)&nbsp;+&nbsp;1,&nbsp;Length(S));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoSetKeySelection(True);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoSetKeySelection(False);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;\n&nbsp;&nbsp;&nbsp;&nbsp;finally\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnableChanging;\n&nbsp;&nbsp;&nbsp;&nbsp;end;\n&nbsp;&nbsp;end;<\/pre>\n<p>\u7ecf\u8fc7\u4ee5\u4e0a\u4fee\u6539\u91cd\u65b0\u7f16\u8bd1\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7ecf\u5206\u6790\u4fee\u6539\u4ee5\u4e0b\u4e24\u4e2a\u6587\u4ef6\u5373\u53ef\u8fbe\u5230\u76ee\u6807cxCustomData.pas&nbsp;\u4fee\u6539\u4e00 &nbsp;&nbsp;TcxCustomDataController&nbsp;=&#038;nb&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.2lin.top\/index.php?rest_route=\/wp\/v2\/posts\/97"}],"collection":[{"href":"https:\/\/www.2lin.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.2lin.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.2lin.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.2lin.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=97"}],"version-history":[{"count":0,"href":"https:\/\/www.2lin.top\/index.php?rest_route=\/wp\/v2\/posts\/97\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.2lin.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=97"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.2lin.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=97"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.2lin.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=97"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}