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

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

Автор: gpi
Дата сообщения: 29.03.2006 11:40
Ky391
Можно в свойстве столбца установить Properties=LookupComboBox и связать id с другой таблицей. Это вариант, чтобы меньше переделывать готовый код (на больших выборках будет некоторое замедление), а при написании нового лучше воспользоваться советом ArtemiyUO
Автор: Ky391
Дата сообщения: 29.03.2006 11:54
на уровне запроса к базе не есть хорошо - зачем в датасете хранить дополнительную совмещённую таблицу
а в селекте в датасете можно все енти жоины использовать?
Автор: ArtemiyUO
Дата сообщения: 29.03.2006 12:07
Ky391
Никаких совмещенных таблиц, все что выбрал, то и храниш а выбрал ты только то что тебе нужно.

Цитата:
а в селекте в датасете можно все енти жоины использовать?

вот этого я вообще не понял.
Именно в датасете и пишеш ЗАПРОС акак селект со всеми необходимыми джойнами.
Запрос выполняется сервером и возвращает тебе в датасет только то что сказано выбрать.

Автор: golkanavt
Дата сообщения: 29.03.2006 12:55
Есть проблема следующего характера - у cxBandedTableView при MultiSelect = True выбираем первую строку из нужного диапазона, жмем shift, указываем последнюю строку диапазона - получили несколько выбранных строк. Теперь нужно по правому клику на диапазоне сделать определенное действие, НО! - при клике правой кнопкой выделенной становится только ОДНА! строка, над которой в этот момент находится курсор. Сталкивался кто с таким поведением?
Автор: ArtemiyUO
Дата сообщения: 29.03.2006 13:01
специально проверил, у меня предпоследний девэкспресс, 5 грид, все работает без проблем - селект не изменяется после поап клика, глянь может свой-сва какие накрутил.
Автор: Ky391
Дата сообщения: 30.03.2006 09:27
мне нужно из базы выбирать все таблицы никак их не модифицируя
так если я их все уже запихнул в датасет то зачем мне ещё и выборку качать из базы если у меня уже всё в памяти есть
как эту выборку сделать имея эти таблицы в датасете?

Добавлено:
хотя в принципе можно и выборку но придётся стока кода перелапатить
и как тогда базу апдейтить если в таблицу надо будет помещать всё равно id

и насчёт lookup repository как то у меня не получилось?
в lookupedit выставлял valuemember и displaymember - назначил его на столбец и в нём fieldname - сделал по интуиции но по ходу надо не так; а как?
Автор: golkanavt
Дата сообщения: 30.03.2006 11:19
Ky391

Цитата:
так если я их все уже запихнул в датасет то зачем мне ещё и выборку качать из базы если у меня уже всё в памяти есть
как эту выборку сделать имея эти таблицы в датасете?

что значит "запихнул в датасет"? каким образом?

Добавлено:
меня грызут подозрения, что у вас просто таки огромный пробел в знаниях по организации работы с БД из win-приложения

Добавлено:
ArtemiyUO
все понял, в чем были грабли - раньше у девкоского грида не было свойства PopupMenu и попап приходилось прикручивать ручками в коде, это и стало причиной такого неадекватного поведения после перехода на более поздние версии
Автор: Ky391
Дата сообщения: 30.03.2006 11:39

Цитата:
что значит "запихнул в датасет"? каким образом?

есть типизированный датасет, есть база в сети - коннектюсь, заполняю датасет информацией из базы
у меня уже завёрнуто всё на имеющуюся структуру датасета (такая же как у базы)
поэтому никакие запросы с объеденением не подходят - зачем лишний раз дёргать сервер если уже всё что надо забрал?
т.е. надо осуществить объеденеие локально - в принципе подозреваю как но больно по чёрному получается - вот и спрашиваю может есть какие наработки или автомат в этом плане?
Автор: gpi
Дата сообщения: 30.03.2006 12:01
Ky391

Цитата:
и насчёт lookup repository как то у меня не получилось?
в lookupedit выставлял valuemember и displaymember - назначил его на столбец и в нём fieldname - сделал по интуиции но по ходу надо не так; а как?

У столбца View, который отображает ID датасета выставляешь Properties=LookupComboBox
Properties.ListSource=датасет (Dataset2), с которым нужно связать данные из текущего датасета (Dataset1)
Properties.KeyFieldNames=ключевое поле из Dataset2
Properties.ListFieldNamed=поле из Dataset2, которое будет выводиться вместо ID

Автор: golkanavt
Дата сообщения: 30.03.2006 12:36

Цитата:
есть типизированный датасет, есть база в сети - коннектюсь, заполняю датасет информацией из базы
у меня уже завёрнуто всё на имеющуюся структуру датасета (такая же как у базы)
поэтому никакие запросы с объеденением не подходят - зачем лишний раз дёргать сервер если уже всё что надо забрал?

базе пофиг (относительно сложности запроса конечно) что вы от нее требуете, "чистую" таблицу или же джойн нескольких таблиц - в любом случае вы получаете тот объем данных который запланировали, никаких "лишних дерганий" не будет. Если по сути задачи вам необходимо редактировать поля таблицы с возможностью выборки значений из справочных таблиц - тогда да, просто выбираете данные из таблицы и на уровне приложения/грида делаете лукап-поля с выборкой данных из соответствующих справочников. Подозревать никого не надо, надо просто сделать: Columns->Properties->LookupComboBox: ListSource - набор справочных данных, KeyFieldNames - ключевые поля таблицы-справочника, ListColumns, ListFieldNames - отвечает за поля выбираемые из справочника и отображаемые в итоговом гриде

Добавлено:
gpi
извиняюсь, не увидел ваш пост, продублировал ту же информацию
Автор: Dennica
Дата сообщения: 30.03.2006 12:40
Ky391

Цитата:
есть типизированный датасет, есть база в сети - коннектюсь, заполняю датасет информацией из базы
у меня уже завёрнуто всё на имеющуюся структуру датасета (такая же как у базы)
поэтому никакие запросы с объеденением не подходят - зачем лишний раз дёргать сервер если уже всё что надо забрал?
т.е. надо осуществить объеденеие локально - в принципе подозреваю как но больно по чёрному получается - вот и спрашиваю может есть какие наработки или автомат в этом плане?

Что значит типизированный датасет? TTable чтоль? Даже если так, замена TTable на TQuery обойдется намного дешевле чем "локальное объединение", т.к. операция это не типавая и тебе придется просто напросто дописать требуемую функциональность для используемого тобой датасета. Ежли ты используеш TQuery то тоже не понятно, почему вместо select * from sometable нельзя использовать select a.*, b.trebaname from sometable a inner join lookuptable и on (a.trbaid = b.id) ? Что от этого измениться? какие лишние данные выбируться с сервера? Измениться лиш только то, что у тебя в таблице помимо основных полей будет поле с удобочитаемым полем из связанной таблицы.
Если ты имееш ввиду что уже открыл связанную таблицу в другом датасете и хочеш использовать именно ее, то тут нужно использовать lookupcombobox со всеми вытекающими тормозами на объемных выборках, имхо намного дешевле лишнее поле тягонуть с сервера.
Объясни подробней, что ты имееш ввиду под стандартным датасетом. Как происходит выборка с сервера. Как происходит редактирование датасета. Объясни почему так получилось что дабавление одного поля в твою выборку делает неработоспособной твою программу.
Автор: CyberSlon
Дата сообщения: 30.03.2006 14:48
To vshersh:
Спасибо, SetThreadLocale($419) помог с меню и тулбарами. Русские символы в немецкой XP там проявились.

Но проблема осталась с заголовками колонок, бандов и прочих элементов cxGrid, кроме содержания ячеек в области данных. Для ячеек я использовал стили с указанием RUSSIAN_CHARSET в фонте. А вот заголовки таблиц оформлены без стилей, поскольку использован LookAndFeel.Kind=lfOffice11 у грида. При этом у грида же выставлен фонт с русской раскладкой. А заголовки вьюва отображаются в стиле офис 11, независимо от того, какой стиль им назначен. Не появились русские символы также в TdxStatusBar и в загловках панелей TdxDockPanel. С горя перебрал несколько вариантов привязки к разным True-Type шрифтам в приложении. Ничего не помогает. Русский есть только в меню и тулбарах.
Странно, что это наблюдается на ХР. Но она не английская с MUI, а немецкая, видимо с предустановленными немецкими растровыми фонтами. Но я то пользуюсь TTF - Microsoft Sans Serif, для которого в Charmap нормально видны русские символы, если выбрать раскадку Windows.Cyrillic.
Кто что думает по этому поводу?
Автор: vshersh
Дата сообщения: 30.03.2006 15:21
CyberSlon
Ну во первых, если корректно выставить локаль в ос, то русский будет везде нормально отображаться.
А если нужно чтобы работало при "нерусской" локали -- нужно проставлять чарсет. Ничего не могу сказать по поводу стиля офис11, т.к. пользуюсь более старой версией библиотеки. Но думаю что стоит копать в сторону замены чарсета на русский (возможно в рантайме).
Шрифты менять не стоит, т.к. это проблема именно кодировки, а не фонта (по-крайней мере это касается фонта Microsoft Sans Serif)
Автор: NeoKray
Дата сообщения: 31.03.2006 09:30
Кто нибудь может рассказать, почему на сайте Devexpressa нет ExpressInspector'a. Почему разработчики от него отказались?
Автор: MKalavera
Дата сообщения: 31.03.2006 09:45
NeoKray
Его заменил VerticalGrid
Автор: ArtemiyUO
Дата сообщения: 31.03.2006 09:45
Может бытьпотому что есть вертикал грид?
Автор: UKRANDRUSHKA
Дата сообщения: 31.03.2006 10:56
MKalavera да и в демках есть пример подключения к объекту уже на основе VerticalGrid
Автор: SuperBtr
Дата сообщения: 03.04.2006 10:50
Привет всем, вопрос такой есть по Гриду
Есть датасет, а в нем столбец целого типа, с форматированием #,##0 (TField.DisplayFormat=#,##0). У cxGrida есть хорошая функция автопоиск по столбцу, так вот при 5 значном и более значении автопоиск не работает, из-за разделителя который вставляеться при форматировании. Если свойство TField.DisplayFormat не указывать,т.е. чтобы все выводилось сплошняком, то все ок. Вопрос как это можно побороть?

P.S. TField.EditFormat=###0 не помогоает
Автор: EAV
Дата сообщения: 03.04.2006 12:25
Кто-нибудь может подсказать чем заменили разработчики "ExpressDBTree Suite" компоненты в нем еще dx-овые старые и совершенно не юзабельные

понятно что можно использовать cxPopupEditBox - но слишком геморно

Добавлено:

Цитата:
Но проблема осталась с заголовками колонок, бандов и прочих элементов cxGrid, кроме содержания ячеек в области данных. Для ячеек я использовал стили с указанием RUSSIAN_CHARSET в фонте. А вот заголовки таблиц оформлены без стилей, поскольку использован LookAndFeel.Kind=lfOffice11 у грида. При этом у грида же выставлен фонт с русской раскладкой. А заголовки вьюва отображаются в стиле офис 11, независимо от того, какой стиль им назначен. Не появились русские символы также в TdxStatusBar и в загловках панелей TdxDockPanel. С горя перебрал несколько вариантов привязки к разным True-Type шрифтам в приложении. Ничего не помогает. Русский есть только в меню и тулбарах.
Странно, что это наблюдается на ХР. Но она не английская с MUI, а немецкая, видимо с предустановленными немецкими растровыми фонтами. Но я то пользуюсь TTF - Microsoft Sans Serif, для которого в Charmap нормально видны русские символы, если выбрать раскадку Windows.Cyrillic.
Кто что думает по этому поводу?


через цитрикс такая же ерунда на 5.13
Автор: xokc
Дата сообщения: 03.04.2006 18:32
SuperBtr
TField.EditFormat убери и добавь:

procedure TForm8.GroupColGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if Length(AText) > 0 then
AText := FormatFloat('#,##0', StrToFloatDef(AText, 0));
end;

Правда немного коряво получается, но в принципе работет
Автор: SuperBtr
Дата сообщения: 03.04.2006 19:01
xokc Неработает, может я чего-то непонимаю, но StrToFloatDef(AText, 0) возвращает всегда 0 в (данном случае) Какой в этом смысл? вообще это поле меняеться на тоже самое еслиб отрабатывал: StrToFloatDef(AText, 0)?


Добавлено:
xokc Там наверно была неточность

Цитата:
SuperBtr
TField.EditFormat убери и добавь:


тамто я убрал, надо было еще убрать и DisplayFormt - тогда заработало
но конечно есть проблема с отрисрвкой показывается выделеным на один меньше
ну и на том спасибо

Автор: Vitus_Bering
Дата сообщения: 04.04.2006 10:28
Можно ли фильтр, установленный в cxGrid1DBTableView синхронизировать с фильтром таблицы источника данных cxGrid1DBTableView?
Автор: DGM007
Дата сообщения: 04.04.2006 11:37
Привет всем. Подскажите плз. как корректно русифицировать Scheduler.
Проблема возникает в списках будильника и повторяющихся событий - при попытке выставить значение ХХХ часов (дней и т.д.) значение автоматически изменяется на ХХХ минут
Автор: ArtemiyUO
Дата сообщения: 04.04.2006 11:59
Для начала советую взять правельный дистрибутив девок.
http://forum.ru-board.com/topic.cgi?forum=35&topic=29558&start=1100
Автор: DGM007
Дата сообщения: 04.04.2006 12:14

Цитата:
Для начала советую взять правельный дистрибутив девок.

Сейчас используется v.2.3
Автор: Alex47
Дата сообщения: 04.04.2006 12:47
В QuantumGrid5 есть неприятный глюк. Если для inplace редакторов колонок popup window открывается в первый раз, то оно (popup window ) появляется без обрамляющей рамки. Для лечения можно в обработчик колонки OnInitPopup добавить код:
TcxCustomEdit(Sender).ViewInfo.PopupBorderStyle := epbsSingle;
Автор: golkanavt
Дата сообщения: 04.04.2006 13:18
Vitus_Bering

Specifies whether the current filter is automatically set to the grid's dataset whenever it is changed.
property AutoDataSetFilter: Boolean;

DataController->Filter->AutoDataSetFilter

Автор: Vitus_Bering
Дата сообщения: 04.04.2006 13:41
golkanavt
Большой thanks.

Добавлено:
А как программно получить строку с параметрами фильтра, установленного на cxGrid1DBTableView.
Автор: vshersh
Дата сообщения: 04.04.2006 14:04
вьюха.DataController.Filter.FilterText и т.д.
Автор: Vic
Дата сообщения: 05.04.2006 12:07
Подскажите, запрос к базе возвращает переменное количество столбцов, надо их правильно отобразить, причем в онлайне, т.е. надо как-то манипулировать этими столбцами, например запретить редактирвать, убрать фильтры, как это сделать на примере cxGrid-а?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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