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

» Использование DevExpress (часть 4)

Автор: linker_2009
Дата сообщения: 21.11.2010 08:18

Цитата:
У меня вообще версия 38..., что-то подобное видел на английском в поддержке, но из за своего плохого английского так и не понял что они советуют

В последнем посте советуют использовать таймер, т.е. выполнить действие, запустить таймер, по таймеру вернуть фокус как в примере http://www.devexpress.com/Support/Center/KB/p/A233.aspx. Сейчас попробую для спортивного интереса, но ИМХО это костыль.
Автор: Prot_XT
Дата сообщения: 21.11.2010 10:07
Во геморрой... Будет этот фокус туда сюда прыгать, ну хотя бы ясно одно, что стандартными методами проблему не решить. Я думал может где галочку в настройках поставить или еще чего, девки богаты на всяческие фишки, ну а я вроде не спец по ним.
Автор: linker_2009
Дата сообщения: 21.11.2010 11:06
Prot_XT
Сделал через таймер. Поставил в таймере интервал 50, нормально пользователь и не заметить. Одно но, выделяется весь текст.
Автор: Prot_XT
Дата сообщения: 21.11.2010 15:12
Ну попробую поэкспериментировать..., спасибо за проведенный опыт.
Автор: sobolenok
Дата сообщения: 21.11.2010 19:34
Привет всем! Поставили задачу перевести графики с TeeChart на DevExpress.
Бары перенеслись легко а вот с Line diagram возникла проблема -
1 график - это ти чарт, 2 - то что получилось в девэкспрессе.

данные одни и те же




то есть у меня есть несколько серий, у каждой серии ось х - дата время, естественно разные, получить значение в одну и ту же точку нереально. ти чарт умел как то масштабировать, а в девэксе не получается.

добавляю серии в девэкс так

вверху цикл по сериям, это уже внутри этого цикла -


Код:
YieldAbsolutecxGridChartVIew.ViewData.CategoryCount := 300; //// тут тоже вопрос - это число значений по оси х, но при дате времени нафига ему это?

if aYieldAbsoluteADOStoredProc.RecordCount>0 then
begin
aTempcxGridChartSeries := YieldAbsolutecxGridChartVIew.CreateSeries;
aTempcxGridChartSeries.Tag := aAccountsADOStoredProc.FieldByName('ЦветВДиаграмме').AsInteger;
aTempcxGridChartSeries.DisplayText := aAccountsADOStoredProc.FieldByName('ИмяСерии').AsString;
aTempcxGridChartSeries.OnCustomDrawValue := YieldRelativecxGridChartVIewSeriesCustomDrawValue;
YieldAbsolutecxGridChartVIew.BeginUpdate;

aYieldAbsoluteADOStoredProc.First;
I := 0;
while not aYieldAbsoluteADOStoredProc.Eof do
begin
YieldAbsolutecxGridChartVIew.ViewData.Categories[I] := aYieldAbsoluteADOStoredProc.FieldByName('ДатаВремя').Value;
YieldAbsolutecxGridChartVIew.ViewData.Values[aTempcxGridChartSeries.Index, I] := aYieldAbsoluteADOStoredProc.FieldByName('Значение').Value;
I := I+1;
aYieldAbsoluteADOStoredProc.Next;
end;

YieldAbsolutecxGridChartVIew.EndUpdate;

end;
Автор: TechnoDreamer
Дата сообщения: 21.11.2010 19:50
В гриде у некоторых столбцов properties - комбобоксы. "Галочка" раскрывающая выпадающий список, видна только в режиме редактирования конкретной ячейки. Можно ли заставить cxGrid отображать "галочки всех комбобоксов на текущей строке?
Автор: Prot_XT
Дата сообщения: 22.11.2010 02:54

Цитата:
В гриде у некоторых столбцов properties - комбобоксы. "Галочка" раскрывающая выпадающий список, видна только в режиме редактирования конкретной ячейки. Можно ли заставить cxGrid отображать "галочки всех комбобоксов на текущей строке?


cxGridDBTableView.OptionsView.ShowEditButtons:=gsebForFocusedRecord;
Автор: fortezza
Дата сообщения: 22.11.2010 10:12

Цитата:
fortezza
лишний один цикл, сразу проверяйте на TcxGridDBTableView ( ...if (Form.Components[dsInd] is TcxGridDBTableView) then ...).
И такой вопрос, я так понимаю эта процедура будет вызыватся на кнопку "удалить", а фокус на виве останется?

linker_2009, на форме может быть несколько вкладок с cxGrid (можно конечно и несколько левлов сделать, но пока использую PageControl), поэтому я ещё проверяю CanFocusEx. Но если я не буду проверять, не окажется ли так, что в фокусе будут несколько View?
Да, "процедура будет вызыватся на кнопку "удалить", а фокус на виве останется".
Автор: Sufferer
Дата сообщения: 22.11.2010 10:13
Проясните ситуацию с cxGrid и 2 левелами.
Есть таблица Dictionary с полями id,Context,DicName, где id - ключевое
Делаю запрос к этой таблице:
select DicName from Dictionary group by DicName
Получаю набор данных для 1 уровня грида. Тут все Ок.
Далее делаю второй запрос:
select * from Dictionary order by Context
Получаю второй набор данных для 2 уровня грида. А вот тут начинается непонятка. Выставляю в свойствах вьюшки MasterKeyFieldNames = DicName и DetailKeyFieldNames = id и получаю непойми что на втором уровне.
В чем дело? Напрашивается вроде вывод - проблема с ключевым полем, но с каким?
Автор: linker_2009
Дата сообщения: 22.11.2010 10:24
fortezza
Цитата:
поэтому я ещё проверяю CanFocusEx. Но если я не буду проверять, не окажется ли так, что в фокусе будут несколько View?
Нет, такого не наблюдал.
А так идея "универсального удаления" хороша, возьму на заметку).
И такой вопросик, вы пайджконтрол используете - пользователь сам меняет вкладку или вы скрываете табы и меняете сами?




Добавлено:
Sufferer
С одной таблицей вам бы лучше группировку использовать по полю DicName.

Добавлено:
А конкретно по вашему вопросу DetailKeyFieldNames = DicName
Автор: Sufferer
Дата сообщения: 22.11.2010 10:51
Так по сути это и должно происходить, только вот что за набор данных я получаю - непонятно.
Автор: linker_2009
Дата сообщения: 22.11.2010 11:02
Сори, переработал, чушь написал) Сори за офтоп
Автор: fortezza
Дата сообщения: 22.11.2010 11:11

Цитата:
Нет, такого не наблюдал.
А так идея "универсального удаления" хороша, возьму на заметку).
И такой вопросик, вы пайджконтрол используете - пользователь сам меняет вкладку или вы скрываете табы и меняете сами?
пользователь сам меняет. а ещё есть универсальное добавление/изминение/дублирование.


For All
Использую для фильтрации FilterRow, для столбцов у которых Properties - LookupComboBox, когда набираю текст высвечивается список для выбора (отфильтрованный соответственно), можно сделать так чтобы фильтровался не список а сразу записи?
Спасибо
Автор: SIgor33
Дата сообщения: 22.11.2010 11:19
Вопрос таков:
использую dxBarManager создал dxBar на нем создаю два элемента редактирования cxBarEditItem которые предсталяет собой два CheckBox. После чего запускаю рантайме
делаю выбор на одном чеке перехожу на второй там тоже устанавливаю в положение чек при этом на первом чек сбрасывается в положение uncheck хотя мне надо чтобы оба были в положение чек. Скажите в чем дело?
Автор: linker_2009
Дата сообщения: 22.11.2010 11:42
SIgor33
<YoucxBarEditItem>.properties.immediatepost:=true;
Автор: SIgor33
Дата сообщения: 22.11.2010 11:55
linker_2009
благодарю. А то полдня промучился.
Автор: Sufferer
Дата сообщения: 22.11.2010 11:56
Попробуйте выставить для каждого элемента свойство ImmediatePost в True
Автор: aleksandrus
Дата сообщения: 22.11.2010 15:58
Доброго времени суток.
Есть проект на BCB 6, раньше использовался cxGrid от DevExpress 5 + TADOQuery.
Обновил DevExpress до 6.46, и начались очень странные тормоза.


Код: TcxGridDBTableView *view
TADOQuery *aq1, *aq2
TDataSource *ds1, *ds2

ds1->DataSet = aq1;
view->DataController->DataSource = ds1;
aq1->SQL->Text = "SELECT * FROM TEST";
aq1->SQL->Open();
Автор: linker_2009
Дата сообщения: 22.11.2010 16:34
aleksandrus
Попробуйте не отсоединяя вив от датасета, ввести в режим обновления

Код:
view->DataController->BeginUpdate;// Или BeginFullUpdate;
aq1->Close();
aq1->SQL->Text = "SELECT * FROM TEST2";
aq1->SQL->Open();
view->DataController->EndUpdate; // или EndFullUpdate;
Автор: vladman
Дата сообщения: 22.11.2010 17:08
Sufferer

Цитата:
Проясните ситуацию с cxGrid и 2 левелами....
В чем дело? Напрашивается вроде вывод - проблема с ключевым полем, но с каким?

Попробуйте так: MasterKeyFieldNames = DicName и DetailKeyFieldNames = DicName.
Автор: Sufferer
Дата сообщения: 23.11.2010 07:34

Цитата:
Попробуйте так: MasterKeyFieldNames = DicName и DetailKeyFieldNames = DicName.

Пробовал и так и уже по всякому. И индексов понаделал - пофик. Ситуация вообще загадочная, если сделать сортировку в источнике, то имеем один набор данных при тех-же настройках грида, а если без сортировки, то другой. При этом оба набора не содержат и половины всех данных. Чертовщина какая-то.
Автор: Cryogen2003
Дата сообщения: 23.11.2010 08:15
Sufferer
У меня когда-то было что-то похожее, решилось когда поле преобразовывал для вывода в строку на базе (ну указал что-то типа select to_char(id) id, name from mytable)
И советую устанавливать только DetailKeyFieldNames и MasterKeyFieldNames во вью второй уровня.
Автор: SIgor33
Дата сообщения: 23.11.2010 09:07
Можно ли при использовании cxPropertiesStore на разных формах(FORM1, FORM2 ...) проекта чтобы данные сохранялись в один инишник. Пробовал указывать одно имя файла не сохраняются настройки для модальной формы а сохраняются только для главной. Если разные имена файлов инишника то все гуд.
Автор: X11
Дата сообщения: 23.11.2010 09:13
Если ini файл слишком большой будет, то сохранение может быть медленным, даже не современных компьютерах.
Автор: aleksandrus
Дата сообщения: 23.11.2010 09:27
linker_2009

Цитата:
Попробуйте не отсоединяя вив от датасета, ввести в режим обновления

Во, спасибо - помогло! Причём именно BeginFullUpdate, а не BeginUpdate.
И обернуть ими получилось только вызов Close(), если весь блок - ошибки сыпятся.

Единственное, что я так и не понял - что и почему делает грид, если закрывается датасет при DataContoller->DataSource == NULL? Получается, связь датасета с гридом ещё где-то сохраняется..
Автор: tanaseduard
Дата сообщения: 23.11.2010 09:29
SIgor33
Сохраняйте лучше в XML необходимые параметры, так как иногда на форме слишком много компонентов, параметры которых не нужно хранить.
Для грида есть методы.
Если же хотите привязать настройки к пользователю а не к компьютеру то храните по ID в BLOB СУБД.
У нас так реализовано, работает быстро.
Пользователей около 5 тис., СУБД Oracle&DB/2.
Автор: linker_2009
Дата сообщения: 23.11.2010 09:47
aleksandrus

Цитата:
Получается, связь датасета с гридом ещё где-то сохраняется..

или попросту освобаждает память, но все равно как-то долго...
SIgor33
Не, там параметры друг друга затирают. Если уж cxPropertiesStore использовать, то пиши все в реестор, и структура будет и удобно просматривать, импортировать/экспортировать. Хотя че мы тут тебе навязывем, выбирай решение которое удобно тебе)
Автор: SIgor33
Дата сообщения: 23.11.2010 09:53
X11
tanaseduard
linker_2009
Спасибо за советы. А как лучше реализовать подумаю
Автор: vcrank
Дата сообщения: 23.11.2010 12:25

Цитата:
Можно ли при использовании cxPropertiesStore

Можно. Переводишь свойство Active := False;
cxPropertiesStore.StoreTo(False);
Я таким образом сохраняю. Правда компонентов не так уж и много.

Помогите снова разобраться с cxGrid. Ранее я уже спрашивл про связь Master-Detail. Сейчас проблема следующая:
На главной форме лежит грид, связанный с UniTable. Вызывается дочерняя форма, в которой происходит добавление данных в базу посредством SQL-запросов. Переключаемся снова на главную форму и вновь добавленных данных нет (точнее они просто не отображаются в сетке). Раньше я либо в панели навигации нажимал кнопку Refresh, либо программным способом обновлял данные dsMain.DataSet.Refresh , но сейчас помогает только закрытие/открытие таблицы.
Подскажите, может можно как-то в сетке вызвать обновление данных?
Автор: tanaseduard
Дата сообщения: 23.11.2010 12:44
vcrank
Первая форма и вторая живут в одной транзакции? Если в разных то проверь или commit есть.
Для refresh стоят фильтры (FilterSQL, Filter,Filtered -> UniTable).
В сетке данные обновляються если ты их обновляешь с того же DataSet'a, если SQL запросами то надо вызывать Refresh.
Повторил твой пример все работает.
UniDAC 3.0
Delphi 2010
DataBase: Oracle,MySQL,Postgree,MSSQL,FireBird

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


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