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

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

Автор: afiget
Дата сообщения: 15.10.2008 10:43
aries1983
А смысл? У тебя ведь останутся только отфильтрованные записи.
Зачем еще и подсвечивать?

Добавлено:
А смысл?
У тебя ведь и так останутся только отфильтрованные строки. Т.е. каждую строку нужно дополнительно обезобразить выделением.
Автор: aries1983
Дата сообщения: 15.10.2008 12:34
Надо. и не обезобразить, а дополнительно указать (выделить).

У нас контингент пользователей такой, что необходимо все указывать. в том числе и это вхождение строки поиска по колонке, пусть и с фильтром.
Такое решение есть, видел.

_http://www.devexpress.com/Support/Center/p/Q94660.aspx
вот тут обсуждение аналогичной проблемы.
Автор: Czechoslovak
Дата сообщения: 16.10.2008 08:52
aries1983
Самому написать процедуру прорисовки ячейки OnCustomDrawCell
Автор: zver
Дата сообщения: 16.10.2008 15:31
Как при фильтрации столбца выбирая меню (Выбор...) в окно "Пользовательский фильтр" для колонки типа "Дата" подгружались условия "Больше или равно" и "Меньше или равно" по умолчанию?.
Автор: VadimLou
Дата сообщения: 16.10.2008 17:59
zvyagaaa

Цитата:

ну нужно еще из Uses удалять скины. я уменьшил прогу в 2! раза.

я поступил проще - создал пустышки всех скиновых модулей:

dxSkinscx*.pas
dxSkins*.res

Автор: afiget
Дата сообщения: 16.10.2008 19:59
aries1983
И что конкретно у тебя не получается.
Тебе нужно изменить условие
if (Length(ASearchText) > 0) and GridRecord.Focused
and (Item = Sender.OptionsBehavior.IncSearchItem) then
на твое. В остальном - использовать код из _http://www.devexpress.com/Support/Center/p/Q94660.aspx
Как получить доступ только к отфильтрованным записям - было на этом форуме и в KB есть.
Автор: korobovmax
Дата сообщения: 16.10.2008 21:19
chameleon82,
насчет "дерева как грид"

хттп://www.devexpress.com/Support/Center/p/Q32954.aspx


(даешь Использование DevExpress 3!)
Автор: Dr_Huliopidalis
Дата сообщения: 19.10.2008 16:10
Доброго дня!

Возникла проблема с cxDBPivotGrid. По клику мне нужна вытащить значение из этой таблицы. Делаю следующим образом:

parm1 := otkormgrid.Fields[0].Values[otkormGrid.DataController.FocusedRowIndex];

При этом по какой бы строке таблицы я не кликал, при заходе внутрь процедуры (весит на OndblClick) значение otkormGrid.DataController.FocusedRowIndex всегда стоит в 0.
Пробывал поставить otkormGrid.DataController.FocusedRecordIndex - та же ситуация.

В чем может быть проблема? Что посоветуете ?
Автор: zver
Дата сообщения: 20.10.2008 14:21
Dr_Huliopidalis
Вообще cxDBPivotGrid это кросс-таблица. Что-бы получить значения ячеек надо создать TcxGrid с числом колонок равных числу полей в cxDBPivotGrid и сделать CreateDrillDownDataSource().
Примерно так:

Цитата:

void __fastcall TForm1::G1DblClick(TObject *Sender)
{
if(G1->HitTest->HitAtDataCell) {
TcxPivotGridCrossCell *ACrossCell = ((TcxPivotGridDataCellViewInfo*)G1->HitTest->HitObject)->CrossCell;
TcxCustomDataSource *ADataSource = ACrossCell->CreateDrillDownDataSource();
Form4->TableView5->DataController->CustomDataSource = ADataSource;
TDateTime D1=Form4->TableView5->DataController->Values[0][1];
AnsiString S1=AnsiString(Form4->TableView5->DataController->Values[0][4]);
...............
}
}
Автор: korobovmax
Дата сообщения: 20.10.2008 16:59
aries1983, вот ответ суппорта АЗИС (as is)

"
Hello,

This problem has been already discussed in our Support Center. Please review the Q100842 ("How to highlight or make a word different in a cell?") report."

Приведена ссылка: хттп://devexpress.com/Support/Center/p/Q100842.aspx
Автор: Ziltoid
Дата сообщения: 22.10.2008 06:25

Цитата:
Давно уже читал где-то, что они скины хотели реализовать в виде отдельной DLL, но так видать и затихло


Я реализовал себе. Теперь горя не знаю
Автор: X11
Дата сообщения: 22.10.2008 13:17
Ziltoid, привет. Может поделишься реализацией? Нам всем здесь будет очень интересно. Может найдутся спецы, которые оптимизируют и тебе тоже будет полезно. Не жадничай.
Автор: Ziltoid
Дата сообщения: 23.10.2008 01:56

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


Я не жадничаю. Несколько раз пиарил ДЛЛ-ку в топике, но сообщения затерялись в недрах. Пишите на svoboda_@mail.ru или igor.kutsenko@rusal.com, поделюсь
Автор: Czechoslovak
Дата сообщения: 23.10.2008 09:43
zver

Цитата:
Как при фильтрации столбца выбирая меню (Выбор...) в окно "Пользовательский фильтр" для колонки типа "Дата" подгружались условия "Больше или равно" и "Меньше или равно" по умолчанию?.

Перед тем как покажеться окно OnFilterDialogShow сделать программно не активный фильтр c необходимыми критериями с пустыми значениями
Автор: VitOs2
Дата сообщения: 23.10.2008 16:46
Создал грид, а в нем много нужных мне вьюшек. Которые копирую в рантайме.
Потом прозрел! Увидел, что все это можно (и, наверное, нужно) делать через репозиторий.
Но создавать 5 таблиц (в каждой около 40 колонок) как-то напряжно. Можете подсказать, как проделать эту операцию менее болезненно?
Спасибо!
Автор: jicoff
Дата сообщения: 23.10.2008 20:16
VitOs2

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

Колонки создаются просто: связываешь вью с DataSet'ом, который подключен к базе данных, т.е. с активным свойством Active, нажимаешь кнопочку в редакторе грида Retrieve Fields и все готово.
Автор: VitOs2
Дата сообщения: 24.10.2008 09:09
Приложение имеет свою специфику. Если короко, то я создаю вкладки в TcxPateControl на каждую выборку из базы. В каждой вкладке создается TcxGrid c TcxGridDBView. Делать все в одном гриде (много вьюшек) не подходит из-за особенностей требований к интерфейсу (это я не хотел бы обсуждать).
Сейчас я создал нужные мне екземпляры вьюшек в основном гриде. А когда создаю страницу с данными, то копирую из нужной мне вьюшки (из основного грида) в новосозданную вьюшку (все колонки, их параметры, стили и т.д.).
Как недавно понял (нужно было время) это все можно сделать через репозиторий. Теперь хотел бы немного переделать программу, поэтому хочу перенести все вьюшки из грида, который и выполнял роль репозитория, в нормальный репозиторий. Как я уже говорил, вьюшек 5 + около 40-50 полей в каждой. Если все ручками создавать, то много работы получится. Думал, может есть способ полегче (как-то скопировать).

Нашел на официальном сайте, что такая проблема уже поднималась, но, кажется, решение еще не подоспело.
(Copy views with Bands, columns in design time)

Кто-то еще что-то посоветует?
Автор: jicoff
Дата сообщения: 24.10.2008 13:36
VitOs2

Если речь идет от том, чтобы отвязать от грида и привязать к репозиторию, то можно воспользоваться ObjectTreeView, правда для этого репозиторий должен располагаться на той же форме. Просто перетащить мышью из грида в репозиторий. К тому же не знаю версии Борландового продукта, у меня Builder6, там ObjectTreeView есть, про новые - не знаю.

Есть еще вариант, перевести форму в текстовый вид и там "вырезать" из под грида все что нужно и подставить под репозиторий.
Автор: VitOs2
Дата сообщения: 24.10.2008 13:56
Спасибо, буду пробовать.
(Delphi2007)

(спустя 5 минут)
Ура! Получилось! ) Через текст. То-есть, открыл форму как текст и перенс вьюшку в репозиторий.
Спасибо!
Автор: Kmich
Дата сообщения: 27.10.2008 08:50
Вопрос по TcxGrid. Как повернуть надпись caption в закладках для Gridlevel на 90 или 180 градусов?
Автор: infomSB
Дата сообщения: 27.10.2008 09:10
Kmich
Просто так это не сделать, необходимо писать свой обработчик прорисовки Caption колонок, я делал так:
procedure TfrmMain.cxGrid1TableView1CustomDrawColumnHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
Size: TSize;
OldFont: TLogFont;
LogFont: TLogFont;
ARect: TRect;
I, RCount, Offset, StrLen, YOut: Integer;
AClipRegion: TcxRegion;
PartText, RestText:String;
begin
with AViewInfo do
begin
GetObject(ACanvas.Font.Handle, SizeOf(OldFont), @OldFont);
LogFont := OldFont;
with LogFont do
begin
lfEscapement := 900;
lfOrientation := lfEscapement;
lfOutPrecision := OUT_TT_ONLY_PRECIS;
end;
ACanvas.Font.Handle := CreateFontIndirect(LogFont);
GetTextExtentPoint32(ACanvas.Handle, PChar(Text), Length(Text), Size);
ARect := Bounds;
PartText := '';
RestText := Text;
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds,
Neighbors, Borders, cxbsNormal, taCenter, vaCenter, False, False, '',
ACanvas.Font, clNone, Params.Color);
with TextAreaBounds do
if Left < Right then
begin
RCount := (Size.cx div (Bottom - Top - 2))+1;
RestText := WrapText(RestText, '@',[' '], Length(RestText) div RCount);
Offset := (Right - Left - Size.cy*RCount) div 2;
for I := 1 to RCount do // Iterate
begin
StrLen := pos('@', RestText);
if StrLen < 1 then StrLen := Length(RestText);

PartText := StringReplace(copy(RestText, 1, StrLen), '@', '', [rfReplaceAll]);
RestText := copy(RestText, StrLen+1, Length(RestText)-StrLen);

GetTextExtentPoint32(ACanvas.Handle, PChar(PartText), Length(PartText), Size);
if Size.cx < Bottom - Top - 2 then
YOut := Bottom - ((Bottom - Top - 2 - Size.cx) div 2)
else YOut := Bottom - 1;
ACanvas.Canvas.TextOut((Left+Offset+(I-1)*Size.cy),
(YOut),
PartText)
end; // for
end;
AClipRegion := ACanvas.GetClipRegion;
try
for i := 0 to AreaViewInfoCount - 1 do
AreaViewInfos[i].Paint;
finally
ACanvas.SetClipRegion(AClipRegion, roSet);
end;
ADone := True;
AViewInfo.Column.BestFitMaxWidth := (RCount+1)*Size.cy;
end;
end;

Взято кстати с этого топика )
Автор: f3ka
Дата сообщения: 27.10.2008 11:21
infomSB ты немного не понял... ему надо повернуть ЗАГОЛОВКИ ЗАКЛАДОК которые отвечают за переключение уровней (LEVEL) в cxGride.
Автор: Kmich
Дата сообщения: 27.10.2008 11:22
infomSB
Мне Caption не колонок нужно происовать (хотя спасибо в хозяйстве пригодится), а на закладке для гридлевела необходимо повернуть надпись.


Автор: f3ka
Дата сообщения: 27.10.2008 11:58
Kmich на сколько я понял после прочтения базы знаний DevExp'a, нет возможности отрисовывать по своему заголовки табов для GridLevel.
Автор: infomSB
Дата сообщения: 27.10.2008 12:19
Извините, действительно не так понял.
Один выход - переписывать сам cxGrid. Средств для внешней отрисовки DevExpress не предоставляет.
Автор: skinka
Дата сообщения: 27.10.2008 12:48
Доброго времени суток!!!
Возникла такая задача (мульти поля):
Есть таблица 1(id, имя, фамилия, отчество, др.) и таблица 2(id, link, поле, значение)
Таблица 1 с таблицей 2 перевязаны 1.id=2.link
В таблице 2 «поле» - имя виртуального поля таблицы 1
Использую в своей программе квантум грид вьювы могут быть как КАРД так и ГРИД.
Нужно:
Привязать виртуальное поле к таблице 1.
Единственный вариант который я увидел это использование ExtLookupComboBox, но поскольку он Lookup эта конструкция не работает потому-то ему не к чему вязаться.
Как можно в виртуальное поле вставить этот Lookup и чтобы он жил своей жизнью (но показывал только те записи которые относятся к определенной записи из таблицы 1)
Добавлял, удалял, редактировал записи. Было бы еще неплохо чтобы вместо Lookup была просто таблица внутри ячейки!!!
Может кто сталкивался с таким и как то решил эту проблему!!!
Просто не хочется создавать лишние таблицы на форме. Просто вирт. полей может быть много.



Добавлено:

Цитата:
Один выход - переписывать сам cxGrid. Средств для внешней отрисовки DevExpress не предоставляет.

а на cxGrid'е не пробывали установить RootLevelStyles.Tab там ножно крутить текст!!! вот только помойму не увеличивается в размерах сам Tab.
а если поставить leveltabs.style в OneNote то он сам переворачивает текст
Автор: f3ka
Дата сообщения: 27.10.2008 16:55
skinka а в каком именно свойстве можно покрутить заголовок табов? RootLevelStyles.Tab.Font.Orientation? Так там крутиться текст и крутиться он очень странно... Да и при повороте текста не увеличивается высота заголовка таба, поэтому не годится...
Автор: skinka
Дата сообщения: 27.10.2008 18:09
я так понял что ты поставил табы с левой стороны????
там есть настройка их вида!!! вот некоторые из них когда с левой стороны (или с правой) переворачивают текст "leveltabs.style" - тут гляди это на самом гриде
Автор: Vstory
Дата сообщения: 27.10.2008 19:29
Добрый день! Вопрос по PivotGrid. Такая задача - по выбранной ячейке, нужно определить значение 2х полей по которым ячейка сгруппирована по строкам и по колонкам соответственно. Со строками - никаких проблем, делаю так:
// получаю координату
y := cxDBPivotGrid1.ViewData.FocusedCell.Y;
// по ней номер записи
y := cxDBPivotGrid1.ViewData.Rows[y].GroupItem.RecordIndex;
// считываю значение - поле cxDBPivotGrid1Field1 находится в области строк
mfo2 := cxDBPivotGrid1.DataController.GetDisplayText(y, cxDBPivotGrid1Field1.Index);

но как это сделать с колонками - никак не могу придумать ;(( Если есть у кого какие идеи - поделитесь пожалуйста!!! Спасибо!
Автор: Sufferer
Дата сообщения: 27.10.2008 23:34
Хелп! Бьюсь с TcxVerticalGrid Вер.3.27. Застрял на удалении/добавлении строк. После выполнения .Remove или .AddChild навигация с клавиатуры начинает порождать ошибки.
При этом визуально все нормально добавляется/удаляется, выделение мышью тоже нормально проходит.
Вот собственно код удаления/добавления строк. В чем дело?

Код:
procedure TForm19.SettingsKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
Var i: Integer;
Row: TcxMultiEditorRow;
begin
if not Assigned(Settings.FocusedRow) then Exit;
if not Settings.FocusedRow.HasChildren and (Settings.FocusedRow.Index <> 0)
then begin
case Key
of VK_INSERT: begin
Row := TcxMultiEditorRow(Settings.AddChild(Settings.FocusedRow.Parent, TcxMultiEditorRow));
for i := 0 to TcxMultiEditorRow(Settings.FocusedRow).Properties.Editors.Count-1
do Row.Properties.Editors.Add;
for i := Row.Index downto Settings.FocusedRow.Index+1
do Row.Parent.Rows[i].Index := Row.Parent.Rows[i-1].Index;
end;
VK_DELETE: Settings.Remove(Settings.FocusedRow);
end;
Settings.FocusRow(Row);
end;
end;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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