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

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

Автор: korobovmax
Дата сообщения: 21.08.2009 15:43
vladman, спасибо за ответ насчет справки. Так и думал!

Буду просить чтобы сделали вывод картинки в заголовке перед названием панели. Другими словами, чтобы панельки могли быть были похожи на док-панели/полноценные окна.
Автор: vladman
Дата сообщения: 21.08.2009 21:35
korobovmax

Цитата:
Другими словами, чтобы панельки могли быть были похожи на док-панели/полноценные окна

А что это может дать? Без четкой аргументации назначение вашего пожелания маловероятно, что его удовлетворят.
Автор: Vadim153
Дата сообщения: 22.08.2009 00:06
vladman

Цитата:
Значит проблем с ADOQuery, вернее рефрешем после добавления новой записи.
Ищите в этом направлении.

Рефреш здесь не причем. Необходимо обновить набор данных, GridDBTableView это сам не делает в данном случае.
Где можно найти полное описание методов cxGridDBTableView? В Хелпе от демо далеко не все, а на их сайте нет.
Автор: makz
Дата сообщения: 22.08.2009 07:08
Не подскажете как изменить состояние cxCheckBox не вызвав события?
Perform(BM_SETCHECK, 0, 0) не работает.
Автор: JohnSilver182
Дата сообщения: 22.08.2009 08:13
makz

для cxMemo я только так смог
memo1.InnerControl.perform(wm_vscroll, SB_PAGEDOWN, 0);
Автор: Vadim153
Дата сообщения: 22.08.2009 09:11
vladman
Как принудительно раскрыть узел в cxGridDBTableView?
Автор: FunCode
Дата сообщения: 22.08.2009 09:25
Vadim153

Цитата:
Как принудительно раскрыть узел в cxGridDBTableView?

cxGrid1DBTableView1.Controller.FocusedRecord.Expand
Автор: vladman
Дата сообщения: 22.08.2009 11:44
Vadim153

Цитата:
Рефреш здесь не причем. Необходимо обновить набор данных, GridDBTableView это сам не делает в данном случае.

Тогда не понятно почему он это делает в случае с
Цитата:
Если использовать ADOTable... то все работает.


Цитата:
Где можно найти полное описание методов cxGridDBTableView?

В документации. Последние версии по всем продуктам DevExpress можно найти по адресу:
_http://www.devexpress.com/Downloads/VCL/Help.xml
Автор: Vadim153
Дата сообщения: 22.08.2009 11:59
vladman
Это и разочаровывает.
В хелпе с сайта те же яйца, нет, например описаний, только заявлены разделы:

DataModeController
DataSource
DetailKeyFieldNames
Filter
KeyFieldNames
MasterKeyFieldNames

Проблема сейчас следующая с ADOQuery: при добавлении новой записи при помощи cxНавигатора, запись в БД добавляется, но не отображается, пока не сделаешь обновление набора данных.
C ADOTable все работает отлично. Необходимо только указать в нем IndexFieldNames, это ключевой момент.
Похоже, что в случае с ADOQuery надо знать как правильно сделать ORDER BY ...
Автор: vladman
Дата сообщения: 22.08.2009 12:27
makz

Цитата:
Не подскажете как изменить состояние cxCheckBox не вызвав события?

Отключить на время изменения состояние обработчик события OnChange, например:

Код: var
vonClickHandler: TNotifyEvent;
begin
vonClickHandler := <YourcxCheckBox>.Properties.OnChange;
try
<YourcxCheckBox>.Properties.OnChange := nil;
<YourcxCheckBox>.Checked := True;
finally
<YourcxCheckBox>.Properties.OnChange := vonClickHandler;
end;
end;
Автор: Vadim153
Дата сообщения: 22.08.2009 13:17
vladman
Thanks for help.
ORDER BY разумеется делаю по RegionCountryID, но это не решает проблему
Очень странно выглядит такая разница в работе Dev компонента с ADOTable и ADOQuery.
По своим внутренним механизмам ADOTable сам составляет запрос и получает набор данных. В ADOQuery пишем ручками.
Вообще-то, ADOQuery и ADOTable - это "фантики" от ADODataSet, к тому же обрезанные по возможностям. Строго говоря их использование сильно вредит мозгам программиста, скрывая действительные возможности и универсальность ADODataSet. Мастера от БД считают их крайне вредными и подлежащими безусловному удалению из палитры компонентов.
Хм, действительно, надо попробовать ADODataSet.

...

ADODataSet работает нормально, у него кстати есть IndexFieldNames, как и у ADOTable.
Автор: X11
Дата сообщения: 23.08.2009 01:38
D2007, Fib+ 6.9.6, Dev 43.
cxGrid привязан к TpFibDataSet. У TpFibDataSet все SQL заполнены, в том числе и UpdateSQL. Также и TpFibDataSet.AutoCommit := true;

Вот код

Код:
aRecordIndex := 3;
....

dbgMail.DataController.Edit;
dbgMail.DataController.Values[aRecordIndex, dbgMailLAST_DATE.Index] := now;

выводим сообщение, дата показана правильно
ShowMessage(dbgMail.DataController.Values[aRecordIndex, dbgMailLAST_DATE.Index]);

dbgMail.DataController.Post;
dbgMail.DataController.RefreshExternalData;
Автор: vladman
Дата сообщения: 23.08.2009 09:54
X11

Цитата:
Что может быть не так, когда записываешь через cxGrid?

ms-help://borland.bds5/ExpressDataController.BDS5/ExpressDataController/IDH_TcxCustomDataController_Values.htm
TcxCustomDataController.Values.
You can change cell values using the Values property only in provider and unbound modes. To modify records in bound mode, you should use the functionality provided by your dataset instead.
Автор: Vadim153
Дата сообщения: 23.08.2009 11:43
Как поменять стиль сразу, например, на всех кнопках?
Автор: korobovmax
Дата сообщения: 23.08.2009 13:16
Vadim153, никак.

Есть cxDefaultEditStyleController, который позволяет установить всем cx-овским компонентам поменять стиль единовременно, но он, именно кнопки cxButton не знает.

Поэтому, надо будет сделать цикл по компонентам формы:
for i := 0 to Self.ComponentCount - 1 do
begin
if Self.Components(i).ClassNameIs('TcxButton') then
TcxButton(Self.Components(i)).LookAndFeel.Kind := ВАШЕ
end;

Насчет того, что кнопки не поддерживаются написано здесь:
http://www.devexpress.com/Support/Center/p/DQ16996.aspx?searchtext=cxButton+cxDefaultEditStyleController&p=T1|P0|0
Автор: FunCode
Дата сообщения: 23.08.2009 13:19
korobovmax

Цитата:
cxDefaultEditStyleController

да в принципе и из названия следует, что применим только к "Edit'ам" ...
Автор: korobovmax
Дата сообщения: 23.08.2009 13:23
Можно еще использовать компонент cxLookAndFeelController, который поменяет стили большинству компонентов DevExpress, в том числе и кнопок (за исключение Баров - там самому надо у БарМенеджера).
Автор: Vadim153
Дата сообщения: 23.08.2009 13:54
Спасибо! Только начинаю разбираться с Dev компонентами
Еще вопрос: Как после insert-а записи выделить нужную ячейку?
В Гриде несколько уровней, как программно выбрать нужный и получить доступ к полям?
Автор: xokc
Дата сообщения: 23.08.2009 20:24
Vadim153

Цитата:
В Гриде несколько уровней, как программно выбрать нужный

http://devexpress.com/Support/Center/p/Q19026.aspx?searchtext=level+focused&p=T1|P0|0
http://devexpress.com/Support/Center/p/B4249.aspx
Автор: makz
Дата сообщения: 24.08.2009 06:24
vladman
Thnx!
Автор: FunCode
Дата сообщения: 24.08.2009 08:21
Vadim153

Цитата:
В Гриде несколько уровней, как программно выбрать нужный и получить доступ к полям?

что имеется ввиду под уровнями - MasterDetail или Levels ?
Автор: Andysoft3C
Дата сообщения: 24.08.2009 14:50
Привет всем.
Подскажите, есть проект, в нем много окон, главная MDI, остальные MDIChild,
встала задача сделать отображение дочерних окон по аналогии MS Visual Studio 2005 (по типу закладок). Можно ли такое осуществить с помощью Devexpress (DockPanel, DockSite), без переделки окон во фреймы.
Автор: f3ka
Дата сообщения: 24.08.2009 15:09
Andysoft3C
можно... использовать ManualDock у форм
Автор: Andysoft3C
Дата сообщения: 24.08.2009 15:32
f3ka
Можно немного по подробней никогда не использовал.
Автор: f3ka
Дата сообщения: 24.08.2009 15:50
Andysoft3C
думаю что самый лучший вариант это почитать здесь про ManualDock
Автор: korstin
Дата сообщения: 25.08.2009 06:51
Добрый день. Бьюсь второй день над вопросом, безрезультатно. Пришел сюда.
Есть cxGrid и TcxGridDBBandedTableView, датасет TdxMemData, заполняется в рантайме.
Грид заполняется в рантайме "руками", в разрезе двух измерений. Допустим, возьмем прием врачей. Тогда измерения два: слева - Врач, вверху - время (рисунок http://pic.ipicture.ru/uploads/090825/8rwk6QTJT7.jpg)

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

Помогите подсказкой

Добавлено:
Ссылка захватывается со скобкой, правильная ссылка http://pic.ipicture.ru/uploads/090825/8rwk6QTJT7.jpg
Автор: korobovmax
Дата сообщения: 25.08.2009 10:13
korstin, заведите поле в TdxMemData.
В зависимости от признаков заполняйте это поле, например, значениями 1, 2, 3.
В гриде при перерисовки любой ячейки используйте значение поля для рисования. Тогда вся строка будет того цвета, который нужен.
Автор: X11
Дата сообщения: 25.08.2009 16:56
В cxGrid есть поле Properties := HyperLink
Можно как-то заставить по щелчку открывать в браузере ссылку? Или только ручками через OnClick самого грида?
SingleClick := True не помогает.

Получается, что Properties := HyperLink только для подсветки текста, как ссылки?
Автор: korobovmax
Дата сообщения: 25.08.2009 17:09

Цитата:
В cxGrid есть поле Properties := HyperLink
Можно как-то заставить по щелчку открывать в браузере ссылку? Или только ручками через OnClick самого грида?
SingleClick := True не помогает.

Получается, что Properties := HyperLink только для подсветки текста, как ссылки?


По SingleClick - открывается с первого клика, иначе - по двойному клику.
Если у вас в любом положение флажка не срабатывает, значит отключено Inplace-редактирование.
Оно работает, если у грида OptionsSelection.CellSelect = True, у столбца Options.Editing и у грида OptionsData.Editing.

Без Inplace'а никакой редактор не работает.
Автор: X11
Дата сообщения: 25.08.2009 19:01
Уточню. Т.е. если у меня грид работает в режиме "readonly", то нужно будет ректально открывать ссылку по щёлчку?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


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