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

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

Автор: X11
Дата сообщения: 17.08.2008 23:18
Тогда дальнейшее обсуждение - уже не в тему.
Автор: korobovmax
Дата сообщения: 17.08.2008 23:18
myst3000
Могу сказать про Oracle - в нем данные на основе запросов типа select * не позволяют вносить изменения.
Для этого требуется добавить внутренний идентификатор rowid (выглядит так - select t.rowid, t.* from table_name t).
Возможно, что у DISQLite3 тоже есть подобные ограничения.

X11, именно не обязательно, но желательно. А то, грид не всегда правильно понимает какой столбец - идентифицирующий.
Автор: myst3000
Дата сообщения: 17.08.2008 23:27
korobovmax
Спасибо за совет - не помогает Не знаю, что и делать
Автор: X11
Дата сообщения: 17.08.2008 23:39
1. Лезть на форум по SQLite.
2. Лезть на форум по БД.
3. Курить маны.
4. Поискать и посмотреть примеры.
5. Сделать простой тестовый пример и с ним поиграться.
Автор: myst3000
Дата сообщения: 17.08.2008 23:41
X11
1. Как раз пишу им
2, 3, 4. Уже укурился окончательно - ночь воскресенья, а я как будто только что проснулся утром в субботу
5. сомо собой

Спасибо!

Может кто сталкивался еще с проблемой редактирования записей в DSQLite3?


Автор: X11
Дата сообщения: 17.08.2008 23:43
Как правило, забываешь какую-то мелочь...
Ладно хватит оффтопить, а нас накажут модераторы.
Автор: f3ka
Дата сообщения: 18.08.2008 09:45
myst3000 может быть проблема что у датасета не стоит cached updates или стоит какой нить unidirectional. И еще как вариант не стоит привязка UpdateObject к Query.
Автор: sergiuz1303
Дата сообщения: 18.08.2008 10:23
Извиняюсь за возможный флуд но подскажите как решить проблему использую ФаерБирд-Фибы-ДевЕкспресс КвантумГрид

Var s:string;
begin
s:=tbl.FinditembyID(0).editValue;
....
end;
Мне возвращает все время пустое значение.
Автор: afiget
Дата сообщения: 18.08.2008 11:31
sergiuz1303
Где этот код расположен?
Автор: Dennica
Дата сообщения: 18.08.2008 12:42
sergiuz1303
Видимо у вас нет фокуса ни на одной из строк вьюшки...
Автор: sergiuz1303
Дата сообщения: 18.08.2008 14:23
afiget
код расположен гдехочь в моем случаи это было на обработке нажатаии кнопки.

Dennica
если бы я этого не знал я бы не задавал навенрное тут это вопрос. Я сначала выделяю строку в гриде а потом обработую ее.

А также нашел другой путь через Фибы
qr.FieldByFieldNo(1).AsString;

Автор: Chukotka
Дата сообщения: 18.08.2008 14:31
Столкнулся с проблемой - приложение, использующее DevX (Grid, Bars, Editors) - временами при попытке перетащить окно мышкой (неважно, модальное окно или главная форма) приложение просто зависает, жрет около 40% CPU. Это продолжается секунд 30, потом все оживает. Но при попытке перетащить или просто кликнуть на заголовке окна - та же байда.
D2007, DevX версии за 23.05.08 (местный инсталл), скины отключены
Никто не сталкивался с подобным?
Автор: afiget
Дата сообщения: 18.08.2008 14:55

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

А, так бы сразу и сказал. Ну тогда, ошибка в 17 строке.

ЗЫ
PostEditValue делал?
Автор: Dennica
Дата сообщения: 19.08.2008 06:16
sergiuz1303

Цитата:
если бы я этого не знал я бы не задавал навенрное тут это вопрос. Я сначала выделяю строку в гриде а потом обработую ее.

Воот, теперь вы поняли, что вопросы нужно задавать корректно. По той информации, что вы дали я указал на самую вероятную проблему. В следующий раз не надейтесь ни на чьи телепатические способности, а сразу описывайте, чего вы там знали, а чего нет, и что делали. То что вы написали какие компоненты использовали для доступа к данным вообще значение не имело, т.к. результат вы пытались получить, используя девовский вью. А учитывая то, что при выполнении двух условий код работоспособный оставалось понят, что именно у вас не было выполнено. Первое я сказал, ну а про второе осмелюсь предположить вы и сами все знаете.
Автор: neznayka3
Дата сообщения: 20.08.2008 07:09

Цитата:

хочу в датасет, который подключается к cxDBLookupComboBox.Properties.ListSource подгружать данные не все сразу, а только те которые нужны пользователю, те формирую запрос после ввода с клавиатуры.
......
поставил DropDownListStyle=lsEditList заработало, но криво. при вводе не всегда открывается DropDownBox или открывается, но отображается 1 запись с полосой прокрутки, хотя DropDownRows=8. к тому же мне нужен lsEditFixedList, а не lsEditList.
вернее так:
1. если запрос возвращает одну запись то в LookupComboBox она отображается, но DropDownBox развернут весь(DropDownRows=8) те вместо остальных 7-ми записей - пустое пространство. с этим еще жить можно.
2. если запрос возвращает несколько записей то DropDownBox развернут не на 8 записей, а на одну. причем не всегда, закономерность так и не понял. вот это очень плохо.

помогите.
Автор: Dennica
Дата сообщения: 20.08.2008 19:41
neznayka3
свойство DropDownAutoSize = True? Если да, то попробуйте поставить в false и в ручную подобрать высоту и ширину используя проперти DropDownHeight и DropDownWidth.
Автор: afiget
Дата сообщения: 21.08.2008 00:02
С

Цитата:
DropDownAutoSize = True

проблем никогда не замечал. Если поставить, должно работать. По-умолчанию, кстати, false.
Автор: neznayka3
Дата сообщения: 21.08.2008 06:40
Dennica
afiget

Цитата:
DropDownAutoSize = True

работает, спасибо.
Автор: Dennica
Дата сообщения: 21.08.2008 09:37
afiget

Цитата:
С

Цитата:DropDownAutoSize = True

проблем никогда не замечал. Если поставить, должно работать. По-умолчанию, кстати, false.

При обычном использовании согласен, проблем не возникает. Криво начинает отрабатывать когда навешиваешь функции использующие фильтрацию через датаконтроллер у пропертисов. Так, у меня есть пара функций позволяющих организовать инкриментную фильтрацию лукапкомбо по мере ввода по подстроке и по неск. колонкам. Вот когда я их навешиваю приходится отключать автосайз.
Автор: brookson
Дата сообщения: 21.08.2008 13:38
Доброго времени суток.
Нашёл такую странность. Динамически выводятся различные данные в cxGrid несколькими процедурами.
Грид находится на панели.
При попытке печати Panel с помощью dxComponentPrinter иногда грид не обновляется, то есть печатаются данные прошлой процедуры.
То есть в гриде новые данные, а dxComponentPrinter.Preview - старые.
Кроме того, если в гриде поменять ширину колонок или раскрыть-закрыть группы, в превью остаётся старый вид.

Что я забыл сделать? Печатаю обычно, dxComponentPrinter1.Preview(true, PanelLink);

Автор: AlexeiKozlov
Дата сообщения: 22.08.2008 12:39
народ,а что за косяк .
у меня 8.2
студия 2008.
язык vb

добавляю компонент от dev ,например barmanager.
удаляю его.
но в коде дизайнера,код не удален!там все осталось.
и так со всеми компонентами. как исправить этот глюк?
Автор: Dennica
Дата сообщения: 22.08.2008 14:01
brookson
Может код, выводящий панель на печать, стоить внутри блока блокировки обновления вьюшки или датасэта? Типо..
cxGrid1TableView1.BeginUpdate;
... закачка новых данных ...
dxComponentPrinter1.Preview(true, PanelLink);
cxGrid1TableView1.EndUpdate;
А так, вроде никогда такого глюка не замечал.

Автор: brookson
Дата сообщения: 22.08.2008 23:17
Dennica

Цитата:
Может код, выводящий панель на печать, стоить внутри блока блокировки обновления вьюшки или датасэта?

Да нет, всё честно.

Код:
procedure TF_REPORTS.BtnPrintPanelClick(Sender: TObject);
begin
dxComponentPrinter1.Preview(true, PanelLink);
end;
Автор: korobovmax
Дата сообщения: 26.08.2008 12:39
Странная производительность у ТриЛистовых эдиторов

В ТриЛисте есть 3 столбца, данных для которых - процента (0-100)
Если специально назначать редактор ПрогрессБарЭдит из ЭдитРепозитори или создавать свой ПрогрессБарЭдит, то уже при отрисовки 100 записей начинаются лаги.
Пример: при указанных 100 записях время загрузки записей изменяется с 1 секунды до 8!

Кто-нибудь сталкивался с такой проблемой?
Автор: Dennica
Дата сообщения: 26.08.2008 13:25
korobovmax
Список связан с датасэтом?
Если не отрисовывать прогресс скорость загрузки/перемещения по записям нормальная?

У меня тоже есть пару мест в прогах где используется этот контрол, прикрученный к датасэтам, и скорость его работы оставляет желать лучшего. Эксперементально вычислил что при выставлении OptionsData.SyncMode := False скорость становится приемлемой, но в некоторых случаях этот флажок мне снять нельзя =(. Как его можно ускорит ь еще я так и не нашол.
Автор: korobovmax
Дата сообщения: 26.08.2008 14:55
Связан, но хитро Есть самописное дерево (SQLTree), которое собирает ноды из таблиц в памяти в дерево и дает ноды DX-овскому дерево. Можно сказать, аналог dxMemData, который можно подсунуть Гриду.

Соответственно, используется не DB-шное дерево, а TcxTreeList, у которого SyncMode'а нет

Без него и с использование других контролов все нормально по скорости.
Автор: afiget
Дата сообщения: 26.08.2008 20:19
korobovmax
Я бы вместо ПрогрессБарЭдит использовал 100 картинок разной ширины в ImageComboBox либо делал отрисовку сам. В зависимости от способностей в программировании
Есть еще вариант со своим компонентом: одной картинкой шириной в 1 пиксель (ну или сколько там нужно для отображения 1 процента) и растягиваением этой картинки на нужное кол-во пикселей в зависимости от значения в процентах.
Автор: korobovmax
Дата сообщения: 27.08.2008 08:31
Можно так сделать.
Оба варианта привлекательны. Скорее всего, попробую второй, потому что, как я думаю, проще сделать Пики и Оверхеды (подсветка красным, в случае превышения заданной позиции) - такие штуки ПрогрессБара использую.

Еще немного помогает BeginUpdate/EndUpdate до и после раскрытия нода (у меня, считай - загрузки данных). 6.5 вместо 8
Автор: sergiuz1303
Дата сообщения: 27.08.2008 16:13
Доброе время суток!
Столкнулся с проблемой при обработке события OnCustomDrawCell в гриде пишу такой вот код

if AViewInfo.GridRecord.Values[0]=1 then
begin
ACanvas.Canvas.Brush.Color := clMoneyGreen;
ACanvas.Canvas.Font.Color := clRed;
end;

Все красиво работает когда открываеться таббличка первый раз.
Но если я меняю значения в первом столбце с 0 на 1 или наоборот (хотя фактически это не так важно) то начинаються глюки. То есть есть изменяю первую строчку то тоже ничего но если я начинаю изменять последующие к примеру там третью то после обработки события OnCustomDrawCell текст в третей строчке заменяеться на текст из первой строчки причем по всем столбцам.

Подскажите что нужно изменить.

П.С. Использую Firebird подключаюсь через Фибсы.
изменение через кнопку или через обработку события OnCellClick

Автор: korobovmax
Дата сообщения: 27.08.2008 19:02
sergiuz1303
Надо либо ImmediatelyPost установить,
либо в событии OnFocusedItemChange пинать грид, чтобы перерисовался.

Добавлено:
Также посмотрите демо CustomDrawTableViewDemo ->
форма CustomDrawTableViewDemoMainForm -> обработчик tvCarsCustomDrawCell.

Данные для условия берутся из GridRecord.DisplayTexts[Index].
Потом ACanvas.Canvas.FillRect(ARec);
Наконец, самое важное: ADone := True.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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