Да, в своем обработчике.
» Использование DevExpress (часть 3)
X11
Цитата:
Вроде бы уже обсуждалась подобная задача
см. описание проблемы
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123&start=220#13
и мой ответ двумя постами ниже.
Добавлено:
Поскольку ссылка на пример уже оказалась недоступна, перезалил
_http://rapidshare.com/files/271502398/GridOpenUrl.rar.html
Цитата:
Можно как-то заставить по щелчку открывать в браузере ссылку?
Вроде бы уже обсуждалась подобная задача
см. описание проблемы
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123&start=220#13
и мой ответ двумя постами ниже.
Добавлено:
Поскольку ссылка на пример уже оказалась недоступна, перезалил
_http://rapidshare.com/files/271502398/GridOpenUrl.rar.html
korobovmax, наверное вы плохо прочитали. На рисунке как раз видно, что разрисовка строк - не проблема. В том то и дело что мне нужно разрисовка ЯЧЕЕК.
korstin
тогда OnCustomDrawCell вам в руки
тогда OnCustomDrawCell вам в руки
f3ka, вы тоже плохо читали. Проблема не в раскрашивании, а в хранении атрибутов для раскрашивания. В любом случае - я это уже решил
korstin
Все это решается через стили и обработчик события для колонки OnGetContentStyle,
в котором в зависимости от Values[x] выбираем стиль отрисовки ...
Все это решается через стили и обработчик события для колонки OnGetContentStyle,
в котором в зависимости от Values[x] выбираем стиль отрисовки ...
korstin
было написано
Цитата:
вот таки OnCustomDrawCell как раз разрисовывает ЯЧЕЙКИ, а не СТРОКИ
было написано
Цитата:
В том то и дело что мне нужно разрисовка ЯЧЕЕК.
вот таки OnCustomDrawCell как раз разрисовывает ЯЧЕЙКИ, а не СТРОКИ
f3ka
Цитата:
а почему все-таки не использовать стили - ведь так проще - они же для этого и сделаны когда необходимо управлять только цветом фона да атрибутами шрифта ...
Цитата:
вот таки OnCustomDrawCell как раз разрисовывает ЯЧЕЙКИ, а не СТРОКИ
а почему все-таки не использовать стили - ведь так проще - они же для этого и сделаны когда необходимо управлять только цветом фона да атрибутами шрифта ...
FunCode
да я то конечно же использовал бы стили, но товарищ korstin не корректно сформулировал вопрос изначально, поэтому и поплыли в эту сторону
да я то конечно же использовал бы стили, но товарищ korstin не корректно сформулировал вопрос изначально, поэтому и поплыли в эту сторону
Хорошая новость - через пару дней выходит билд 46, с поддержкой D2010.
FunCode
f3ka
korstin
Стили очень удобны, но если ими сильно увлекаться в гриде заметно падает скорость работы, в частности, прокрутки.
Поэтому, ИНОГДА лучше использовать раскраску.
f3ka
korstin
Стили очень удобны, но если ими сильно увлекаться в гриде заметно падает скорость работы, в частности, прокрутки.
Поэтому, ИНОГДА лучше использовать раскраску.
Все привет.
Понадобилась клиенту возможность мультисортировки в DBTableView, но почему то сортировка не работает.
Значки в заголовках колонок отображаются и меняются при повторных кликах, но сама сортировка не происходит.
Проверил в форме справочников (другая форма) - там работает. Настройки везде одинаковые - тоже проверил.
В чем может быть дело?
Влияет ли на мультисортировку наличие в DBTableView колонки (номер по порядку), которая заполняется по GetDisplayText?
Может быть существуют какие-либо неописанные в документации условия, когда работает multisort?
Понадобилась клиенту возможность мультисортировки в DBTableView, но почему то сортировка не работает.
Значки в заголовках колонок отображаются и меняются при повторных кликах, но сама сортировка не происходит.
Проверил в форме справочников (другая форма) - там работает. Настройки везде одинаковые - тоже проверил.
В чем может быть дело?
Влияет ли на мультисортировку наличие в DBTableView колонки (номер по порядку), которая заполняется по GetDisplayText?
Может быть существуют какие-либо неописанные в документации условия, когда работает multisort?
afiget, уточните: сортировка не работает вообще? То есть даже для 1 столбца?
Насчет GetDisplayText: по умолчанию сортировка по значениям, считанным из полей (реальной или виртуальной таблицы). Но если установлен флаг DataController.Options.dcoSortByDisplayText, то сортировка по DisplayText.
Насчет GetDisplayText: по умолчанию сортировка по значениям, считанным из полей (реальной или виртуальной таблицы). Но если установлен флаг DataController.Options.dcoSortByDisplayText, то сортировка по DisplayText.
afiget
а не включен ли GridMode?
а не включен ли GridMode?
korobovmax
Сортировка работает для одного столбца. И если, например, выключить сортировку для всех столбцов (Ctrl+Click), а потом включить по столбцу, который изначально хочу отсортировать вторым, то по нему сортировка тоже работает.
f3ka
ГридМод, конечно же, выключен.
ЗЫ
В том то и дело, что для 2-х разных DBTableView с одинаковыми! настройками - разное поведение.
PS2 (если это так важно)
Версия грида (девки с нашего форума): 6.38
Либо я чего то недоглядел, либо баг...
Добавлено:
Все, отбой, спасибо всем, нашел причину.
У меня первая колонка, которая учавствовала в сортировке - дата с временем, но отображается только дата.
Т.к. на сортировку опции типа IgnoreTime нет, поэтому и получаю такой вот результат.
Сортировка работает для одного столбца. И если, например, выключить сортировку для всех столбцов (Ctrl+Click), а потом включить по столбцу, который изначально хочу отсортировать вторым, то по нему сортировка тоже работает.
f3ka
ГридМод, конечно же, выключен.
ЗЫ
В том то и дело, что для 2-х разных DBTableView с одинаковыми! настройками - разное поведение.
PS2 (если это так важно)
Версия грида (девки с нашего форума): 6.38
Либо я чего то недоглядел, либо баг...
Добавлено:
Все, отбой, спасибо всем, нашел причину.
У меня первая колонка, которая учавствовала в сортировке - дата с временем, но отображается только дата.
Т.к. на сортировку опции типа IgnoreTime нет, поэтому и получаю такой вот результат.
Выручайте други. Не знаю как подступиться к решению проблемы:
имеем EditRepository и созданный в этом репозитарии LookupComboBoxItem. Все это лежит в датамодуле.
В отдельной форме fmEdit этот item используется в качестве свойства RepositoryItem одного из столбцов грида tvEdit. Для этого столбца сформирован обработчик события OnCloseUp, который прописался в датамодуле, по месту жительства самого КомбобоксИтема. Как правильно использовать событие OnCloseUp, в которым будут обработаны другие столбцы грида tvEdit формы fmEdit?
При этом:
- LookupComboBoxItem может использоваться столбцах и едитах других форм
- форма с гридом создается при первом к ней обращении.
Кое-какие мысли есть: нужно учесть, что fmEdit<>Nil, и в какую-нибудь переменную загнать грид tvEdit. В общем как-то это нужно оформить в удобоваримый код. Может подскажите примерами?
имеем EditRepository и созданный в этом репозитарии LookupComboBoxItem. Все это лежит в датамодуле.
В отдельной форме fmEdit этот item используется в качестве свойства RepositoryItem одного из столбцов грида tvEdit. Для этого столбца сформирован обработчик события OnCloseUp, который прописался в датамодуле, по месту жительства самого КомбобоксИтема. Как правильно использовать событие OnCloseUp, в которым будут обработаны другие столбцы грида tvEdit формы fmEdit?
При этом:
- LookupComboBoxItem может использоваться столбцах и едитах других форм
- форма с гридом создается при первом к ней обращении.
Кое-какие мысли есть: нужно учесть, что fmEdit<>Nil, и в какую-нибудь переменную загнать грид tvEdit. В общем как-то это нужно оформить в удобоваримый код. Может подскажите примерами?
sly konrad
Сомневаюсь, что такое вообще возможно. RepositoryItem ничего не знает о View, к которому прикручен.
А что нужно сделать в OnCloseUp? Может быть это можно реализовать другим способом.
Сомневаюсь, что такое вообще возможно. RepositoryItem ничего не знает о View, к которому прикручен.
А что нужно сделать в OnCloseUp? Может быть это можно реализовать другим способом.
Странность однако.
Есть модуль. Делаю класс, в котором участвует 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;
Есть модуль. Делаю класс, в котором участвует 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;
X11
fcxGrid.MyViewName.ViewData.RecordCount;
fcxGrid.MyViewName.ViewData.RecordCount;
sly konrad
Цитата:
Попробуйте определить для столбца использующего элемент репозитория LookupComboBoxItem свойство Properties в значение LookupComboBox. Сами свойства Properties.LookupComboBox можно не настраивать (они перекрываются свойствами RepositoryItem). Но вот обработчики Properties.LookupComboBox перекрывают обработчики RepositoryItem. Так что обрабатывайте событие OnCloseUp в Properties.LookupComboBox.
Цитата:
Выручайте други. Не знаю как подступиться к решению проблемы:
Попробуйте определить для столбца использующего элемент репозитория LookupComboBoxItem свойство Properties в значение LookupComboBox. Сами свойства Properties.LookupComboBox можно не настраивать (они перекрываются свойствами RepositoryItem). Но вот обработчики Properties.LookupComboBox перекрывают обработчики RepositoryItem. Так что обрабатывайте событие OnCloseUp в Properties.LookupComboBox.
Цитата:
fcxGrid.MyViewName.ViewData.RecordCount;
Но в другом модуле (есл на форме лежит собственно грид), то тот код нормально работает
Добавлено:
Извиняюсь, беру свои слова обратно. Стормозил
afiget
Цитата:
Ситуация простая: при выборе значения из всплывающего списка нужно заполнить пару соседних столбцов соостветствующими данными справочника. Например, в поле "Сотрудник" выбираем из списка "Иванов", в поля "Департамент" и "Отдел" заносим значения из справочника сотрудников по ID выбранного сотрудника.
vladman
Цитата:
Спасибо. Не знал про такую возможность. Будем пробовать.
Цитата:
А что нужно сделать в OnCloseUp?
Ситуация простая: при выборе значения из всплывающего списка нужно заполнить пару соседних столбцов соостветствующими данными справочника. Например, в поле "Сотрудник" выбираем из списка "Иванов", в поля "Департамент" и "Отдел" заносим значения из справочника сотрудников по ID выбранного сотрудника.
vladman
Цитата:
Но вот обработчики Properties.LookupComboBox перекрывают обработчики RepositoryItem
Спасибо. Не знал про такую возможность. Будем пробовать.
Есть cxGrid, не привязанный к таблице базы.
Как присвоить колонку этого грида, переменной?
Код:
colPhones: TcxGridColumn;
colPhones := TcxGridDBTableView(fcxGrid.ActiveView).какой_здесь_метод_можно_использовать
Как присвоить колонку этого грида, переменной?
Код:
colPhones: TcxGridColumn;
colPhones := TcxGridDBTableView(fcxGrid.ActiveView).какой_здесь_метод_можно_использовать
X11, а присваивать переменной надо в зависимостиь от имени столбца?
Еще: в GetColumnByFieldName(), которая не подходит вам по условию, используют цикл.
Еще: в GetColumnByFieldName(), которая не подходит вам по условию, используют цикл.
Цитата:
при выборе значения из всплывающего списка нужно заполнить пару соседних столбцов соостветствующими данными справочника.
Тогда именно так, как написал vladman.
X11
TcxCustomGridTableView.FindItemByName ?
Добрый день, подскажите как в cxGrid сделать чтобы при сортировке текст в заголовке столбца не смещался? (текст заголовка размещен по центру )
gyani
Цитата:
Код: 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;
Цитата:
как в 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;
Подскажите, пожалуйста, как в рантайме создавать и размещать 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).
vladman
спасибо за ответ, но что-то не работает, хотя я думаю это не критично сейчас Подскажите где можно почитать для начинающих по работе с БД через cxGrid в связке с Fib
спасибо за ответ, но что-то не работает, хотя я думаю это не критично сейчас Подскажите где можно почитать для начинающих по работе с БД через cxGrid в связке с Fib
gyani
Цитата:
А что не работает?
Цитата:
Работа с БД через cxGrid мало зависит от компонента доступа к данным.
Читайте "FIBPlus 6.9.6 Developers Guide.pdf" для работы с FIBPlus,
и смотрите документацию и примеры поставляемые DevExpress - этого всего вполне достаточно для работы, и не только начинающему. Еще у DevExpress, наверное, самый лучший Support из вендоров 3rd party componrents. Так что заглядывайте и туда - ссылка в шапке, как раз подправил на корректную.
Цитата:
но что-то не работает
А что не работает?
Цитата:
Подскажите где можно почитать для начинающих
Работа с БД через 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, истории становления российского интернета. Сделано для людей.