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

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

Автор: X11
Дата сообщения: 07.09.2008 22:56
Вот так заполняю. Всего 809 записей. А что ты ещё предлагаешь? Пользователю требуется дать возможно мультивыбора.

Код:
procedure TfmApartSearch.FeelInfosource();
Var
CheckComboboxItem: TcxCheckComboboxItem;
begin
with dm do
with fibdsInfoSource do begin
Open;
First;
FetchAll;
clbInfosource.Items.BeginUpdate;
clbExclusive.Items.BeginUpdate;
checkboxCHANGE.Properties.Items.BeginUpdate;

clbInfosource.Clear;
clbExclusive.Clear;
checkboxCHANGE.Properties.Items.Clear;

While not Eof do begin
clbInfosource.AddItem(FieldByName('NAME').AsString, Pointer(FieldByName('ID').AsInteger));
clbExclusive.AddItem( FieldByName('NAME').AsString, Pointer(FieldByName('ID').AsInteger));

CheckComboboxItem := checkboxCHANGE.Properties.Items.AddCheckItem(FieldByName('NAME').AsString);
CheckComboboxItem.Tag := FieldByName('ID').AsInteger;


Next;
end;
close;
clbInfosource.Items.EndUpdate;
clbExclusive.Items.EndUpdate;
checkboxCHANGE.Properties.Items.EndUpdate;
end;
end;
Автор: sldaac
Дата сообщения: 08.09.2008 00:41
использую cxGrid1TableView, динамически подгружаю данные (класический вариант, почти как в Демо и хелпе.) Как очистить данные, что-бы при след. открытие формы (не запуска приложения) создать новые данные, или упростив вопрос, как очстить данные и получить пустой грид

afiget


Цитата:
Кол-во записей?
Какие возможности грида включены?
Скины есть?
Есть ли свои (самописные) обработки: стили, рисование, фильтры?
Какие едиторы проставлены?

1. от десятка до пару сотен тысяч
2. все что ненужно поотключал
3. ничего нет, скины в версии х.38 отсутствуют
Автор: afiget
Дата сообщения: 08.09.2008 01:52
X11

Цитата:
А что ты ещё предлагаешь? Пользователю требуется дать возможно мультивыбора.

ListBox, конечно. Можно с чекбоксами внутри, если очень надо. Хотя список с множественным выбором самодостаточен.
Хотя тут все же нажно смотреть на пользователя, нормально ли он работает с Ctrl+Click. Чекбоксы удобнее при работе с клавиатуры или при плохом владении мышкой.

Цитата:
дело в том, что на форму больше нет возможности тулить ещё один TCheckListBox.

Настолько все плохо? Фигасе, какие широкие у тебя листбоксы!
Ну я бы все равно уходил от комбика. В зависимости от назначения и частоты использования ListBox можно применить разные методы.
Например, можно сделать окно для выбора значения, пошаговый мастер...

По поводу проблемы - надо подумать. Сходу ничего в голову не приходит.

sldaac

Цитата:
1. от десятка до пару сотен тысяч

И что, все эти десятки тысяч нужны на клиенте? Вообще-то тормоза при таком кол-ве записей вполне нормальны для cxGrid с выключеным GridMode.
Я не еще спрашивал что показывает DB Monitor. Есть ли дополнительные запросы на сервер.
Как установлен DataController.DataModeController.SmartRefresh?
Если true, то как делаешь удаление (методом какого компонента)?
При GridMode = True cxGrid ведет себя как обычный грид?


Цитата:
динамически подгружаю данные (класический вариант, почти как в Демо и хелпе.) Как очистить данные, что-бы при след. открытие формы (не запуска приложения) создать новые данные

Так может быть и форму динамически создавать.
Если уж очень хочется чистить грид, то достаточно закрыть-открыть датасет.
Автор: X11
Дата сообщения: 08.09.2008 02:07

Цитата:
ListBox, конечно. Можно с чекбоксами внутри, если очень надо.

так это у меня и есть почти листбокс с вложенными чекбоксами.


Цитата:
Настолько все плохо? Фигасе, какие широкие у тебя листбоксы!

их просто много, программа по недвижимости, полей там вагон и маленькая тележка, т.е. много справочников

программа работает уже давно, пользователей очень много и всех перечивать.... а там и люди пожилые есть, которые не очень давно комп увидели в глаза.
Ну на крайний случай уменьшу что-нить и поставлю ещё один TCheckListBox.

Добавлено:
Прикинь, в новом приложении, только что кинул на форму кнопку и TcxCheckComboBox, заполнил, пытаюсь отметки поставить, ставить только до 64-го элемента включительно, дальше нивкакую )))))))



Код: procedure TForm2.Button1Click(Sender: TObject);
Var
i:integer;
begin
for I := 0 to 1000 do
cxCheckComboBox1.Properties.Items.AddCheckItem(IntToStr(i), IntToStr(i));
end;
Автор: sldaac
Дата сообщения: 08.09.2008 08:50

Цитата:
Так может быть и форму динамически создавать.
Если уж очень хочется чистить грид, то достаточно закрыть-открыть датасет.


cxGrid1TableView1- DataSet-????
Автор: X11
Дата сообщения: 08.09.2008 11:45
Я опять про TcxCheckComboBox

CheckComboBox.EditText всегда возвращает пустое значение, даже если ты отметил хоть один чекбокс в списке

Добавлено:
О, нашёл в букваре
cxCheckComboBox.Properties.GetDisplayText(AnyIntegerValue)
Автор: afiget
Дата сообщения: 08.09.2008 13:46
X11

Цитата:
так это у меня и есть почти листбокс с вложенными чекбоксами.

Вот это "почти" и есть отличие в назначении контрола и удобстве его использования, имхо.

Нашел тоже кое-что интересное по поводу твоей проблемы:
http://www.devexpress.com/issue=DS12773
Вот такие вот пироги.

sldaac

Цитата:
cxGrid1TableView1- DataSet

Угу. Хотя быстрее к нему обращаться напрямую.
Автор: sldaac
Дата сообщения: 08.09.2008 14:40

Цитата:
Угу. Хотя быстрее к нему обращаться напрямую.


cxGrid1TableView1 не cxGrid1DBTableView1 , чегото я не наблюдал в cxGrid1TableView1 ДатаСет
Автор: X11
Дата сообщения: 08.09.2008 15:34
http://www.devexpress.com/Support/KnowledgeBase/ShowArticle.xml?kbid=A1454
жаль, что этой статиь уже нет в базе знаний
Автор: afiget
Дата сообщения: 08.09.2008 16:52

Цитата:
cxGrid1TableView1 не cxGrid1DBTableView1

Это я стормозил.
GridView.DataController.RecordCount:=0;
?

Добавлено:
sldaac
И еще. Когда-то читал на сайте Девок, что они рекомендуют вместо встроенного Датасета грида все же использовать dxMemData. Насколько я помню, речь шла о производиельности при большом кол-ве записей.
Автор: sldaac
Дата сообщения: 08.09.2008 22:48

Цитата:
И еще. Когда-то читал на сайте Девок, что они рекомендуют вместо встроенного Датасета грида все же использовать dxMemData. Насколько я помню, речь шла о производиельности при большом кол-ве записей.

Врут они, бессовестно врут, при кол-ве больше 20 тыс. (и меньше то-же, говорю сколько было на момент теста) записей в dxMemData те-же тормоза, перебробовал и Ehlib и kbmMemtab, результ то-же, при удаление хоть 1 записи тормоза в 2-3 сек на переход на след запись.
Автор: SANiONE
Дата сообщения: 10.09.2008 21:21
Помогите, плз!
У меня есть БД на faerbird, использую DevExpress-x36may2008.
В базе данных есть таблица содержащая список сотрудников и таблица со списком отделов к которым они принадлежат, также есть связующая таблица. Для отображения данных в программе использую csGrid. Данный компонент предоставляет возможность добавления подуровней в отображаемой таблице, что я и делаю при отображении отделов(т.е. отображается отдел и под ним список всех сотрудников, принадлежащих ему). Проблема заключается в том что сотрудники у которых индекс(ключ таблицы коем является автоинкрементное поле) 100 и более не отображаются на подуровне. SQL запрос проверял в IBExpert, там данные отобразились правильно, поэтому подразумеваю что выборка происходит правильно, а я чтото пропустил при работе с компонентом.
Может кто сталкивался с данным траблом или имеет хоть какиенибудь идеи решения данной проблемы поделитесь советом, плз.
Автор: sergiuz1303
Дата сообщения: 11.09.2008 10:28
SANiONE
Это навряд ли траблы грида, скорее всего не правильно созданы таблицы. Ты бы выложил структуру для наглядности, а то из твоего сообщения
"В базе данных есть таблица содержащая список сотрудников и таблица со списком отделов к которым они принадлежат, также есть связующая таблица"
я не понимаю зачем связающующия таблица не проще сделать так:
Tbl_sotrudnik: таблица сотрудников
id_sptrudnik : индекс таблицы сотрудников автоинкрементное поле
id_otdel: индекс таблицы отделов (связующее поле для таблицы отделов)
fio: ФИО
.....
Tbl_otdel: таблица отделов
id_otdel индекс таблицы отделов автоинкрементное поле
name: наименование таблицы
....
А потом в гриде делаешь простой мастер-детайл по этим двум таблицам. Главное что бы связующие поле табл1 совпадало названием с индексным полем табл2.
И тогда все коректно отображаеться.
Автор: Sufferer
Дата сообщения: 12.09.2008 10:45
Потерялся мой вопрос
Ладно, повторюсь снова:
1. Подскажите, как в SpreadSheet реализовать отметку и выделение колонок/столбцов аля эксел. Т.е. непонятно, как отследить нажатие мышой на столбец/строку.
Если киненте примером по моим вопросам буду просто счастлив.
2. Столкнулся с проблемой получения даты/времени из ячейки SpreadSheet.
Загружаю в SpreadSheet ексельный файлик в котором формат ячейки Custom ДД-ММ-ГГГГ чч:мм:сс, а SpreadSheet определяет формат ячеки как m/d/yy h:mm. При этом отображение идет в исходном формате, а вот взять из дату из ячейки получается только в формате m/d/yy h:mm, т.е. без секунд. Как мне получить дату с секундами?
Автор: SANiONE
Дата сообщения: 12.09.2008 13:51
sergiuz1303

Вкладую изображение на которых структура таблицы, на них я отметил поля которые являются ключами таблицы. Использую таблицу для связи так как планирую вести историю кто в каком отделе трудился. Может проблема и не в гриде, но как я говорил sql-запросы работают правильно, тогда где предположительно может быть проблема?



ЗЫ:спасибо за ответ
Автор: sergiuz1303
Дата сообщения: 12.09.2008 14:11
SANiONE
стучи в аську 456363847
Автор: AvGSoft
Дата сообщения: 17.09.2008 14:03
проблема при использовании скинов, сильно напрягает при движении по cxDBTree мерцание названия столбцов, а при отключении все нормально но вид не тот . Может где нужно какую опцию включить/выключить.
Причем в cxGrid прорисовывается один раз и потом не мерцает, а в дереве как только переходишь с записи на запись прорисовывается постоянно.
Автор: HighTower
Дата сообщения: 17.09.2008 14:33
ребята, подскажите, как получить в гриде ссылку на строку, которая находится под курсором при движении мыши?
надо для того, чтобы показывать хинт, содержание которого ассоциировано с каждой строкой в гриде...
Автор: f3ka
Дата сообщения: 17.09.2008 16:09
Товарищи, а кто нить может подсказать в такой проблеме - используются скины от последней версии (38) и есть dxBar, на нем dxBarButton. Так вот проблема с этой dxBarButton - если дизайне установить свойство Down в True, то кнопка отрисовывается нажатой, но как только запускаешь прогу, то кнопка отображается отжатой и больше не нажимается (в смысле не фиксируется нажатие). Где копать??? Устал уже изучать внутренний код Девок, но никаких успехов пока что. ПОМОГИТЕ ПЛЗ.
Автор: korobovmax
Дата сообщения: 17.09.2008 16:47
HighTower, вот пример:
http://www.devexpress.com/Support/Center/KB/p/A2666.aspx

Для конкретно вашей цели, надо перебирать в цикле DisplayTexts.


Автор: X11
Дата сообщения: 17.09.2008 16:54
HighTower, так есть же настройка CellHint
Автор: HighTower
Дата сообщения: 17.09.2008 17:37
korobovmax
респект!

Добавлено:
X11

Цитата:
так есть же настройка CellHint

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

ссылка от korobovmax - то что надо )
Автор: AvGSoft
Дата сообщения: 17.09.2008 19:37
f3ka
ButtonStyle = bsChecked - может поможет.
Автор: albreht
Дата сообщения: 18.09.2008 08:05
подскажите, как можно в dxDBGrid получить полное количество строк?
"Count" выдает число видемых на экране строк,а мне нужно получить количество всех строк.
Автор: X11
Дата сообщения: 18.09.2008 08:18

Цитата:
"Count" выдает число видемых на экране строк

Хоть бы код показал, как ты получаешь. Может тебе нужно набор данных отфетчить?
Автор: albreht
Дата сообщения: 18.09.2008 08:34
я циклам пробегаюсь по каждой строке
for i:=1 to dxDBgrid.Count-1 do
begin
row[i] := dxDBGrid.Items[i].Values[dxDBGrid.ColumnByFieldName('ID').Index];
end;
Автор: f3ka
Дата сообщения: 18.09.2008 09:48
AvGSoft к сожалению не внимательно прочитано сообщение

Цитата:
если дизайне установить свойство Down в True, то кнопка отрисовывается нажатой, но как только запускаешь прогу, то кнопка отображается отжатой и больше не нажимается (в смысле не фиксируется нажатие)

Это значит что кнопка и так bsChecked!
В дизайне при использовании скинов кнопка фиксирует нажатое положение, а в запущеном приложении со скинами нет (теряется такая возможность!).
Вообще это проблема именно при использовании скинов, тк без скинов кнопки нормально работают.
Автор: Semeon555777
Дата сообщения: 19.09.2008 00:21
как в cxGrid запретить - сворачивание/разворачивание дерева
Автор: korobovmax
Дата сообщения: 19.09.2008 08:28
Semeon555777,
<GridDBTableView>.DataController.Options, флажок dcoGroupsAlwaysExpanded.
При True кнопка + будет прятаться и группы всегда будут раскрыты.
Автор: albreht
Дата сообщения: 19.09.2008 11:53
подскажите, как можно в dxDBGrid получить полное количество строк?
"Count" выдает число видемых на экране строк,а мне нужно получить количество всех строк.
если я циклам хочу пробежать по всем строчкам
for i:=1 to dxDBgrid.Count-1 do
begin
row[i] := dxDBGrid.Items[i].Values[dxDBGrid.ColumnByFieldName('ID').Index];
end;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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