Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress

Автор: JonyBes
Дата сообщения: 13.01.2007 19:19
Проблема такая :
Работаю под Делфи2006 + Sql2005 + DevExpress дек 2006
На форме раскидано куча Едитов(не DB). Если создаешь новый объект(т.е. все Едиты пустые, которые планомерно забиваешь информацией + Сохранение в БД через АДО), то все ОК. Если редактируешь(т.е. значение Едитов заносятся при открытии формы из БД, потом изменяются + update АДО), щелкаешь по Едиту(причем любому) - появляется старое значение(Хотя форма не обновляется). Остальные едиты уже не меняют свои значения на старые.
Сумбурно объяснил , но побороть это дело надо!
Автор: ThunderES
Дата сообщения: 13.01.2007 21:16
После перехода на Grid 6.1 возникли проблемы при экспорте в Excel, если экспортируется BandedTableView. На сайте DevExpress обещают исправления в следующей версии. Нужен ли hotfix от авторов, или может сам кто-нибудь поборол этот баг.
Автор: Widoms
Дата сообщения: 16.01.2007 05:16
Подскажите в какой последовательности устанавливать dpk package, если устанавливаешь вручную а не через инсталлятор.
Автор: VoodooSV
Дата сообщения: 16.01.2007 09:19
Widoms
Примерно так:
[more]
XP Theme Manager
XP Theme Manager\Packages\dxThemeD7.dpk (Compile)

Innerfuse Pascal Script
Innerfuse Pascal Script\Packages\cxIFPascalScriptD7.dpk (Compile)

ExpressLibrary
ExpressLibrary\Packages\cxLibraryVCLD7.dpk (Compile)
ExpressLibrary\Packages\dclcxLibraryVCLD7.dpk (Compile & Install)

ExpressCommon Library
ExpressCommon Library\Packages\dxComnD7.dpk (Compile)

ExpressDataController
ExpressDataController\Packages\cxDataD7.dpk (Compile)
ExpressDataController\Packages\cxADOAdaptersD7.dpk (Compile)
ExpressDataController\Packages\cxBDEAdaptersD7.dpk (Compile)
ExpressDataController\Packages\cxIBXAdaptersD7.dpk (Compile)

ExpressEditors Library 5
ExpressEditors Library 5\Packages\cxEditorsVCLD7.dpk (Compile)
ExpressEditors Library 5\Packages\dclcxEditorsVCLD7.dpk (Compile & Install)
ExpressEditors Library 5\Packages\cxExtEditorsVCLD7.dpk (Compile)
ExpressEditors Library 5\Packages\dclcxExtEditorsVCLD7.dpk (Compile & Install)

ExpressExport Library
ExpressExport Library\Packages\cxExportVCLD7.dpk (Compile)


ExpressBars 5
ExpressBars 5\Packages\dxBarD7.dpk (Compile)
ExpressBars 5\Packages\dcldxBarD7.dpk (Compile & Install)
ExpressBars 5\Packages\ dxBarDBNavD7.dpk (Compile)
ExpressBars 5\Packages\dcldxBarDBNavD7.dpk (Compile & Install)
ExpressBars 5\Packages\dxBarExtItemsD7.dpk (Compile)
ExpressBars 5\Packages\dcldxBarExtItemsD7.dpk (Compile & Install)
ExpressBars 5\Packages\dxBarExtDBItemsD7.dpk (Compile)
ExpressBars 5\Packages\dcldxBarExtDBItemsD7.dpk (Compile & Install)
ExpressBars 5\Packages\dxDockingD7.dpk (Compile)
ExpressBars 5\Packages\dcldxDockingD7.dpk (Compile & Install)
ExpressBars 5\Packages\dxsbD7.dpk (Compile)
ExpressBars 5\Packages\dcldxsbD7.dpk (Compile & Install)

ExpressNavBar
ExpressNavBar\Packages\dxNavBarD7.dpk (Compile)
ExpressNavBar\Packages\dcldxNavBarD7.dpk (Compile & Install)

ExpressGDI+ Library
ExpressGDI+ Library\Packages\dxGDIPlusD7.dpk (Compile)

ExpressLayout Control
ExpressLayout Control\Packages\dxLayoutControlD7.dpk (Compile)
ExpressLayout Control\Packages\dcldxLayoutControlD7.dpk (Compile & Install)
ExpressLayout Control\Packages\dxLayoutControlcxEditAdaptersD7.dpk (Compile & Install)
ExpressLayout Control\Packages\dxLayoutControldxEditAdaptersD7.dpk (Compile & Install)

ExpressSpreadSheet
ExpressSpreadSheet\Packages\cxSpreadSheetVCLD7.dpk (Compile)
ExpressSpreadSheet\Packages\dclcxSpreadSheetVCLD7.dpk (Compile & Install)

ExpressMemData
ExpressMemData\Packages\dxmdsD7.dpk (Compile)
ExpressMemData\Packages\ dcldxmdsD7.dpk (Compile & Install)

ExpressDBTree Suite
ExpressDBTree Suite\Packages\ dxdbtrD7.dpk (Compile)
ExpressDBTree Suite\Packages\ dcldxdbtrD7.dpk (Compile & Install)
ExpressDBTree Suite\Packages\ dxtrmdD7.dpk (Compile)
ExpressDBTree Suite\Packages\ dcldxtrmdD7.dpk (Compile & Install)

ExpressFlowChart
ExpressFlowChart\Packages\dxFlowChartD7.dpk (Compile)
ExpressFlowChart\Packages\dcldxFlowChartD7.dpk (Compile & Install)

ExpressPageControl 2
ExpressPageControl 2\Packages\cxPageControlVCLD7.dpk (Compile)
ExpressPageControl 2\Packages\dclcxPageControlVCLD7.dpk (Compile & Install)

ExpressQuantumTreeList 4
ExpressQuantumTreeList 4\Packages\cxTreeListVCLD7.dpk (Compile)
ExpressQuantumTreeList 4\Packages\dclcxTreeListVCLD7.dpk (Compile & Install)

ExpressQuantumGrid 5
ExpressQuantumGrid 5\Packages\cxGridVCLD7.dpk (Compile)
ExpressQuantumGrid 5\Packages\dclcxGridVCLD7.dpk (Compile & Install)

ExpressVerticalGrid
ExpressVerticalGrid\Packages\cxVerticalGridVCLD7.dpk (Compile)
ExpressVerticalGrid\Packages\dclcxVerticalGridVCLD7.dpk (Compile & Install)

ExpressScript Engine
ExpressScript Engine\Packages\cxScriptEngineD7.dpk (Compile)

ExpressOrgChart
ExpressOrgChart\Packages\dxorgcD7.dpk (Compile)
ExpressOrgChart\Packages\dcldxorgcD7.dpk (Compile & Install)
ExpressOrgChart\Packages\dxdborD7.dpk (Compile)
ExpressOrgChart\Packages\dcldxdborD7.dpk (Compile & Install)

ExpressMasterView
ExpressMasterView\Packages\dxMasterViewD7.dpk (Compile)
ExpressMasterView\Packages\dcldxMasterViewD7.dpk (Compile & Install)

ExpressSheduler 2
ExpressSheduler 2\Packages\cxSchedulerVCLD7.dpk (Compile)
ExpressSheduler 2\Packages\dclcxSchedulerVCLD7.dpk (Compile & Install)

ExpressPivotGrid
ExpressPivotGrid\Packages\cxPivotGridD7.dpk (Compile)
ExpressPivotGrid\Packages\dclcxPivotGridD7.dpk (Compile & Install)

ExpressWeb Framework
ExpressWeb Framework\Packages\cxWebD7.dpk (Compile)
ExpressWeb Framework\Packages\dclcxWebD7.dpk (Compile & Install)
ExpressWeb Framework\Packages\cxWebPascalScriptD7.dpk (Compile)
ExpressWeb Framework\Packages\dclcxWebPascalScriptD7.dpk (Compile & Install)
ExpressWeb Framework\Packages\cxWebSnapD7.dpk (Compile)
ExpressWeb Framework\Packages\dclcxWebSnapD7.dpk (Compile & Install)
ExpressWeb Framework\Packages\cxWebTeeChartD7.dpk (Compile)
ExpressWeb Framework\Packages\dclcxWebTeeChartD7.dpk (Compile & Install)
[/more]
Автор: Dronton2
Дата сообщения: 16.01.2007 12:06
VoodooSV
Widoms
и в самом конце ещё добавить ExpressPrinting System:
dxPSCoreD9.dpk
dcldxPSCoreD9.dpk
dxPScxExtCommonD9.dpk
dxPScxPCProdD9.dpk
dxPScxSSLnkD9.dpk
dxPscxTLLnkD9.dpk
dxPScxVGridLnkD9.dpk
dxPSTeeChartD9.dpk
dxPSDBTeeChartD9.dpk
dxPSdxFCLnkD9.dpk
dxPSdxLCLnkD9.dpk
dxPSdxMVLnkD9.dpk
dxPSdxOCLnkD9.dpk
dxPSdxDBOCLnkD9.dpk
dxPSPrVwAdvD9.dpk
dxPSdxDBTVLnkD9.dpk
dxPScxGridLnkD9.dpk
dxPScxGrid6LnkD9.dpk
dxPScxSchedulerLnkD9.dpk
dxPScxScheduler2LnkD9.dpk
dxPScxPivotGridLnkD9.dpk


Добавлено:
В 4-й и 5-й версиях девЭкспресс я немного переделывал исходники экспорта с целью добавления в файл экспорта перед таблицей заголовка и нескольких строк подзаголовка.
В 6-й версии процедуры экспорта у них сильно поменялись. У кого-нибудь есть описание библиотек экспорта с целью дополнения их новыми возможностями?
Автор: VoodooSV
Дата сообщения: 16.01.2007 12:15
Dronton2
Ну, да, забыл
Автор: Glukodel
Дата сообщения: 16.01.2007 22:03
Срочно нужна помощь с TcxLookupComboBox! крышу сносит...
проблема: при вводе в него значения нужно самостоятельно отфильтровать содержимое выпадающего списка...
сделал по хелпу:
cxLookupComboBox1.Properties.DataController.Filter.AutoDataSetFilter := False;
cxLookupComboBox1.Properties.DataController.Filter.OnBeforeChange:= CustomFilter;
в обработчик CustomFilter прога незаходит, хотя родная фильтрация пропадает...
где грабли???

P.S. пробовал на DevExpr_21_dec_2006 и DevExpr_02_may_2006....... идентично...
Автор: Alex47
Дата сообщения: 17.01.2007 08:35
Glukodel

Может это поможет:

https://www.devexpress.com/Support/Center/ViewKBIssue.aspx?kbid=A344&searchtext=LOOKUP&pgid=48409584-e723-41af-b1d3-52dd97577823
Автор: Glukodel
Дата сообщения: 17.01.2007 09:44
Alex47
эх... я у них по Knowledge Base долго рылся... там есть и более близкие ответы... в одном из них (с сылкой на хелп) тот код, что я привёл...
еще вариант из их Knowledge Base:
cxLookupComboBox1.Properties.DropDownListStyle := lsEditList;
cxLookupComboBox1.Properties.IncrementalSearch := False;
cxLookupComboBox1.Properties.IncrementalFiltering := False;
procedure TForm1.cxLookupComboBox1PropertiesChange(Sender: TObject);
var
SearchFor: string;
begin
SearchFor := '*' + TcxLookupComboBox(Sender).Text + '*';
<DropdownTable>.Filtered := False;
if TcxLookupComboBox(Sender).Text = '' then
exit;
<DropdownTable>.Filter := TcxLookupComboBox(Sender).Properties.ListField.Name + ' like ' + QuotedStr(SearchFor);
<DropdownTable>.Filtered := True;
end;
т.е. это обработчик на OnChange... так сначало оно работает - набираешь - фильтрует... потом удаляем - фильтр снят, набираем заново - но датасет продолжает показывать все записи...
причем, это в Д7 и ДевЭкс 4.х, а в Д2006 с последними ДевЭксами последнее вообще не работает...
Автор: Alex47
Дата сообщения: 17.01.2007 10:24
Glukodel
1. Опишите четко требуемый функционал:
при каких условиях фильтр появляется, каковы эти условия, когда сбрасывается.
2. Какие глюки в предложенных решениях?

Тогда, может кто-то из нас, при наличии времени, и сможет конкретно помочь.
Автор: Glukodel
Дата сообщения: 17.01.2007 11:08
Alex47
я ж писал - проблема: при вводе в него значения нужно самостоятельно отфильтровать содержимое выпадающего списка...
т.е. при вводе "аа бб вв" нужно отфильтровать список, скажем так
Customer_Name like "%аа%бб%вв%"
Автор: DrLo
Дата сообщения: 18.01.2007 02:21
VoodooSV, Dronton2
А может у кого есть готовый скрипт для перекомпиляции библиотек после корректировки исходников?!
Автор: ArtemiyUO
Дата сообщения: 18.01.2007 06:26
Glukodel
Интересную тему поднял. Меня интересует практически тоже самое только для грида. Нужен инкрементальный поиск в гриде по like. Может быть кто то делал или есть ссылки какие то?
Автор: Dennica
Дата сообщения: 18.01.2007 08:26
ArtemiyUO
Glukodel
Меня тема тоже интересует. Уже поднимал тут подобный вопрос в другой формулировке. Пока так и не решил. Как только разберусь с рутиной, сяду, еще раз попробую решить задачу.
Автор: Glukodel
Дата сообщения: 18.01.2007 11:02
ArtemiyUO
Dennica
разобрался.... короче как обычно - если ниче не помогает -
итог - если отключить в ихнем комбо встроенную фильтрацию
[more=Код тут..]
CustomerCombo.Properties.DataController.Filter.AutoDataSetFilter := False;
CustomerCombo.Properties.DropDownListStyle := lsEditList;
CustomerCombo.Properties.IncrementalSearch := False;
CustomerCombo.Properties.IncrementalFiltering := False;
[/more]
то фильтр нужно ставить и для DataSet и для выпадающего списка руками..
[more=Код тут... ]
// это на OnChange combobox
procedure TMainFrm.CustomerComboPropertiesChange(Sender: TObject);
begin
SearchTimer.Enabled := False;
SearchTimer.Enabled := True;
end;

//это обработчик таймера (код поскипан для понимания)
// при вводе в комбо текста "AAA BBB"- на выходе фильтр имеет вид:
// (Field1 Like "%AAA%") and (Field1 Like "%BBB%")

procedure TMainFrm.PropertiesChange(Sender: TObject);
var
SearchFor: string;
I: Integer;
begin
SearchTimer.Enabled := True;
if LastStr = trim(TcxLookupComboBox(Sender).Text) then
Exit;
DataSetCustomers.DisableControls;
DataSetCustomers.Filtered := False;
DataSetCustomers.Filter := '';
if trim(TcxLookupComboBox(Sender).Text) = '' then
begin
DataSetCustomers.EnableControls;
CustomerCombo.Properties.DataController.Filter.Root.Clear;
Exit;
end;
LastStr := TcxLookupComboBox(Sender).Text;
CustomerCombo.Properties.DataController.Filter.BeginUpdate;
with CustomerCombo.Properties.DataController.Filter.Root do
begin
Clear;
BoolOperatorKind := fboAnd;
Sl.DelimitedText := TcxLookupComboBox(Sender).Text;
for I := 0 to Sl.Count - 1 do
begin
SearchFor := '%' + AnsiUpperCase(Sl[I]) + '%';
AddItem(CustomerCombo.Properties.ListColumns[2], foLike, SearchFor, SearchFor);
end;
end;
DataSetCustomers.Filter := CustomerCombo.Properties.DataController.Filter.FilterText;
DataSetCustomers.Filtered := True;
DataSetCustomers.EnableControls;
CustomerCombo.Properties.DataController.Filter.Active := True;
CustomerCombo.Properties.DataController.Filter.EndUpdate;
end;

[/more]
и самое интересное - принцип фильтрации ОДИНАКОВ что списка для комбика, что у ГРИДА! они все используют cxFilter...
ArtemiyUO, Dennica - вам достаточно посмотреть демо к QGrid FilterByCodeDemo... за последним в варезник........
Автор: korobovmax
Дата сообщения: 18.01.2007 12:15
Еще мельком взгляните на пример из КВ девэкспрессов - там в одном примерчике есть процедура DoFilter. По сути она идентична второму "Код тут...", но будет полезно взглянуть.
Автор: Dronton2
Дата сообщения: 18.01.2007 12:29
DrLo
Для Delphi 9:
Создаётся bat-файл, например newD9.bat (в качестве прототипа я брал файл от какой-то старой версии инсталлятора дяди Фёдора)
Содержимое файла:
#

Затем, в папке, где лежат компоненты, для папки каждого компонента создаётся папка Lib\Delphi9.
Затем, переходим в папку, где находятся папки с компонентами и выполняем команду:
newD9.bat C:\PROGRA~1\BORLAND\BDS\3.0 ..\Lib\Delphi9 9
Это для 9 версии дельфи. Из содержимого bat-файла должно быть ясно значение каждого параметра.

ЗЫ: Если в файле обнаружите какие-то ошибки или неточности - дайте знать.
Автор: vai
Дата сообщения: 18.01.2007 14:37
Ребята может кто сталкивался и поможет

В QuantiumGrid 6.1 от 21 декабря для tcxGridDbChartView выполняю функцию StoreToStream сохранения View в поток :
View.StoreToStream(St,[])

потом выполняю функцию RestoreFromStream восстановление из потока:
View.RestoreFromStream( St,False,False,[])

ПРИ ВЫПОЛНЕНИИ RESTORE ПРОИСХОДИТ ОШИБКА
project AAA reised exception class EReadError with message 'Invalid property value'

Эта ошибка происходит только тогда когда в этом ChartView есть активные группировки.
Эсли группировки не активны то StoreToStream и RestoreFromStream віполняются без
ошибок

ПО МОЕМУ ЭТО БАГ - если есть кто из зарегестрированных пользователей DevExpress
может напишете разработчикам чтобы справили в следующей версии


Очень жду помощи.
Спасибо заранее
Автор: Dronton2
Дата сообщения: 18.01.2007 16:45
vai
Может быть, это можно обойти, используя событие OnGetStoredProperties? В нём можно удалять из списка сохраняемых параметров нежелательные.

Сегодня я пытался с помощью этого и смежных событий заставить функцию StoreToStream сохранять свойства Caption для Band. Пока что безрезультатно. Не вызываются эти события. Завтра буду копаться в исходниках.
Автор: vai
Дата сообщения: 19.01.2007 09:22
Dronton2
Дело в том что сохранять группировки как раз надо.
Я думаю что надо написать разработчикам о том что у них ошибка.
просто сделать єто должен кто-то у кого "Девки" лецинзионные.
Судя по всему разработкичи об этом не знают потому что в этот баг
был с самого начала и в последнем релизе не исправлен.
Автор: Dronton2
Дата сообщения: 19.01.2007 09:37
vai
Тем не менее, можно попытаться удалить группировки из списка сохранения, таким образом убрав стандартную обработку группировок, а затем добавить их в список под другим именем и назначить свою обработку сохранения и восстановления группировок. Может быть, для обхода ошибки этот способ подойдёт.
Автор: vadvya
Дата сообщения: 21.01.2007 15:22
У пользователей (не администраторов) вылетает ошибка, приложение обращаеться к
%WINDIR%<EXE.NAME>.INI, подсовавыние файла в директорию с exe-шником результатов не приносит, как побороть?


Добавлено:
Упс... простите оказалось что это был не DevExpress
Автор: Alex47
Дата сообщения: 22.01.2007 08:51
ArtemiyUO

Цитата:
Может быть кто то делал или есть ссылки какие то?


Был вариант с правкой исходников. Я с ним не работал - нет времени.
Может найдутся желающие попробовать?
[more]
21 Dec 2004
I am programically seaching a grid with incremental search. This is working
fine for strings where the substring is from the start IE looking for abc
and it will find abcdefg (good so far) I have a requirement now to pass the
substring cde and pull the same result (cde is in the middle). I have
tracked the code to a CompareText function
Mark Rohde
21 Dec 2004
Yes, your conclusion is correct, you need to alter some sections that
make use of the CompareText() function. In addition, you will want to
modify the text selection display code used by the incremental search
feature, since it only supports selecting from the first char.
Here are the changes I implemented to have the incremental search
feature fully support searching inside words:

- in cxDataUtils.pas, I added a new global text comparison function:
function PosSubstring(const Str, SubStr: string): integer;
begin
Result := -1;
try
Result := Pos(AnsiUpperCase(SubStr), AnsiUpperCase(Str)) - 1;
except
end;
end;

- then in cxCustomData.pas, function TcxDataControllerSearch.DoSearch, I
made the following change:
commented out this line: if DataCompareText(S, ASubText, True) then
added this line instead: if PosSubstring(S, ASubText) <> -1 then

- then in cxGridCustomTableView.pas, procedure
TcxGridTableDataCellViewInfo.InitTextSelection, I made the following change:
commented out this line: SelStart := 0;
added this line instead: SelStart := PosSubstring(GetText,
Controller.IncSearchingText);

Бrpбd

15 Mar 2005
Hi Бrpбd,

I've adopted and modified your ideas.

1. cxDataUtils ( added )
- function PosSubstring(const Str, SubStr: string): integer;
- added var isDataCompareAnywhere: boolean;
( FALSE: default - search from the 1st position
TRUE: search from anywhere )
- added function DataCompareAnywhere(const S1, S2: string;
ApartialCompare: boolean): boolean;
( avoid conflict between Editor vs GridView
DataCompareText: used by Editor ;
DataCompareAnywhere: used by GridView )

| Here are the changes I implemented to have the incremental search
| feature fully support searching inside words:
| - in cxDataUtils.pas, I added a new global text comparison function:
| function PosSubstring(const Str, SubStr: string): integer;
| begin
| Result := -1;
| try
| Result := Pos(AnsiUpperCase(SubStr), AnsiUpperCase(Str)) - 1;
| except
| end;
| end;

function DataCompareAnywhere(const S1, S2: string; APartialCompare:
Boolean): Boolean;
var
AText1, AText2: string;
L2: Integer;
begin
AText1 := AnsiUpperCase(S1);
AText2 := AnsiUpperCase(S2);
L2 := Length(AText2);
if L2 = 0 then
Result := Length(AText1) = 0
else
if not APartialCompare then
Result := AText1 = AText2
else if not isDataCompareAnywhere then
Result := (Length(AText1) >= L2) and (Copy(AText1, 1, L2) = AText2)
else
Result := ( Pos(AText2, AText1) > 0 ); // new
end;


2. cxCustomData ( modified )
- replaced DataCompareText with DataCompareAnywhere

| - then in cxCustomData.pas, function TcxDataControllerSearch.DoSearch, I
| made the following change:
| commented out this line: if DataCompareText(S, ASubText, True) then
| added this line instead: if PosSubstring(S, ASubText) <> -1 then


3 cxDBData ( added : Support GridMode )
TcxDBDataProvider.DoLocate
- replaced DataCompareText with DataCompareAnywhere
- added DataController.Change([dccSearch]) after
DataController.Change([dccLayout])
( invalidate layout & search )


4. cxGridCustomTableView

| - then in cxGridCustomTableView.pas, procedure
| TcxGridTableDataCellViewInfo.InitTextSelection, I made the following change:
| commented out this line: SelStart := 0;
| added this line instead: SelStart := PosSubstring(GetText,
Controller.IncSearchingText);
|
| Hope this is what you were looking for
|
| --
| Бrpбd
|
Saras Setiawan

[/more]
Автор: Glukodel
Дата сообщения: 22.01.2007 12:53
Alex47
если я правильно понял, то это упрощенный вариант того, что уже умеет делать QGrid встроенными средствами, повторюсь - достаточно посмотреть демо к QGrid FilterByCodeDemo... а правка исходников в данном случае от лени лучше доки дочитать и понять их классовую структуру...
Автор: ArtemiyUO
Дата сообщения: 23.01.2007 06:28
Alex47
Спасибо за код. А где ты его нашел?
Автор: Alex47
Дата сообщения: 23.01.2007 08:02
Glukodel


Цитата:
если я правильно понял, то это упрощенный вариант того, что уже умеет делать QGrid встроенными средствами, повторюсь - достаточно посмотреть демо к QGrid FilterByCodeDemo...


Речь идёт о Incremental Search по GRID, а не о Incremental Filtering.
Если есть вариант реализации Incremental Search с помощью фильтрации, тогда поясни подробнее.

Добавлено:
ArtemiyUO

В новостных группах devexpress.public.vcl.quantumgrid4,5 - даты там есть.
Автор: Dennica
Дата сообщения: 25.01.2007 15:26
Glukodel
Сегодня только удалось поэксперементировать. Используя предложенный тобой способ легко сделал фильтрацию в комбо аж по нескольким столбцам однавременно. Немного доработал под себя. Одно не пойму, для чего вводился отдельно лежащий таймер? Я все запихнул в Properties.OnChange...
Автор: ArtemiyUO
Дата сообщения: 26.01.2007 06:37
Таймер вводится для того что бы не грузить сервер и клиент лишней работой (фильтрацией) без надобности. Человек например хочет набрать слово из 5 букв, а ты после каждой набраной буквы вызываеш фильтрацию, которая не нужна. Для этого заводится таймер, например с задержкой 500 мс и таймер запускается в OnChange а уже по событию таймера делается фильтраци.
ИМХО это хорошая фишка, я всегда её использую где есть подобное поведение (особенно в мастер-детайлах сложных)
Автор: Dennica
Дата сообщения: 26.01.2007 09:08
ArtemiyUO
Ясно, таймер для больших наборов данных. Хатя с мелкими (у меня в этом лукапкомбо сидит порядка 200), лучше имхо работать после каждого изменения значения. Таким образом, при наборе искомого слова видно, после какой буквы поиск ничего уже не находит. (Кстати, фильтрацию датасэта я выкинул. Помоему двойная работа проделывается. Хотя для больших наборов опять же согласен сильно разгрузит клиент.)
Автор: Alex1978
Дата сообщения: 26.01.2007 09:12
В cxTreeList можно как-то убрать для узлов плюс на открытие/закрытие узла?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Kylix


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.