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

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

Автор: korobovmax
Дата сообщения: 25.08.2009 23:12
Да, в своем обработчике.
Автор: vladman
Дата сообщения: 26.08.2009 02:03
X11

Цитата:
Можно как-то заставить по щелчку открывать в браузере ссылку?

Вроде бы уже обсуждалась подобная задача
см. описание проблемы
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123&start=220#13
и мой ответ двумя постами ниже.

Добавлено:
Поскольку ссылка на пример уже оказалась недоступна, перезалил
_http://rapidshare.com/files/271502398/GridOpenUrl.rar.html
Автор: korstin
Дата сообщения: 26.08.2009 02:24
korobovmax, наверное вы плохо прочитали. На рисунке как раз видно, что разрисовка строк - не проблема. В том то и дело что мне нужно разрисовка ЯЧЕЕК.
Автор: f3ka
Дата сообщения: 26.08.2009 07:54
korstin
тогда OnCustomDrawCell вам в руки
Автор: korstin
Дата сообщения: 27.08.2009 01:16
f3ka, вы тоже плохо читали. Проблема не в раскрашивании, а в хранении атрибутов для раскрашивания. В любом случае - я это уже решил
Автор: FunCode
Дата сообщения: 27.08.2009 08:14
korstin
Все это решается через стили и обработчик события для колонки OnGetContentStyle,
в котором в зависимости от Values[x] выбираем стиль отрисовки ...
Автор: f3ka
Дата сообщения: 27.08.2009 08:29
korstin
было написано

Цитата:
В том то и дело что мне нужно разрисовка ЯЧЕЕК.

вот таки OnCustomDrawCell как раз разрисовывает ЯЧЕЙКИ, а не СТРОКИ
Автор: FunCode
Дата сообщения: 27.08.2009 08:32
f3ka

Цитата:
вот таки OnCustomDrawCell как раз разрисовывает ЯЧЕЙКИ, а не СТРОКИ

а почему все-таки не использовать стили - ведь так проще - они же для этого и сделаны когда необходимо управлять только цветом фона да атрибутами шрифта ...
Автор: f3ka
Дата сообщения: 27.08.2009 08:48
FunCode
да я то конечно же использовал бы стили, но товарищ korstin не корректно сформулировал вопрос изначально, поэтому и поплыли в эту сторону
Автор: data man
Дата сообщения: 27.08.2009 09:57
Хорошая новость - через пару дней выходит билд 46, с поддержкой D2010.
Автор: korobovmax
Дата сообщения: 27.08.2009 10:36
FunCode
f3ka
korstin

Стили очень удобны, но если ими сильно увлекаться в гриде заметно падает скорость работы, в частности, прокрутки.
Поэтому, ИНОГДА лучше использовать раскраску.
Автор: afiget
Дата сообщения: 27.08.2009 14:44
Все привет.
Понадобилась клиенту возможность мультисортировки в DBTableView, но почему то сортировка не работает.
Значки в заголовках колонок отображаются и меняются при повторных кликах, но сама сортировка не происходит.
Проверил в форме справочников (другая форма) - там работает. Настройки везде одинаковые - тоже проверил.
В чем может быть дело?

Влияет ли на мультисортировку наличие в DBTableView колонки (номер по порядку), которая заполняется по GetDisplayText?

Может быть существуют какие-либо неописанные в документации условия, когда работает multisort?
Автор: korobovmax
Дата сообщения: 27.08.2009 14:58
afiget, уточните: сортировка не работает вообще? То есть даже для 1 столбца?

Насчет GetDisplayText: по умолчанию сортировка по значениям, считанным из полей (реальной или виртуальной таблицы). Но если установлен флаг DataController.Options.dcoSortByDisplayText, то сортировка по DisplayText.
Автор: f3ka
Дата сообщения: 27.08.2009 15:26
afiget
а не включен ли GridMode?
Автор: afiget
Дата сообщения: 27.08.2009 16:15
korobovmax
Сортировка работает для одного столбца. И если, например, выключить сортировку для всех столбцов (Ctrl+Click), а потом включить по столбцу, который изначально хочу отсортировать вторым, то по нему сортировка тоже работает.
f3ka
ГридМод, конечно же, выключен.

ЗЫ
В том то и дело, что для 2-х разных DBTableView с одинаковыми! настройками - разное поведение.

PS2 (если это так важно)
Версия грида (девки с нашего форума): 6.38

Либо я чего то недоглядел, либо баг...

Добавлено:
Все, отбой, спасибо всем, нашел причину.
У меня первая колонка, которая учавствовала в сортировке - дата с временем, но отображается только дата.
Т.к. на сортировку опции типа IgnoreTime нет, поэтому и получаю такой вот результат.
Автор: sly konrad
Дата сообщения: 28.08.2009 10:08
Выручайте други. Не знаю как подступиться к решению проблемы:
имеем EditRepository и созданный в этом репозитарии LookupComboBoxItem. Все это лежит в датамодуле.
В отдельной форме fmEdit этот item используется в качестве свойства RepositoryItem одного из столбцов грида tvEdit. Для этого столбца сформирован обработчик события OnCloseUp, который прописался в датамодуле, по месту жительства самого КомбобоксИтема. Как правильно использовать событие OnCloseUp, в которым будут обработаны другие столбцы грида tvEdit формы fmEdit?
При этом:
- LookupComboBoxItem может использоваться столбцах и едитах других форм
- форма с гридом создается при первом к ней обращении.
Кое-какие мысли есть: нужно учесть, что fmEdit<>Nil, и в какую-нибудь переменную загнать грид tvEdit. В общем как-то это нужно оформить в удобоваримый код. Может подскажите примерами?
Автор: afiget
Дата сообщения: 28.08.2009 11:51
sly konrad
Сомневаюсь, что такое вообще возможно. RepositoryItem ничего не знает о View, к которому прикручен.
А что нужно сделать в OnCloseUp? Может быть это можно реализовать другим способом.
Автор: X11
Дата сообщения: 28.08.2009 11:58
Странность однако.
Есть модуль. Делаю класс, в котором участвует cxGrid.


Код:
uses SysUtils, uCommonParse, StrUtils, Classes, Variants, pFibQuery, Forms,
Controls, uGetAditionalInfo, uShare, uWait, uPreviewDB, IniFiles,
cxGrid, pFIBDatabase, cxGridCustomTableView, cxGridTableView,
cxClasses, cxGridLevel, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxRichEdit,
cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxGridCustomView;


Type
TGetPartsAD = class(TObject)
private
fActiveProfile: string;
//объявляем
fcxGrid: TcxGrid;

в процедуре
....
fmWait.pb1.Max := fcxGrid.ViewData.RecordCount;
Автор: afiget
Дата сообщения: 28.08.2009 12:18
X11
fcxGrid.MyViewName.ViewData.RecordCount;
Автор: vladman
Дата сообщения: 28.08.2009 12:23
sly konrad

Цитата:
Выручайте други. Не знаю как подступиться к решению проблемы:

Попробуйте определить для столбца использующего элемент репозитория LookupComboBoxItem свойство Properties в значение LookupComboBox. Сами свойства Properties.LookupComboBox можно не настраивать (они перекрываются свойствами RepositoryItem). Но вот обработчики Properties.LookupComboBox перекрывают обработчики RepositoryItem. Так что обрабатывайте событие OnCloseUp в Properties.LookupComboBox.
Автор: X11
Дата сообщения: 28.08.2009 13:43

Цитата:
fcxGrid.MyViewName.ViewData.RecordCount;

Но в другом модуле (есл на форме лежит собственно грид), то тот код нормально работает

Добавлено:
Извиняюсь, беру свои слова обратно. Стормозил
Автор: sly konrad
Дата сообщения: 28.08.2009 14:01
afiget

Цитата:
А что нужно сделать в OnCloseUp?

Ситуация простая: при выборе значения из всплывающего списка нужно заполнить пару соседних столбцов соостветствующими данными справочника. Например, в поле "Сотрудник" выбираем из списка "Иванов", в поля "Департамент" и "Отдел" заносим значения из справочника сотрудников по ID выбранного сотрудника.

vladman

Цитата:
Но вот обработчики Properties.LookupComboBox перекрывают обработчики RepositoryItem

Спасибо. Не знал про такую возможность. Будем пробовать.
Автор: X11
Дата сообщения: 28.08.2009 15:21
Есть cxGrid, не привязанный к таблице базы.

Как присвоить колонку этого грида, переменной?

Код:
colPhones: TcxGridColumn;

colPhones := TcxGridDBTableView(fcxGrid.ActiveView).какой_здесь_метод_можно_использовать

Автор: korobovmax
Дата сообщения: 28.08.2009 15:48
X11, а присваивать переменной надо в зависимостиь от имени столбца?

Еще: в GetColumnByFieldName(), которая не подходит вам по условию, используют цикл.
Автор: afiget
Дата сообщения: 28.08.2009 16:57

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

Тогда именно так, как написал vladman.
X11
TcxCustomGridTableView.FindItemByName ?
Автор: gyani
Дата сообщения: 29.08.2009 11:14
Добрый день, подскажите как в cxGrid сделать чтобы при сортировке текст в заголовке столбца не смещался? (текст заголовка размещен по центру )
Автор: vladman
Дата сообщения: 29.08.2009 12:22
gyani

Цитата:
как в cxGrid сделать чтобы при сортировке текст в заголовке столбца не смещался?


Код: procedure <YourForm>.<YourcxGridDBTableView>CustomDrawColumnHeader(Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
vFilterInfo: TcxGridColumnHeaderFilterButtonViewInfo;
i: Integer;
vSortingMarkRect:TRect;
begin
AViewInfo.LookAndFeelPainter.DrawHeader(ACanvas, AViewInfo.Bounds, AViewInfo.TextAreaBounds, AViewInfo.Neighbors,
AViewInfo.Borders, AViewInfo.ButtonState, AViewInfo.AlignmentHorz, AViewInfo.AlignmentVert, AViewInfo.MultiLine,
False, '', AViewInfo.Params.Font, AViewInfo.Params.TextColor, AViewInfo.Params.Color);
ACanvas.DrawTexT(AViewInfo.Text, AViewInfo.Bounds, taCenter, vaCenter, False, False);
for i := 0 to AViewInfo.AreaViewInfoCount -1 do
if AViewInfo.AreaViewInfos[i] is TcxGridColumnHeaderFilterButtonViewInfo then
begin
vFilterInfo := TcxGridColumnHeaderFilterButtonViewInfo(AViewInfo.AreaViewInfos[i]);
Break;
end;
vFilterInfo.Paint(ACanvas);
vSortingMarkRect := vFilterInfo.Bounds;
if vFilterInfo.Visible then
vSortingMarkRect.Left := vSortingMarkRect.Left - vFilterInfo.Width * 2;
if AViewInfo.Column.SortOrder <> soNone then
Sender.Painter.LookAndFeelPainter.DrawSortingMark(ACanvas, vSortingMarkRect, AViewInfo.Column.SortOrder = soAscending);
ADone := True;
end;
Автор: Granmer
Дата сообщения: 29.08.2009 12:31
Подскажите, пожалуйста, как в рантайме создавать и размещать TdxLayoutItem в TdxLayoutControl? Пробовал просто создавать экземпляр TdxLayoutItem, присваить его паренту корневую группу - ошибка выходит. Может кто сталкивался?

Добавлено:
Вопрос снят. Нашел в справке:
Цитата:
To create an item at runtime, you should use the CreateItem or CreateItemForControl methods of a group (or the CreateItem or CreateItemForControl methods of the Layout Control).
Автор: gyani
Дата сообщения: 29.08.2009 21:22
vladman
спасибо за ответ, но что-то не работает, хотя я думаю это не критично сейчас Подскажите где можно почитать для начинающих по работе с БД через cxGrid в связке с Fib
Автор: vladman
Дата сообщения: 29.08.2009 22:29
gyani

Цитата:
но что-то не работает

А что не работает?

Цитата:
Подскажите где можно почитать для начинающих

Работа с БД через cxGrid мало зависит от компонента доступа к данным.
Читайте "FIBPlus 6.9.6 Developers Guide.pdf" для работы с FIBPlus,
и смотрите документацию и примеры поставляемые DevExpress - этого всего вполне достаточно для работы, и не только начинающему. Еще у DevExpress, наверное, самый лучший Support из вендоров 3rd party componrents. Так что заглядывайте и туда - ссылка в шапке, как раз подправил на корректную.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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