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

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

Автор: exteris
Дата сообщения: 16.07.2013 10:49

Цитата:
Но ведь ничего криминального в том, что я SyncMode отключил - нет?

Нужно будет учитывать, что при перемещении по гриду, в подключенном к нему датасете курсор не будет перемещаться.

Автор: Darl
Дата сообщения: 16.07.2013 20:06
G787

CustomDraw, StyleController, Style - вроде что-то из этого должно помочь.
Автор: G787
Дата сообщения: 16.07.2013 20:09
пардон не то спросил,

как выйти на канвас итемов cxCheckListBox ?
Автор: reenoip
Дата сообщения: 17.07.2013 06:28
exteris
спасибо, теперь всё окончательно прояснилось (+ ещё тут пошаманил немного).
Автор: AndyZorg
Дата сообщения: 17.07.2013 10:08
Народ!
У кого есть skindll из шапки? Линк мертвый, у кого есть сие чудо, залейте на обменник, плиз!
Автор: reenoip
Дата сообщения: 18.07.2013 08:59
Ещё одна напасть: не группируются значения в выпадающем фильтре заголовков cxGrid (но это уже в другом проекте, с предыдущим вопросом никак не связанным). Колонка, правда, привязана к вычисляемому полю в Table - может, в этом всё дело? Прошёлся по опциям проблемной колонки грида - вроде всё как надо, но группировка не работает:

Автор: X11
Дата сообщения: 18.07.2013 10:21
Вспоминай, что менял в настройках сетки. Кинь рядом новую сетку и сравни свойства.
Автор: reenoip
Дата сообщения: 18.07.2013 11:50
Кинул. Проверил (тупо все опции перебрал, от одной к другой). Соседние колонки группируют, проблем нет. Сдаётся мне, это именно из-за привязки к вычисляемому полю, т.к. если убрать вычисляемое и назначить обычное - группировка пашет.

Добавлено:
Забыл добавить: DE 2012 2.6 + DXE2 32-bit.
Автор: AlexCoRu
Дата сообщения: 18.07.2013 14:01
reenoip, если не делать вычисляемое поле, а добавить в грид unbound колонку, в ней по событию OnGetDataText получать значение?
Сам не пробовал, но вдруг.

Добавлено:
Искал решение своей проблемы, на http://www.sql.ru/forum/1011851/peremeshhenie-ukazatelya-vo-vlozhennom-cxgrid тоже с этим сталкнулись. В описании повторятся не буду всё как там. У него, видимо, gridmode = false и происходит при нажатии кнопки навигатора Cancel (NBDI_CANCEL). Это можно обойти вставив в обработчик:

Код: ADetailView.DataController.BeginLocate;
ADetailView.DataController.Cancel;
ADetailView.DataController.EndLocate;
Автор: G787
Дата сообщения: 18.07.2013 21:05

TdxColorEdit
Как в меню добавить свои кнопки ?
Можно ли сделать ввод своего цвета как в edit ?



TCxColorComboBox
Можно ли сделать ввод своего цвета как в edit ?
Автор: X11
Дата сообщения: 21.07.2013 15:20
У меня возникла проблема с моим же кодом.


Цитата:
я реализовал так
1. Процедура ForEachRow (см. документацию)

Код:

dbgApart - TcxGridDBTableView
dbgApartPhoto - колонка для вывода изображения, properties := Image, properties.GraphicClassName := TdxSmartImage,

procedure TfmApartSearch.DoLoadImageForEachRow(ARowIndex: Integer;
ARowInfo: TcxRowInfo);
Var
sFN_Photo, sPhotoPath: string;
iPhotoFieldIndex, iIdFieldIndex: integer;
begin
// загружаем в каждую запись грида(поле Фото) эскизы, на ходу создавая эскизы, если их нет.
with dbgApart.DataController do
begin
iPhotoFieldIndex := dbgApartPhoto.index;
iIdFieldIndex := dbgApartID.Index;
sPhotoPath := fmMain.sPhotoApart;

sFN_Photo := IncludeTrailingPathDelimiter(sPhotoPath + VarToStr(Values[ARowInfo.RecordIndex, iIdFieldIndex])) + '___thumbnail.bmp';

//если включен параметр "всегда пересоздавать эскизы", то удаляем существующий, чтобы создать новый
if bAlwaysRecreateThumbnails then DeleteFile(sFN_Photo);

//если эскиза не существует, то создаём его из первого файла с именем "_thmb.*"
if not FileExists(sFN_Photo) then
GetThumbnailFromImageFile(sPhotoPath + VarToStr(Values[ARowInfo.RecordIndex, iIdFieldIndex]));// ищем файл, имя которого = _thmb.*

//если эскиза не существует всё равно, то создаём его из первого попавшего подходяещего файла с фотоснимком
if not FileExists(sFN_Photo) then
GetThumbnailFromFirstImageFile(sPhotoPath + VarToStr(Values[ARowInfo.RecordIndex, iIdFieldIndex]));

if FileExists(sFN_Photo) then
Values[ARowInfo.RecordIndex, iPhotoFieldIndex] := ImageFileToString(sFN_Photo);

if Assigned(fmWait) then
begin
fmWait.cxProgressBar1.Position := ARowInfo.RecordIndex;
Application.ProcessMessages;
end;// if Assigned(fmWait) then
end;// with dbgArenda.DataController do
end;



После открытия таблицы загружаю фото из файлов


Код:

//если колонка для фото видима и разрешено использование фото, то создаем и показывем эскизы
if (dbgApartPhoto.Visible) and (fmMain.bUsePhoto) then
begin
fmWait := TfmWait.Create(self);

try
fmWait.cxProgressBar1.Position := 0;
fmWait.cxProgressBar1.Properties.Max := dbgApart.DataController.RecordCount;
fmWait.cxProgressBar1.Visible := true;
fmWait.Show;
Application.ProcessMessages;
dbgApart.DataController.BeginUpdate;
dbgApart.DataController.ForEachRow(False, DoLoadImageForEachRow);

if bAutoRowHeightToThumbHeight then
dbgApart.OptionsView.DataRowHeight := iThumbnailMaxHeight;//максимальная высота строки

finally
dbgApart.DataController.EndUpdate;
FreeAndNil(fmWait);
end;
end;// if (dbgArendaPhoto.Visible) and (fmMain.bUsePhoto) then




остальное


Код:

procedure JpegToBmp(jpg: TJPEGImage; bmpDest: TBitmap);
procedure BmpToBmp(bmpSrc, bmpDest: TBitmap);
procedure PngToBmp(pngSrc: TdxPNGImage; bmpDest: TBitmap);
procedure MakeThumbnail(aFileName: string);
procedure MakeThumbnailJpg(aFileName: string);
procedure MakeThumbnailBMP(aFileName: string);
procedure MakeThumbnailPNG(aFileName: string);
function GetThumbnailFromFirstImageFile(dir: string): string;//взять первый попавшийся файл
function GetThumbnailFromImageFile(dir: string): string;// взять файл, имя которого _thmb.*
function ImageFileToString(AFileName: string): string;



в файле
http://www.onlinedisk.ru/file/977394/


надеюсь поможет


вот http://www.forum.ru-board.com:9000/topic.cgi?forum=33&topic=10884&start=4460#14

проблема в том, что ошибок нет, но и картинки не отображаются.
тогда была версия девок другая, 2011.1.5 вроде, сейчас уже 2012.2.4

вся хитрость была в этой процедуре
Values[ARowInfo.RecordIndex, iPhotoFieldIndex] := ImageFileToString(sFN_Photo);

тут преобразовывалось изображение как бы в текст, чтобы ячейка смогла отобразить картинку
код давно не трогал, не знаю, в какой момент впервые проявила себя проблема

Добавлено:
Нашёл проблему.
DisableControls/EnableControls;
Нужно перед загрузкой картинок выполнять EnableControls;
Автор: Marcello_TLT
Дата сообщения: 22.07.2013 22:03
Снова вопрос про PivotGrid.
В пивоте отражаются данные в сравнении с предыдущим годом. Данные получаются простым запросом по двум одинаковым диапазонам дат - за текущий и за предыдущий год. Затем пивот "сам" группирует их так, как показано на картинке. Возможно ли добавить слева от столбца ColumnGrandTotal (выделено красной линией) еще один столбец (некий Custom Grand Total), в котором отобразить процентное изменение 2013 к 2012 году?
Автор: AlexCoRu
Дата сообщения: 22.07.2013 22:15
X11, попробуй использовать для конвертации графики TdxSmartImage. Посмотри модуль dxGDIPlusClasses, там много интересного, в т.ч. и файлы грузят в WideString.
Я вот наваял свой TWICBitmap из WICImagingFactory, но потом от него отказался. Девовский и быстрее, да и зачем городить если девовский в девовских проектах всё-равно в коде будет.
Автор: Marcello_TLT
Дата сообщения: 24.07.2013 09:16
Не могу понять как работает SummaryType = stAverage в TcxPivotGrid, который на картинке выставлен у поля Europe. Если среднее stAverage считать с учетом количества (поле Количество с stSum), то в Excel среднее получится 286,46. Если без учета количества (просто как среднее значение 5 ячеек поля Europe), то 297,60. Откуда TcxPivotGrid берет 289,16? В OptionsData стоит CalculationBase = cbRawData, SummaryNullIgnore = true, VariationNullIgnore = true.



Разобрался. В пивоте еще есть поля, которые и влияют на среднее значение. Придется принять такое, на первый взгляд, не очевидное поведение...
Автор: serg87i
Дата сообщения: 24.07.2013 10:20
Доброго времени суток. Подскажите как на c++ организовать заполнение Items в CxGrid ComboBox. Не могу разобраться. Спс.
Автор: G787
Дата сообщения: 26.07.2013 19:11
Как у dxRibbon1 менять скин ?
Автор: G787
Дата сообщения: 28.07.2013 02:52
Эх, сам себе помогу:

в uses обязательно должен быть dxSkinsdxRibbonPainter (которого по дефолту почему-то не бывает) и скин на который хотим установить (автоматом скин в uses не добавляется если его там не было).
Автор: Roman85R31
Дата сообщения: 28.07.2013 22:02
Здравствуйте.
Подскажите, пожалуйста, как в cxGrid реализовать следующую штуку:
http://img59.imageshack.us/img59/924/u5kx.png
То есть, при нажатии на самую левую ячейку в заголовке - должен появляться список столбцов с возможностью выбора, какие их них отображать.
Как понял, эта штука называется "фильтр заголовков". Не разобрался, как она реализуется.
Автор: X11
Дата сообщения: 29.07.2013 09:09
Дожились... Свойства изучить совсем лень?
OptionsCustomize.ColumnsQuickCastomization
Автор: X11
Дата сообщения: 29.07.2013 11:56
Вопрос по cxGrid.
В сетке есть колонка, например, TcxCheckBox.
В событии PropertiesChange как можно узнать какой вьюхе принадлежит sender
Хочу в событии OnChange написать что-то вроде


if TcxGridTableView(Sender).datacontroller.IsEditing then
begin
TcxGridTableView(Sender).datacontroller.Post;

только вместо Sender нужно узнать и подставить правильный TcxGridTableView
Автор: MagistrAnatol
Дата сообщения: 29.07.2013 12:01
Народ, подскажите - в dxTileControl d 13.1.2 добавили возможность изменения скорости открытия фреймов(форм) , вроде как обещали добавить, но я в упор не вижу
Автор: marser
Дата сообщения: 30.07.2013 06:50
X11

Цитата:
В сетке есть колонка, например, TcxCheckBox.
В событии PropertiesChange как можно узнать какой вьюхе принадлежит sender

Напишите в событии ShowMessage(TcxCustomEdit(Sender).Parent.ClassName) и сразу все станет понятно: TcxGridSite(TcxCustomEdit(Sender).Parent).GridView
Автор: pionerabc
Дата сообщения: 30.07.2013 09:17
Добрый день. Может кто подскажет.
На форме три cxGrida, каждый связана со своим datasourcem ; datasource связаны с ADOquery ; гриды между собой пытаюсь связать запросами по ключевым столбцам в таблицах (связь получается один ко многим) .... но как то всё это мне кажется корявенько .... можно ли както сразу назначать связи по ключевым столбцам ?
Автор: X11
Дата сообщения: 30.07.2013 09:35
marser, спасибо.
И вот ещё:

Код: TcxCustomGridView(TComponent(Sender).Owner)
Автор: G787
Дата сообщения: 02.08.2013 11:49
Как загрузить картинку в Image cxGrid-a ?


И опять сам себе помогу

Процедура устанавливает транспарентную Png из cxImageList-а в колонку с cxImage


Код:
uses dxGDIPlusClasses, cxGeometry, cxGraphics ...

procedure SetRecordPictureFromImageList( ADataController: TcxCustomDataController;
AImageList : TcxImageList;
AImageIndex : Integer;
ARecordIndex : Integer;
AColumnIndex : Integer);

procedure Picture2Text(APNGImage: TdxPNGImage; var AValue: AnsiString);
var AStream: TMemoryStream;
begin
AStream := TMemoryStream.Create;
try
APNGImage.SaveToStream(AStream);
AStream.Position := 0;
SetLength(AValue, AStream.Size);
AStream.ReadBuffer(AValue[1], AStream.Size);
finally
AStream.Free;
end;
end;

procedure ExportBitmap(ABitmap: TBitmap);
var APNGImage: TdxPNGImage; AValue: Ansistring;
begin
APNGImage := TdxPNGImage.Create;
try
APNGImage.SetBitmap(ABitmap);
Picture2Text(APNGImage, AValue);
finally
APNGImage.Free;
end;
ADataController.Values[ARecordIndex, AColumnIndex] := AValue;
end;

var AExportImage: TcxBitmap;
begin
AExportImage := TcxBitmap.CreateSize(AImageList.Width, AImageList.Height, pf32bit);
AExportImage.Transparent := True;
try
AImageList.GetImage( AImageIndex, AExportImage );
ExportBitmap(AExportImage);
finally
AExportImage.Free;
end;
end;

Автор: serg87i
Дата сообщения: 02.08.2013 11:53
Вот мой блог http://serg87i.blogspot.com/ кому интересно сюда будут ложится всякие полезности при работе c девками. Добро пожаловать.
Автор: X11
Дата сообщения: 02.08.2013 12:13
Тогда уже я скину ссылку
http://www.sql.ru/blogs/x11

Добавлено:
Только у меня не на сях, а на Delphi
Автор: X11
Дата сообщения: 02.08.2013 14:51
Не могу нигде найти, какие типы у полей должны быть для TcxSchedulerDBStorage -> TcxSchedulerDBStorageFieldNames
Там аж 24 поля. Часть из полей типа *Id*, *Index* понятно каких типов, а остальные?
В справке не нашёл

Добавлено:
всё, дали подсказку
ms-help://borland.bds5/ExpressScheduler.bds5/ExpressScheduler/Bound_Mode.htm
Автор: exteris
Дата сообщения: 02.08.2013 15:16

Цитата:
Вот мой блог


Цитата:
Тогда уже я скину ссылку

С девками можно всю жизнь этот блог наполнять.)

Ну и до кучи, если кто не знает база знаний самих Девов. Есть много полезного, если получится откопать.
www.devexpress.com/Support/Center
Автор: G787
Дата сообщения: 03.08.2013 03:29
Имеется два cxGridBandedTableView - level1 и level2

Как в добавить запись на второй уровень для записи первого уровня?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


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