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

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

Автор: xokc
Дата сообщения: 15.01.2006 10:09
PocoBOR

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

Если речь идет о значениях не полей БД, а столбцов грида, то лучше объединять их в обработчике события OnGetDisplayText или OnGetDataText для соответсвтвующей колонки грида:

procedure TMainForm.ResColGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: string);
begin
AText := VarToStrDef(ARecord.Values[Col1.Index], '') + VarToStrDef(ARecord.Values[Col2.Index], '');
end;
Автор: programmist27
Дата сообщения: 15.01.2006 18:51
Помогите кто может!

У меня сразу несколько вопросов если можно.

1. Как сделать разным цветом строчки в cxListBoxe?
2. Как это же сделать в cxGridDBTableView ?

Допустим я хочу некоторые строчки сделать зеленые а другие синие.

И еще я не могу разобраться с ImageComboBox в cxGridDBTableView.
У меня есть cxGridDBTableView в котором один из columns я выбрал
Properties->ImageComboBox.
В Properties->Images я засунул ImageList1 а как в коде выставить для определённой строчки какой image из ImageList я хочу?

Извините что так много - давно копаюсь накипело...
Автор: xokc
Дата сообщения: 15.01.2006 22:28

Цитата:
Допустим я хочу некоторые строчки сделать зеленые а другие синие

Читай хелп:

procedure TForm1.cxListBox1DrawItem(AControl: TcxListBox;
ACanvas: TcxCanvas; AIndex: Integer; ARect: TRect;
AState: TOwnerDrawState);
var
AText: string;
ABkGColor, ATextColor: TColor;
ATextRect: TRect;
begin
if odSelected in AState then
begin
ABkGColor := $008DEFF1;
ATextColor := $005079BE;
end
else
if Odd(AIndex) then
begin

ABkGColor := $00E8C5A8;
ATextColor := clBlue;
end
else
begin
ABkGColor := $00F19F3A;
ATextColor := clWhite;
end;

ACanvas.Brush.Color := ABkGColor;
ACanvas.Font.Color := ATextColor;

ACanvas.FillRect(ARect);
AText := AControl.Items[AIndex];
ATextRect := ARect;
ATextRect.Left := ATextRect.Left + 3;
ACanvas.DrawTexT(AText, ATextRect, 0);
end;



Добавлено:

Цитата:
И еще я не могу разобраться с ImageComboBox в cxGridDBTableView

Так оно само должно выставиться в зависимости от значения поля в БД
Автор: gpi
Дата сообщения: 15.01.2006 22:43
programmist27

Цитата:
В Properties->Images я засунул ImageList1 а как в коде выставить для определённой строчки какой image из ImageList я хочу?

Заполни Properties->Items
Автор: vadson6666
Дата сообщения: 16.01.2006 05:26
Народ, помогите со следующей проблемой: имеется ДевЭкс Грид, ДББандедТаблеВиев, необходимо по двойному клику определить где же конкретно нажали-на данных или нет, в зависимости от результата либо вызывать обработку, либо нет. Пробовал через датавью смотреть имя класса, все время пишет 'TcxGridDataRow' не важно на чем было нажатие на заголовке колонки или Банде, грид имеет свойство Мультиселект в Фалсе. Как добиться нормальной обработки?
Автор: golkanavt
Дата сообщения: 16.01.2006 10:19
vadson6666

Код:
procedure TfmYourForm.YourViewDblClick(Sender: TObject);
var
P: TPoint;
AHitTest: TcxCustomGridHitTest;
begin
GetCursorPos(P);
with TcxGridSite(Sender) do
begin
P := ScreenToClient(P);
AHitTest := tvbOrders.ViewInfo.GetHitTest(P);
AHitTest := TcxGridSite(Sender).GridView.ViewInfo.GetHitTest(P);
if (AHitTest.HitTestCode in [htCell, htRecord]) then DoSomethingHere
else
if (AHitTest.HitTestCode in [htFilter]) then YourView.Filtering.RunCustomizeDialog;
end;
end;
Автор: DeepTown
Дата сообщения: 16.01.2006 11:30
Подскажите плиз имеется ли возможность cxDateEdit убрать кнопку с календарем?

Или как заставить cxMaskEdit (MaskKind=emkRegExpr; EditMask=Date (([012]?[1-9] | [123]0 |31) / (0?[1-9] | 1[012]) / ([123][0-9])? [0-9][0-9]);) в случае ввода двух цифирь года, отобразить все четыре как это происходит в cxDateEdit, да и при использовании стандартного MaskEdit (EditMask="!99/99/0000;1;_")
Автор: vadson6666
Дата сообщения: 16.01.2006 11:35
golkanavt

Биг санкс, извините, втупил... Все работает!
Автор: alex242
Дата сообщения: 16.01.2006 13:58
Alex47, благодарю.
Автор: programmist27
Дата сообщения: 16.01.2006 14:33
Properties->Items заполнен , но я не знаю как в runtime выбрать объект из items для показа!
Автор: gpi
Дата сообщения: 16.01.2006 15:44
programmist27
У каждого элемента Items есть свойство Value. Если поле записи равно Value, то в гриде будет показан Image, сопоставленный с соответствующим элементом
Автор: xokc
Дата сообщения: 16.01.2006 16:14
DeepTown

Цитата:
Или как заставить cxMaskEdit (MaskKind=emkRegExpr; EditMask=Date (([012]?[1-9] | [123]0 |31) / (0?[1-9] | 1[012]) / ([123][0-9])? [0-9][0-9]);) в случае ввода двух цифирь года, отобразить все четыре как это происходит в cxDateEdit, да и при использовании стандартного MaskEdit (EditMask="!99/99/0000;1;_")

Чего-то я не понял: MaskKind=emkRegExprEx проблему решает? Вроде поведение его получается аналогичным cxDateEdit
Автор: sasku
Дата сообщения: 17.01.2006 03:41
Как можно указать тип поля из грида при экспорте в ексель, особенно цифровой ?
А то получается или деннежный без копеек или символьный.
Автор: vadson6666
Дата сообщения: 17.01.2006 06:45

Цитата:
Как можно указать тип поля из грида при экспорте в ексель, особенно цифровой ?
А то получается или деннежный без копеек или символьный.


Мне тоже сие интересно, вопросов с Каррренси или датой нет, а вот с флоатом... Пока оставил экспорт в текстовом формате, до лучших времен, но по человечески хотелось бы...
Автор: Alex1978
Дата сообщения: 17.01.2006 10:13
Как в cxTreeList создать колонку типа CheckBok и чтобы можно было текст строке присваивать, в официальной демке видел, а сам сделать не могу.
Автор: DeepTown
Дата сообщения: 17.01.2006 11:05
xokc

на самом деле у меня и есть "emkRegExprEx" да не в этом суть... в принципе нашел как добиться чего хотел постобработкой измененного значения, а потом ваще решил не заморачиваться и просто остановиться на cxDateEdit
Автор: DeepTown
Дата сообщения: 18.01.2006 00:44
Кто сталкивался?
При использовании на cxTabSheet (cxPageControl) любого cxLabel, и при включении в cxLookAndFeelController->NativeStyle=true (при этом фон cxTabSheet становится белым для стандартной схемы WinXP) фон под Label'ами остается серым ;((
на тех же cxRadioGroup все ок... недоработка cxTabSheet (cxPageControl)? как это попроще побороть, комплексно..?
Автор: gpi
Дата сообщения: 18.01.2006 08:34
DeepTown
cxLabel1.Transparent:=True;
Автор: DeepTown
Дата сообщения: 18.01.2006 11:18
gpi

Сенкс, помогло.
Мне лучше во всех лейбелах и т.п. по умолчанию включать этот проперт? ни где это отрицательно не скажется? (почемуто он по умолчанию выключен.. хммм)
и вот еще... нет чего-нить типа какого-нибудь StyleController'а чтобы это сделать комплексно?
Автор: gpi
Дата сообщения: 18.01.2006 11:55
DeepTown

Цитата:
ни где это отрицательно не скажется?

Не должно
Автор: DeepTown
Дата сообщения: 18.01.2006 13:02
опять трабла ;(
использую cxMaskEdit (EditMask="\d\d - \d\d\d"; MaskKind=emkRegExpr/emkRegExprEx;)
предварительно хочу загнать "12345", чтобы редактировалось в виде "12 - 345"
Но при предварительеном присвоении в cxMaskEdit->Text = "12345" или cxMaskEdit->EditValue = "12345" при запуске получаю обрубленное "12-"
подскажите плиз что я делаю не так...
Автор: fr00m
Дата сообщения: 18.01.2006 15:35
DeepTown
Маска действует только при вводе. Первоначально нужно задать текст, соответствующий маске.

Либо использовать MaskKind = emkStandard и маску EditMask=00-000
Автор: xokc
Дата сообщения: 18.01.2006 16:49
Кто-нибудь пробовал собственные стили для баров разрабатывать? Типа новый пункт среди bdsOffice11, bdsXP и т.п. В частности интересуют полупрозрачные popup меню.
Автор: sasku
Дата сообщения: 18.01.2006 18:34
Кто пользовался TdxLayoutControl, вопрос.
Размещаю на форме этот компонент, располагаю на нем элементы (поля ввода, кнопки) - все нормально помещается. Запускаю прогу на другом компе - появляются полосы скроллинга, т.е. элементы не помещаются. Есть ли какое нибудь лекарство от этого ?
Кроме того, в вынь98 при перемещении мыши над элементами, они дергаются.
Может кто поможет ?
Автор: DeepTown
Дата сообщения: 19.01.2006 00:40
fr00m

думаю ты не прав, я как-то добился этого и думал что понял как ;( но теперь не могу повторить ;(.. буду биться дальше...
Да и это былоб не правильно прям в значения литеры загонять... в emkStandard это и то на выбор предоставляется...

Добавлено:
Проясните плиз ситуацию с cxMaskEdit, пользоваться компонентами начал недавно и возлагал на них большие надежды (видимо слишком большие )

Когда я использую MaskKind=emkRegExpr/emkRegExprEx редактируемое значение обязательно должно содержать в себе тот же символ что я использую в маске? Например
EditMask="\d\d - \d\d\d", то редактируемая переменная должна содержать именно "12-345", просто "12345" уже не прокатит?
Из этого следует что cxMaskEdit годится только для символьных переменных? Ну могу я в этом случае предварительно подготавливать значени, а после обратно приводить.. хотя и это изврат.
А как с cxDBMaskEdit? тоже только для текстовых Fields'ов? здесь то я уже не влезу,если я хочу допустим счет напрямую править "12345 678 9 1123 4567892" то и хранить придется в базе в таком же виде?
...или отказаться от MaskKind=emkRegExpr/emkRegExprEx?

в чем у меня проблема кроме ДНК?

fr00m
чето я запутался...
Автор: fr00m
Дата сообщения: 19.01.2006 10:32
sasku
Скорее всего (если предположить, что компоненты на форму положены нормально и все элайны выставлены нормально), разные настройки стилей или различные настройки размера шрифта в системе. Лично я это побеждал тем, что высоту формы делал чуть больше, чем надо (не самый правильный, наверное, выход).
А дергание по идее можно убрать, выставив Style.HotTrack в false.

Добавлено:
DeepTown

Цитата:
думаю ты не прав

Я и не претендую... Цитата из хэлпа:

Цитата:
MaskEdit supports regular expressions to validate and format user input
.
Вообще, я так понимаю, задача в том, что вводимое значение хочется в базе хранить в виде числа, а пользователю представлять в каком-то отформатированном виде? Непонятно, почему все-таки не подходит маска emkStandard.

Автор: DeepTown
Дата сообщения: 19.01.2006 11:27
fr00m


Цитата:
Вообще, я так понимаю, задача в том, что вводимое значение хочется в базе хранить в виде числа, а пользователю представлять в каком-то отформатированном виде?


да и не обязательно в виде числа, иногда и в символьном, но без лишних пробелов, и вообще в emkRegExprEx очень можная система выражений, например
"12345 А78 9 1123 4567892" (в 7 позиции погут быть только определенные 10 букв)
в Standard'ном варианте придется постообработку делать (на OnExit/change например), а в emkRegExprEx просто не даст ввести лишнего.


Цитата:
Непонятно, почему все-таки не подходит маска emkStandard.


да уж очень emkStandard не удобен, как для порльзователя так и для меня.. ;(

Почему они (DX) так сделали.. эх может всеж есть какая хитрость? люди!
А если cxDBMackEdit буду пользовать то как влезть в момент считывания и записи значения непосредственно в конкретное поле (чтоб конвертать для MackEdit'а и обратно)
Event'сы TStringField->OnGetText/OnSetText не задействуются ;(
Автор: RaVeX
Дата сообщения: 19.01.2006 13:05
Вопрос по XtraGrid ...

Есть две связанных таблицы, отображаемых в одном GridControl. Значения из дочерней таблицы для текущей записи отображаются после нажатия на кнопку детализации, расположенной в начале родительской строки. Когда в связанной таблице есть уже записи для текущей строки, то появляется список дочерних записей и добавить новую дочернюю запись не проблема. Но если дочерних записей нет, то кнопка детализации недоступна. Вопрос: как добавить новую запись в дочернюю таблицу в этом случае? Точнее, мне нужно, чтобы появилась пустая строка в дочернем gridView.
Надеюсь, не очень сумбурно получилось ...
Автор: Tualan
Дата сообщения: 20.01.2006 13:27
В данном случае автоматически добавиться запись не может, т.к. записи нужно присвоить значение ключевых полей. Нужно просто сделать кнопку для добавления новой записи, и добавление реализовать ручками.
Автор: xax
Дата сообщения: 20.01.2006 14:47
Всем драсьте!
У меня возникла проблема - при каждой смене сортировки нужно выделять 1-ю строку в гриде(XtraGrid). Может кто сможет чего посоветовать.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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