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

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

Автор: RffR255
Дата сообщения: 21.02.2007 22:14
Не получается в DBTreeView нормально реализоать контекстное меню, кто с этим сталкивался?
Автор: ArtemiyUO
Дата сообщения: 22.02.2007 07:14
Уважаемые такой вопрос:
Есть ли способы добавить стандартным девовским компонентам cxDBImage поlдержку более шурокого круга форматов? В идеале
хотелось бы JPG (JPEG), GIF, TIFF, PNG.

Вообще какие есть библиотеки для этих целей. Хотелось бы именно интеграции, что бы стандартные компоненты Image больше форматов.
Автор: Alex47
Дата сообщения: 22.02.2007 08:45
ArtemiyUO

В ньюсах devexpress проблема обсуждалась.
1. Вопрос:
"How can I display any type Image via cxgrid and cxDBImage?"
Ответ:
"Look in the QG 4 newsgroup for the thread "Stored pictures". Bastian
mentions some sample code he has on his website that illustrates how to do
this.
Here's his website: http://www.aixware.de/samples.html (the 3rd sample from
the top)"
2. Вопрос:
"How can I do to support different image format with cxDBImage linked
to graphic field of a paradox table ?"
Ответ:
"Set cxGraphicEdit.Properties.GraphicClassName before loading the image.
I have tried setting GraphicClassName in the OnAssignPicure event and
TBitMap and TIcon is displayed correctly" ...
Попробуй...
Автор: jicoff
Дата сообщения: 22.02.2007 13:23
Vic

Теперь мне не понятно. Вопрос был, как узнать на какой колонке вызвалось Popup меню. Привел пример. Какое отношение твой первый вопрос имеет ко второму?

В TcxGridDBTableView нет никакого OnClick. Есть OnDblClick, OnCellClick, OnCellDblClick и даже OnColumnHeaderClick.

Еще использую OnMouseDown, так там вообще X и Y приходят параметрами.
Автор: Bill_PHO
Дата сообщения: 22.02.2007 22:21
Не скажет ли кто, уменьшились ли задержки в cxGrid6 по сравнению 5?
Автор: golkanavt
Дата сообщения: 23.02.2007 12:45
Bill_PHO
Присоединяюсь к вопросу и хочу сделать его шире - как вообще в отношении стабильности в работе, можно уже переходить на 6ку?
Автор: Nicka_Grey
Дата сообщения: 23.02.2007 15:37
Bill_PHO
Какие именно задержки?
Т.е. во время чего?

golkanavt
Пробовать можно, особо сырого "дефки" вроде ничего в массы не пускали
Автор: xokc
Дата сообщения: 24.02.2007 16:57
golkanavt
Мне 6-я пока нравится больше - ряд глюков пятой пропало
Автор: RffR255
Дата сообщения: 24.02.2007 17:04

Цитата:
Не получается в DBTreeView нормально реализоать контекстное меню, кто с этим сталкивался?


Ну что так и будем обсуждать задержки Неужели никто помочь не может?
Автор: svs123456789
Дата сообщения: 24.02.2007 19:45
может кому понадобиться - как динамически устанавливать источник данных для грида?
[more]
var
Grid: TcxGrid;
Level: TcxGridLevel;
View: TcxGridDBTableView;

// Creates a Grid instance
Grid := TcxGrid.Create(SomeOwner);
Grid.Parent := SomeParent;
// Creates a Level
Level := Grid.Levels.Add;
Level.Name := 'SomeLevelName';
// Creates a View
View := Grid.CreateView(TcxGridDBTableView) as TcxGridDBTableView;
View.Name := 'SomeViewName';
// … and binds it to the Level
Level.GridView := View;
// Hooks up the View to the data
View.DataController.DataSource := SomeDataSource;
// … and creates all columns
View.DataController.CreateAllItems;
end;

[/more]
Автор: infomSB
Дата сообщения: 26.02.2007 10:51

Цитата:
Ну что так и будем обсуждать задержки Неужели никто помочь не может?

Хотите получить ответ, пишите конкретней...
Автор: RffR255
Дата сообщения: 26.02.2007 17:30

Цитата:
Хотите получить ответ, пишите конкретней...


Подробней так:

Не получается полноценно по правой кнопке выделять элемент также как и по левой,т.о. щелкнув правой кнопкой на элементе он выделен только пока отображается меню. Манипуляции с выполнением нужных действий вызванных из этого самого меню с последующим ручным переносом фокуса на этот элемент успехом не увенчались. Также не хотелось бы что бы меню вызывалось при щелчке не на элементе дерева.
Автор: jicoff
Дата сообщения: 26.02.2007 18:26
RffR255

В DBTreeView используется TreeView. В MSDN есть такая функция или макрос, не помню, TreeView_HitTest, вот тут и копай.
Автор: Alkatraz
Дата сообщения: 27.02.2007 17:47
Скажите пожалуйста - можно ли с помощю только одного грида менять данные в привязанной к view таблице?

Пробовал следующую конструкцию:

cxGrid.FocusedView.DataController.SetValues(cxGrid.FocusedView.DataController.FocuserRecordIndex , 0 , Null) {Меняем значение в 0 колонке view на Null}

Визуально все срабатывает, но после cxGrid.FocusedView.DataController.Post изменения не фиксируются.

Вообще - можно ли управлять данными из таблиц при помощи одного только DataController, не обращаясь к его привязанной таблице напрямую, т.е. добавлять, удалять, менять данные в выделенной строке грида в нужной колонке и т.д.? Или все это делается через приведение типов к TcxGridDBDataController и потом через DataSet, как с обычной таблицей? (Есть куча таблиц и следить за обработчиками в каждой новой таблице муторно)
Автор: Alkatraz
Дата сообщения: 28.02.2007 07:24
В догонку - можно ли через View грида (не через DataController) получить доступ к полям привязанной таблицы, которые не содержатся в списке полей самого View?
Автор: Dennica
Дата сообщения: 28.02.2007 07:25
Alkatraz
Помоему таким образом данные можно менять только в несвязанных с данными въюхах.
В связанных (cxGrid.FocusedView.DataController as TcxDBDataController).DataSet и дальше как обычно все
Автор: infomSB
Дата сообщения: 28.02.2007 10:23
Alkatraz
Что подразумевается под словосочетанием "привязанной к view таблице" ?
Если имеется ввиду что у cxGridDBTableView.DataController.DataSource указан DataSource у котрого в свою очередь DataSet - это TADOTable, TADOQuery .... или кто-то из BDE то при любом изменении в гриде эти данные будут меняться и в базе данных.

Пример изменение значения поля
cxGrid1DBTableView1Column1.EditValue := 0;
cxGrid1DBTableView1.DataController.Post;

Пример удаление записи
cxGrid1DBTableView1.DataController.DeleteFocused

Пример изменение значения поля
cxGrid1DBTableView1.DataController.Insert;
cxGrid1DBTableView1Column1.EditValue := 0;
cxGrid1DBTableView1Column2.EditValue := 22;
cxGrid1DBTableView1Column3.EditValue := 'паспорт';
cxGrid1DBTableView1.DataController.Post;

Все эти действия изменят и таблицу в БД

Автор: Alkatraz
Дата сообщения: 28.02.2007 11:52

Цитата:
nfomSB

Спасибо, приведенные вами примеры я понял, но проблемма в другом - при нажатии на удаление мне необходимо проверить в FocusedView значение самого первого поля, объявленного во view (индекс его всегда будет 0) и если там есть некое значение, то это значение заNull'ить, иначе просто удалить запись.

Удаление, добавление, сохранение и отмена работают великолепно, но стоит проблемма изменения значения именно поля с нулевым индексом в текущем сфокусированном View (есть много вложенных Master-Detail). Соответственно обращаться по именам полей в данном случае будет очень геморройно, а в таблицах поля имеют разные наименования и только в каждом своем View они имеют 0 индекс...

Надеюсь, объясним более-менее понятно... %)
Автор: infomSB
Дата сообщения: 28.02.2007 14:08

Цитата:
Спасибо, приведенные вами примеры я понял, но проблемма в другом - при нажатии на удаление мне необходимо проверить в FocusedView значение самого первого поля, объявленного во view (индекс его всегда будет 0) и если там есть некое значение, то это значение заNull'ить, иначе просто удалить запись.


Обработчик нажатия кнопки удалить

if TcxGridDBTableView(cxGrid1.FocusedView).Columns[0].EditValue = 0 then
begin
TcxGridDBTableView(cxGrid1.FocusedView).Columns[0].EditValue := null;
TcxGridDBTableView(cxGrid1.FocusedView).DataController.Post;
end
else
TcxGridDBTableView(cxGrid1.FocusedView).DataController.DeleteFocused;
Автор: Alkatraz
Дата сообщения: 28.02.2007 18:05

Цитата:
Обработчик нажатия кнопки удалить

if TcxGridDBTableView(cxGrid1.FocusedView).Columns[0].EditValue = 0 then
begin
TcxGridDBTableView(cxGrid1.FocusedView).Columns[0].EditValue := null;
TcxGridDBTableView(cxGrid1.FocusedView).DataController.Post;
end
else
TcxGridDBTableView(cxGrid1.FocusedView).DataController.DeleteFocused;



Гм... Это если известен вид View (TableView, BandedView, Cardiew и т.д.) или в любом случае можно применять данное преобразование? В моем случае точный вид View не известен. И еще вопрос - если удалить свой обработчик, то на какое событие вешать код?

И еще один вопрос - необходимо перечеркнуть прорисовываемые ячейки красной чертой. Делаю обработчик на прорисовку контента, пытаюсь рисовать по ACanvas, вычисляя координаты середины прорисовываемой области (там дается область прорисовки), затем рисую с помощью MoveTo и LineTo. В результате ничего не получается - как будто событие не отработало. Аналогичная конструкция в EhLib работала...
Автор: jicoff
Дата сообщения: 01.03.2007 11:39
Alkatraz

Что за глупый вопрос? Если View разные по типу, как можно "в любом случае можно применять данное преобразование"? Посмотри хелп, учись работать с документацией.
Автор: Shadi
Дата сообщения: 01.03.2007 12:34

Цитата:
Alkatraz



Цитата:

procedure TfrmCustomDraw.DBPivotGridCustomDrawCell(
Sender: TcxCustomPivotGrid; ACanvas: TcxCanvas;
AViewInfo: TcxPivotGridDataCellViewInfo; var ADone: Boolean);
begin
if AViewInfo.DisplayText = '' then
begin
ACanvas.Brush.Color := clBtnShadow;
ACanvas.FillRect(AViewInfo.Bounds);
with AViewInfo.Bounds do
begin
ACanvas.Pen.Color := clBlack;
ACanvas.Pen.Width := 1;
ACanvas.MoveTo(Left, Top);
ACanvas.LineTo(Right, Bottom);
ACanvas.MoveTo(Right, Top);
ACanvas.LineTo(Left, Bottom);
end;
AViewInfo.Transparent := True;
end
else
if (AViewInfo.RowIndex mod 2 = 0) or (AViewInfo.RowIndex mod 2 = 0) then
begin
FillTubeGradientRect(ACanvas.Handle, AViewInfo.Bounds, clYellow, clRed, True);
AViewInfo.Transparent := True;
end;
end;


Может это поможет...


Автор: jicoff
Дата сообщения: 01.03.2007 13:03
Shadi

Не знаю правильно ли написан пример, но он не должен сработать, т.к. ADone по-умолчанию равняется false, а в таком случае он поверх этой отрисовки наложит свою.
Автор: Shadi
Дата сообщения: 01.03.2007 13:12
jicoff


Цитата:
Не знаю правильно ли написан пример, но он не должен сработать, т.к. ADone по-умолчанию равняется false, а в таком случае он поверх этой отрисовки наложит свою.


Пример взят из демо и поэтому работает на ура...
Можешь сам посмотреть ExpressPivotGrid\Demos\Delphi\CustomDrawDemo\

Автор: kooxymooxy
Дата сообщения: 01.03.2007 13:16
Господа!
может объясните как надо настраивать мастер-детейл, что бы был возможен мультиселект ?
типа vDet.DataController.SelectAll;
сейчас
vDet.DataController.RowCount - 0
vDet.DataController.DataSetRecordCount - 3
Автор: jicoff
Дата сообщения: 01.03.2007 13:36
kooxymooxy

GridView.OptionSelections.MultiSelect := true
Автор: kooxymooxy
Дата сообщения: 01.03.2007 13:50
jicoff
дело в том, что оно так и установлено и в мастере и в детейле...
но если я по кнопочке делаю для детейла vDet.DataController.SelectAll;
он не выделяет ни одной строки, просто встает на первую...
а vDet.Controller.SelectedRowCount - 0 (((
Автор: jicoff
Дата сообщения: 01.03.2007 14:05
kooxymooxy

А как ты это делаешь? Что у тебя такое vDet? Если это detail view, который стоит в дизайне как detail, то тогда ничего не получится - это pattern view (см. свойство IsPattern). Detail надо брать у конкретной мастер записи: преобразуешь ее к TcxGridMasterDataRow. а далее есть свойство ActiveDetailGridView, что тебе, скорее всего, и нужно/
Автор: kooxymooxy
Дата сообщения: 01.03.2007 15:00
jicoff
спасибо большое....полгода бы сидел, с девами недавно только пришлось столкнуться )

Добавлено:
jicoff
и всё таки последний вопрос :
как в ActiveDetailGridView сохранять изменения, которые вношу через setvalue... ?
понимаю, что вопросы глупые, не поджимало бы время, покопался бы сам (((
Автор: jicoff
Дата сообщения: 01.03.2007 18:54
kooxymooxy

Это смотря какой detail view. Если это простой, то он должен сохранять там данные (предположение). Если это DB, то при переходе фокуса на другой detail туда заново считываются данные, т.к. используется один DataSet на все detail view.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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