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

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

Автор: makz
Дата сообщения: 12.07.2006 12:05
vcrank
Ага, девэкс бесплатный .
Автор: vcrank
Дата сообщения: 12.07.2006 12:52
makz
По крайне мере известно, где есть фришный набор дев
Автор: makz
Дата сообщения: 13.07.2006 02:41
vcrank
ну так и fly рядом лежит.
Автор: IgorXI
Дата сообщения: 14.07.2006 07:30
Подскажите, как узнать какому объекту TcxGrid принадлежит TcxLevel, имея ссылку на компонент TcxLevel?
Автор: Alex47
Дата сообщения: 14.07.2006 09:05
IgorXI
Если речь о TcxGridLevel, то через property GridView привязка на View.
Через property Control привязка к cxGrid.
Автор: IgorXI
Дата сообщения: 14.07.2006 09:14
Alex47Спасибо.
Всё-таки сумел получить доступ через GetParentComponent()
Автор: gorwul
Дата сообщения: 14.07.2006 10:49
Как программно реализовать добавление условия (имя_поля IS NULL) в фильтр GridView.
Автор: golkanavt
Дата сообщения: 14.07.2006 11:04

Цитата:
Как программно реализовать добавление условия (имя_поля IS NULL) в фильтр GridView.


Код:
var
S, FilterText: string;
AItem: TcxCustomGridTableItem;
AItemList: TcxFilterCriteriaItemList;
.....
try
DataController.Filter.BeginUpdate;
AItemList := DataController.Filter.Root.AddItemList(fboOr);
AItemList.AddItem(AItem, foLike, FilterText, s);

AItem := Items[GetColumnByFieldName('YourFieldName').Index];
FilterText := '%' + s + '%';
AItemList.AddItem(AItem, foLike, FilterText, s);
finally
DataController.Filter.Active := true;
DataController.Filter.EndUpdate;
end;
Автор: gorwul
Дата сообщения: 14.07.2006 11:52
golkanavt

Спасибо за подробности.
Использование cxFilterOperatorKind - как раз и раньше было понятно,
не понятно как юзать оператор cxSFilterOperatorIsNull !
Автор: golkanavt
Дата сообщения: 15.07.2006 13:43
gorwul

Цитата:
не понятно как юзать оператор cxSFilterOperatorIsNull !

Элементарно, Ватсон:

Код:
AItemList.AddItem(AItem, foEqual, Null, '');
Автор: RedPromo
Дата сообщения: 18.07.2006 10:06
Вот может кому нужно Батник для компиляции DevExpress для BDS2006 и Delphi 7.
_http://rapidshare.de/files/26942798/Bat.rar.html
Писал сам все работает. Распаковать нужно в корень с папками компонентов Дева.
После прописать пути и Component / install pakadge / и выбираем все пакеты начинающиеся на dcl*.bpl.Правда есть маленькое но в BDS2006 при опции RUNTIME может потребовать перекомпиляции вручную некоторых пакетов. У меня на разных машинах разные пакеты требовало.


Автор: vshersh
Дата сообщения: 18.07.2006 10:28
RedPromo
А зачем изобретать велосипед?
Есть отличный инсталлях от feandy!
Всем рекомендую юзать именно его!
Автор: vcrank
Дата сообщения: 18.07.2006 11:57
RedPromo
Спасибо. Чуть позже протестирую. Очень утомительно было ручками ставить на BDS2006. У меня какая-то порезанная версия Delphi. Исталлятор её не видел
Автор: Lenoks
Дата сообщения: 20.07.2006 09:47
Пожалуйста, подскажите кто знает:
Задача следующая:
Я хочу задать пользовательскую прорисовку заголовка, так как все существующие стили меня не устраивают (хочу использовать стиль Flat, но при этом чтобы заголовки столбцов остались плоскими (в стиле UltraFlat)). Кроме того задаю свою иконку для сортировки и ХОЧУ ЗАДАТЬ СОБСТВЕННУЮ ИКОНКУ ДЛЯ ФИЛЬТРАЦИИ (при наведении курсора мыши на любой заголовок столбца в верхнем правом углу отображается иконка фильтрации, при покидании заголовка исчезает. Если к столбцу применен фильтр, то иконка будет видна, до тех пор пока по данному столбцу фильтр не отменят).
Делаю следующее:

private void advBandedGridView1_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
{
if (e.Column != null)
{
Rectangle r = e.Info.CaptionRect;
StringFormat sf = new StringFormat();
sf.Trimming = StringTrimming.EllipsisCharacter;
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
e.Info.Caption = "";
Rectangle sortBounds = Rectangle.Empty;
Rectangle filterBounds = Rectangle.Empty;
//Прорисовываю иконки для фильтрации
try
{
UpdateInnerElements(e, false, ref sortBounds);
}
finally
{
UpdateInnerElements(e, true, ref sortBounds);
}

if (!sortBounds.IsEmpty)
{
if (e.Column.SortOrder == ColumnSortOrder.None) return;
int i = 1;
if (e.Column.SortOrder == ColumnSortOrder.Descending) i = 0;
e.Graphics.DrawImageUnscaled(SortingGlyphsImageList.Images[i], r.X - 5 + (e.Column.Width - SortingGlyphsImageList.ImageSize.Width), r.Y + (r.Height - SortingGlyphsImageList.ImageSize.Height));
}
//Если к колонке применен фильтр, тогда иконка отображается
if (e.Column.FilterInfo.Type != DevExpress.XtraGrid.Columns.ColumnFilterType.None)
e.Graphics.DrawImageUnscaled(SortingGlyphsImageList.Images[2], r.X - 5 + (e.Column.Width - SortingGlyphsImageList.ImageSize.Width), r.Y);
}
e.Graphics.DrawString(e.Column.Caption, e.Appearance.Font, Brushes.White, new Rectangle(r.X - 3, r.Y - 2, e.Column.Width, r.Height + 2), sf);
e.Graphics.DrawRectangle(Pens.White, new Rectangle(r.X - 5, r.Y - 2, e.Column.Width, r.Height + 4));
}
e.Handled = true;

}

private void UpdateInnerElements(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool restore, ref Rectangle sortBounds)
{
foreach (DevExpress.Utils.Drawing.DrawElementInfo item in e.Info.InnerElements)
if (item.ElementPainter is DevExpress.Utils.Drawing.SortedShapeObjectPainter)
if (restore)
item.ElementInfo.Bounds = sortBounds;
else
{
sortBounds = item.ElementInfo.Bounds;
item.ElementInfo.Bounds = Rectangle.Empty;
}
}



Как сделать, чтобы иконка фильтрации появлялась/исчезала при наведении/покидании курсора мыши на заголовок столбца?
Автор: ArtemiyUO
Дата сообщения: 20.07.2006 13:58
Может быть обрабатывать онмоуземув, потом делать хиттест на предмет нахождения мыши в заголовке столбца ну и вызывать апдейт (перерисовку) грида, а если есть возможность более тонкую - например только столбца или заголовка.
Автор: Alex47
Дата сообщения: 20.07.2006 14:01
Даю рабочую процедуру отрисовки заголовка колонки с вертикальным текстом для QGrid5. Отрисовываются кнопки сортировки и фильтра (В Knowledge Base на сайте DevExp есть вариант, но без поддержки сортировки). Процедуру можно вызывать в обработчике CustomDrawHeader.

procedure DrawGridHeaderVerticalCaption(ACanvas: TcxCanvas; AViewInfo:
TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
Size: TSize;
OldFont: TLogFont;
LogFont: TLogFont;
ARect: TRect;
I: Integer;
AClipRegion: TcxRegion;
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;
if Size.cx > ARect.Bottom - ARect.Top then
begin
ACanvas.Font.Handle := CreateFontIndirect(OldFont);
Exit;
end;
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds,
Neighbors, Borders, cxbsNormal, taCenter, vaCenter, False, False, '',
ACanvas.Font, clNone, Params.Color);
with TextAreaBounds do
if Left < Right then
ACanvas.Canvas.TextRect(TextAreaBounds,
(Left + Right - Size.cy) div 2,
(Top + Bottom + Size.cx) div 2,
Column.Caption
);
AClipRegion := ACanvas.GetClipRegion;
try
for i := 0 to AreaViewInfoCount - 1 do
AreaViewInfos[i].Paint;
finally
ACanvas.SetClipRegion(AClipRegion, roSet);
end;
ADone := True;
end;
end;
Автор: xitsmex
Дата сообщения: 22.07.2006 09:49
Здравствуй, ALL!
Есть вопрос: никто не подружил DevExpress хоть малость с UNICODE, а то имеется проблема, описанная здесь: http://forum.ru-board.com/postings.cgi?action=edit&forum=33&topic=6679&postno=597, может, кто-то уже сталкивался?
Автор: unfreqient
Дата сообщения: 24.07.2006 07:57
У меня такая засада: не могу добраться до свойства GroupByBox у Grid4, конкретно хотелось бы заменить надпись "Drag a column header here to group by that column" на аналогичную по смыслу на русском. Также не понимаю, как русифицировать форму фильтра. Может у кого получилось?
Автор: yuish
Дата сообщения: 24.07.2006 08:44
unfreqient

вариантов два, или ставишь девок от фенди с включенной галочкой Русские ресурсы, или находишь cxGridStrs.pas - переводишь там то что надо, перекомпелишь, и заменяешь то что вышло в тенх местах где лежал гридовские бпл и дсу
Автор: Alex47
Дата сообщения: 24.07.2006 09:00
xitsmex

Цитата:
Есть вопрос: никто не подружил DevExpress хоть малость с UNICODE

В конце прошлого года (19-21 декабря) Eugene Goldberg в новостной группе
devexpress.public.vcl.quantumgrid5 предлагал протестировать его вариант UNICODE поддержки для cxGrid5:
"RAR archive file contains simple Delphi application which connects to FireBird 1.5 database (embedded firebird DB) to test Unicode entry/display/storage with QG5. I tested this on Windows XP and Windows Server 2003, the database currently contains unicode text on Divehi.
Any testing results would be greatly appreciated.
The inner editor is implemented as a descentant class, but for cxGrid i have modified the original code.
This inner editor class can display both non-Unicode text and Unicode stored as UTF-8. Other storage formats can be added easily...
Even without the database, you should be able to input Unicode in not-dbaware TcxTextEdit."

Я скачал его архивы, запустил exe, покликал мышкой, вроде работает...
Советую посмотреть внимательнее, можно попробовать связаться с автором, email российский: egold@mts-nn.ru

Автор: unfreqient
Дата сообщения: 24.07.2006 09:38
yuish
Спасибо, большое. Второй вариант, пожалуй, надо испробовать.
Автор: AlexPetrovich
Дата сообщения: 24.07.2006 11:10
unfreqient
Все гороздо проще :
cxSetResourceString(@scxGridGroupByBoxCaption , '< Перетяните сюда заголовок колонки для групировки >');

Автор: unfreqient
Дата сообщения: 24.07.2006 11:49
AlexPetrovich, сенкс!
Вот оно "scxGridGroupByBoxCaption", я знал, что оно есть. Просто хелп у меня кривой.
Автор: JackOff
Дата сообщения: 24.07.2006 12:41
RedPromo

Спасибо за батнички, но есть и ложка дегтя:
1. в архиве нехватат файла clean.bat я так понимаю, он вычищает старые bpl’ки
2. setenv.bat написан только для D7 туда надо добавить путь до D2005\2006







Автор: unfreqient
Дата сообщения: 24.07.2006 15:00

Цитата:
Все гороздо проще :
cxSetResourceString(@scxGridGroupByBoxCaption , '< Перетяните сюда заголовок колонки для групировки >');

ещё нужно подключить модуль cxGridStrs, по такому же принципу можно локализовать форму фильтра: cxSetResourceString(@cxSFilterAddGroup, 'Gruppe hinzf&#252;gen');
Автор: Virto
Дата сообщения: 25.07.2006 11:57
Привет всем! Объясните пож-ста такую фишку... При наборе текста в TcxRichEdit(DevExpress) , CursorPos должен возвращать текущую позицию курсора в контроле...
Возвращает всегда "НОЛЬ"... В чем может быть дело
Автор: RedPromo
Дата сообщения: 25.07.2006 13:55
JackOff
Ага исправляюсь, это я значит не стой папки взял. Все готово только
setenv.bat генерится сам с помощу CompUtil.exe и параметра указывающего на версию delphi.
Clean.bat тоже включил в архив.
_http://rapidshare.de/files/26942798/Bat.rar.html
Просто у меня не получалось одной командой компилить и obj файлы и bpl.А все они без dcu жить не могут вот я и убрал удаление.Вобще батники просты до некуда. Править очень легко. Все таки когда выпустят новую версию DevExpress наверно нужно чтото сделать по серезнее чтобы сразу прописывало в реестр библиотеки. Правда тута писали что от Feandy есть инсталятор нужно посмотреть а то велосипед не очень то хочется изобрести.


Автор: GUNski
Дата сообщения: 25.07.2006 19:06
Прив всем! Мож кто подскажет. Как в гриде при группирвке по одному/нескольким полям узнать зафокушенная строка является записью из ДатаСета или группирующей строкой?
Сэнкс.
Автор: Alex47
Дата сообщения: 25.07.2006 22:27
GUNski
В обработчике View OnFocusedRecordChanged:

if AFocusedRecord is TcxGridGroupRow then...
или:
if AFocusedRecord is TcxGridDataRow then...

Подробнее можно посмотреть в Help.
Автор: unfreqient
Дата сообщения: 26.07.2006 12:42
Хотелось бы сделать на Grid что-то вроде просмотрщика изображений в папке. Изображений несколько тысяч, хотелось бы грузить по несколько штук. Сам грид нравится тем, что можно изменять величину ячейки + подходящий к остальной части программа визуальный стиль. В примерах есть подобное через ImageList, но этого хотелось бы избежать.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Kylix


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