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

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

Автор: neznayka3
Дата сообщения: 01.05.2012 20:55
как ускорить прорисовку TdxLayout? при показе формы, видно как она прорисовывается. на форме около 50 контролов.
Автор: Cryogen2003
Дата сообщения: 02.05.2012 08:33
neznayka3
Я думаю это общая проблема у компонентов Девок.
На форме 6 groupbox и около 70 контроллов - без использования скинов еле заметно перерисовка, а если использовать скины, то перерисовка формы при старте очень заметна при встроенной видюшке (На моем рабочем компе без использования скинов форма мгновенно отрисовывается, а при использовании скинов еле-еле заметно как отрисовывается)
Автор: dimm78
Дата сообщения: 02.05.2012 09:37

Цитата:
как ускорить прорисовку TdxLayout? при показе формы, видно как она прорисовывается. на форме около 50 контролов.

на офсайте обещали решить проблему в ближайшей новой версии
Автор: neznayka3
Дата сообщения: 02.05.2012 10:16
почему текст не прорисовывается?

Код: procedure TdmOrderLite.dbbvOrderExploreLite_nameCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
vRect: TRect;
vImg: Integer;
begin
vImg := VarAsType(AViewInfo.RecordViewInfo.GridRecord.Values
[dbbvOrderExploreLite_status.Index], varInteger);
vRect.Left := AViewInfo.Bounds.Left + 18;
vRect.Top := AViewInfo.Bounds.Top;

ACanvas.FillRect(AViewInfo.Bounds);

case vImg of
45:
ACanvas.DrawImage(dmCommon.il16, AViewInfo.Bounds.Left,
AViewInfo.Bounds.Top, 3, true);
46:
ACanvas.DrawImage(dmCommon.il16, AViewInfo.Bounds.Left,
AViewInfo.Bounds.Top, 425, true);
47:
ACanvas.DrawImage(dmCommon.il16, AViewInfo.Bounds.Left,
AViewInfo.Bounds.Top, 44, true);
48:
ACanvas.DrawImage(dmCommon.il16, AViewInfo.Bounds.Left,
AViewInfo.Bounds.Top, 191, true);
end;
ACanvas.DrawTexT(AViewInfo.Text, vRect, cxAlignLeft, true);

ADone := true;
end;
Автор: ant0ni02004
Дата сообщения: 02.05.2012 11:04
neznayka3

Цитата:
почему текст не прорисовывается?

потому что vRect.Left и vRect.Top определены, а vRect.Right и vRect.Bottom нет
Автор: Chukotka
Дата сообщения: 02.05.2012 13:10
Установлены Devx 2011.2.5 FS, в каталоге ExpressSkins Library нет ни подкаталога Binary Skin Files, ни соответственно, skinres-файлов.
У кого есть allskin.skinres файл для этой версии, просьба поделиться.
Автор: makz
Дата сообщения: 03.05.2012 07:27
2011.2.5 - проблема с checkbox'ом: не выводит текст DisplayChecked, DisplayUnсhecked, DisplayGrayed. Кто-нибудь знает в чем там собака порылась?
Автор: andreybear
Дата сообщения: 03.05.2012 15:03
makz

Цитата:
2011.2.5 - проблема с checkbox'ом: не выводит текст DisplayChecked, DisplayUnсhecked, DisplayGrayed. Кто-нибудь знает в чем там собака порылась?

Куда не выводит?

Цитата:
TcxCustomCheckBoxProperties.DisplayChecked

Specifies the text representing the checked state.

property DisplayChecked: WideString;

Description
The DisplayChecked property specifies the text which represents a check box set to the checked state. DisplayChecked is used in specific situations such as exporting a grid control with check boxes as in-place editors and within the filter dropdown list for a grid column assigned a check box as an editor.
Автор: Baklan_vs
Дата сообщения: 03.05.2012 16:51
Уважаемое сообщество, у меня TcxImage, при попытке сделать его видимым вылетает ошибка:
"invalid pointer operation GDI+(Code: 4)"
Описание почему так происходит я не нашол.
Порядок действия такой:
1) Основной поток приложения стартует с помощью функции CreateThread(), процедуру как дополнительный поток.
2) В конце выполнения процедуры, TcxImage.Visible := True; <- и вот на этой строчке вылетает ошибка.
3) Пытался эту строчку вынести в основной поток. не помогает.
Автор: mdid
Дата сообщения: 03.05.2012 18:13
Baklan_vs
скины юзаете? у меня была проблема с кофейным..выставление другого скина или отсутствие оного мне помогло
Автор: makz
Дата сообщения: 04.05.2012 03:14
andreybear
Ясно, как всегда поленился лезть в help. Я то хотел чтоб надпись менялась, как в IDE например: галку ставишь пишет "True". Ладно, буду caption менять по OnEditValueChanged.
Автор: X11
Дата сообщения: 04.05.2012 14:30
Странно ведёт себя сxBarEditEdit.
Выбрал тип ComboBox.
Как теперь получить значение после закрытия?
comboUsers.Text;
comboUsers.EditValue
comboUsers.EditingValue
всё время выдает пустоту или ноль.

вот свойства:
Автор: neznayka3
Дата сообщения: 05.05.2012 06:19
как вывести картинку в TcxDBLookupComboBox перед текстом? CustomDraw не нашел.
Автор: exteris
Дата сообщения: 05.05.2012 08:16
neznayka3
Можно в run-time повешать свой обработчик на cxDBLookupComboBox.ActiveProperties.OnDrawItem
Автор: VZolotarev
Дата сообщения: 05.05.2012 14:56
Добрый день.
Ни как не получается отредактировать значение в определенном столбце у всех выбранных записей в cxGrid.
Пытаюсь так:

var
i:integer;
ARecord :TcxCustomGridRecord;
ColumnID:integer;
begin

for I := 0 to cxGrid1DBTableView1.Controller.SelectedRecordCount - 1 do begin
ARecord := TcxGridDataRow(cxGrid1DBTableView1.Controller.SelectedRecords[i]);
ColumnID := cxGrid1DBTableView1.GetColumnByFieldName('FLAG_MAIN').index;
cxGrid1DBTableView1.DataController.SetValue(cxGrid1DBTableView1.Controller.SelectedRows[i].RecordIndex,ColumnID,ARecord.Values[cxGrid1DBTableView1.Columns[ColumnID].Index]*-1);
end;

Визуально на форме данные изменяются, но стоит сделать refresh у привязанного набора данных или ApplyUpdates и данные возвращаются к своему первоначальному виду.

Прочитал о похожих проблемах на этом форуме, но так и не понял что я делаю не правильно.
Автор: emo
Дата сообщения: 06.05.2012 04:33
VZolotarev
А какой набор данных? Т.е. что за датасет?
Если изменения не сохраняются, значит не делается Post этого датасета.
Автор: marser
Дата сообщения: 06.05.2012 16:11
VZolotarev

Цитата:
но так и не понял что я делаю не правильно.

Если был бы не DB, а обычный cxGridTableView, то все правельно делаете. А с cxGridDBTableView так не получиться. Нужно установить фокус (DataController.FocusedRecordIndex) на запись SelectedRecords[i], перевести DatаSet в состояние редактирования, изменить значение колонки (Column.EditValue := ) и сделать Post. И так для каждой выделенной записи.
Автор: Baklan_vs
Дата сообщения: 10.05.2012 10:43
У меня возникла проблема использовал Dev56
Обновился до "devcl20110204sde.exe"
И в файле dxGDIPlusAPI.pas пропали методы:
dxInitializeGDIPlus,
dxFinalizeGDIPlus
Теперь DLL вылетает с ошибкой без вызовов этих методов.
Что изменилось и как теперь решать проблему с вызовом DLL на которой присутствуют Dev-ки?
Автор: X11
Дата сообщения: 10.05.2012 11:07

Цитата:
И в файле dxGDIPlusAPI.pas пропали методы:


поискать не сложно?
уже решали данную проблему, да и на Их сайте тоже есть описание
Автор: mdid
Дата сообщения: 10.05.2012 11:48
что то я завис...надо в гриде (обычный тейбл) загнать в одно поле изображение...по логике полез к BlobEdit...ValueType выставил Blob....а вот как загнать туда данные не пойму...в editValue стрим не хочет ложиться а в TcxBlobEditProperties() не нашел ничего напоминающего load или stream
Автор: Baklan_vs
Дата сообщения: 10.05.2012 12:07

Цитата:
поискать не сложно?
уже решали данную проблему, да и на Их сайте тоже есть описание

Можете ткнуть носом в решение проблемы?
На их сайте не нашол решение проблемы которое было-бы актуально.
Автор: X11
Дата сообщения: 10.05.2012 12:11
В Properties выбери Image

я из файла загружаю так:

if FileExists(sFN_Photo) then
Values[ARowInfo.RecordIndex, iPhotoFieldIndex] := ImageFileToString(sFN_Photo);
//iPhotoFieldIndex индекс поля для хранения фоток
поле с фотками ни к чему не привязано

....

function ImageFileToString(AFileName: string): string;
var
vStream: TFileStream;
vString: string;
begin
vStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyNone);
try
vStream.Position := 0;
SetLength(vString, vStream.Size);
vStream.ReadBuffer(Pointer(vString)^, vStream.Size);
finally
vStream.Free;
end;
Result := vString;
end;

Добавлено:
Baklan_vs
просто поищи в исходниках, где объявлено и тот модуль подключи

Добавлено:

Цитата:
У меня возникла проблема использовал Dev56
Обновился до "devcl20110204sde.exe"
И в файле dxGDIPlusAPI.pas пропали методы:
dxInitializeGDIPlus,
dxFinalizeGDIPlus
Теперь DLL вылетает с ошибкой без вызовов этих методов.
Что изменилось и как теперь решать проблему с вызовом DLL на которой присутствуют Dev-ки?



ЕМНИП, то нужно
1. подключить dxCore
2. написать

initialization
dxInitialize;

и

finalization
dxFinalize

Добавлено:
вот ссылка:
http://forum.ru-board.com/topic.cgi?forum=33&topic=10884&start=2820#14
Автор: mdid
Дата сообщения: 10.05.2012 12:16
Baklan_vs
https://www.google.com/search?source=ig&hl=ru&rlz=&q=dxInitializeGDIPlus&oq=dxInitializeGDIPlus&aq=f&aqi=g-s1&aql=&gs_l=igoogle.3..0i10.582.582.0.1305.1.1.0.0.0.0.153.153.0j1.1.0...0.0.
первая ссылка

Цитата:
2. Breaking Change – The dxGdiPlusInitialize and dxGdiPlusFinalize procedures have been moved from the dxGDIPlusClasses unit to the dxCore unit, and renamed to dxInitialize and dxFinalize. In applications with custom skins, specify the dxCore unit in the uses clause."

X11
пасиба
Автор: X11
Дата сообщения: 10.05.2012 12:17
неужели в гугле трудно было ввести слово: dxInitializeGDIPlus и открыть первую же ссылку на Их сайт?
Автор: Baklan_vs
Дата сообщения: 10.05.2012 12:23
mdid
X11
Спасибо
Автор: AlexPetrovich
Дата сообщения: 10.05.2012 13:26

Цитата:
VZolotarev

Цитата: но так и не понял что я делаю не правильно.


Если был бы не DB, а обычный cxGridTableView, то все правельно делаете. А с cxGridDBTableView так не получиться. Нужно установить фокус (DataController.FocusedRecordIndex) на запись SelectedRecords, перевести DatаSet в состояние редактирования, изменить значение колонки (Column.EditValue := ) и сделать Post. И так для каждой выделенной записи.

А еще лучше собрать ID выделенных записей, а потом обновить их все в одном запросе (используя например в WHERE ID in (...) )) и потом уже сделать один refresh.
Автор: neznayka3
Дата сообщения: 11.05.2012 06:33
как быстро удалить скины из проекта?
Автор: mdid
Дата сообщения: 11.05.2012 08:37
neznayka3
никак...только руцями...разве что вы напишите прогу которая ищет скины в файлах форм
Автор: X11
Дата сообщения: 14.05.2012 09:13
Вопрос по cxGrid`у и совмещению стилей.
В событии OnGetContentStyle выполняется проверка двух булевых полей, если в первом поле ДА, то стиль1 применяется, а если во втором поле ДА, то стиль2 применяется. Если в обоих полях ДА, то всё равно стиль2 применяется, т.к. он последним применяется.
А как бы слепть (совместить) применение обоих стилей? Только создать третий?

вот код


Код:
procedure TfmScanner.Grid1StylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
out AStyle: TcxStyle);
Var
Style1: TcxStyle;
begin
if AItem = nil then exit;

if ARecord.Values[Grid1Med.Index] = true then
AStyle := cxStyleMed;

if ARecord.Values[Grid1CP.Index] = true then
AStyle := cxStyleHost;

...
Автор: mdid
Дата сообщения: 14.05.2012 09:50
X11
а как? стиль это класс наполненный данными...как их совместить?..да и принцип совмещения для каждого может быть свой...так что скорее всего только созданием третьего стиля

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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