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

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

Автор: clear2121
Дата сообщения: 29.10.2007 13:19
Вопрос по FlexGraphics library v1.5
Может кто подскажет?
Нужно при двойном клике на элементе (бусть будет BOX) он изменил цвет. В принципе любого элемента (текст, линия, надпись ...).
Делаю так
Pn1->MouseControl->Props[Brush->Color] = clRed;
получаю ошибку
[C++ Error] main.cpp(1244): E2285 Could not find a match for 'TPropList::operator =(const TColor)'

И хелпа никакого нет.

СПАСИБО!
Автор: zver
Дата сообщения: 01.11.2007 14:24
Вопрос по cxGrid-у:
Есть колонка cxMemo. Как до неё достучаться? Получилось достучаться только до свойств:

Код: TableView1ot_rem->PropertiesClass=__classid(TcxMemoProperties);
TcxMemoProperties *properties = (TcxMemoProperties *)TableView1ot_rem->Properties;
ShowMessage(properties->MaxLength);
Автор: Dronton2
Дата сообщения: 01.11.2007 15:03
zver
Попробуй так (синтаксис Delphi):
TableView1.DataController.Values[ri, TableView1ot_rem.Index]
где ri - record index
Автор: zver
Дата сообщения: 01.11.2007 15:32
Да, это понятно. Но на момент редактирования ячейки данных в DataController-e ещё нет, а динамически расширять контрол Memo надо. Вот в этом то и косяк.

Добавлено:
Или вопрос подругому:
Как изменить высоту отдельной строки в cxGrid-e?

Добавлено:
Вариант OnGetCellHeight тоже вроде не подходит. Надо менять ширину именно текущей ячейки в произвольный момент времени.
Автор: X11
Дата сообщения: 01.11.2007 17:51

Цитата:
Как изменить высоту отдельной строки в cxGrid-e?

CellAutoHeight

Добавлено:
но при печати всё равно текст в одну строку будет
Автор: Dronton2
Дата сообщения: 02.11.2007 10:04
zver
Правильно сформулированный вопрос содержит в себе половину ответа.
У тебя сформулировано 3 разных вопроса:

Цитата:
на момент редактирования ячейки данных в DataController-e ещё нет, а динамически расширять контрол Memo надо
Встречный вопрос: Чего нет в датаконтроле на момент редактирования? Не сразу понял вопрос, наверное, пропущена запятая после слова "ячейки". Посмотри свойство EditValue. Может быть поможет InplaceEditor?

Цитата:
Как изменить высоту отдельной строки в cxGrid-e?
ответил X11

Цитата:
Надо менять ширину именно текущей ячейки в произвольный момент времени
Можно поменять только ширину колонки. У колонки есть свойство Width, его значение и меняй. ("В произвольный момент времени" - слишком широко сформулировано. Некоторые вещи в разные моменты времени можно поменять разными способами).


Автор: zver
Дата сообщения: 02.11.2007 10:40

Цитата:
Надо менять ширину

Извиняюсь имел ввиду высоту.


Цитата:
Может быть поможет InplaceEditor?

Где находится это волшебное свойство?

Автор: Dronton2
Дата сообщения: 02.11.2007 13:41
zver
В verticalGrid и TreeList это свойство называется InplaceEditor.
В cxGrid это делается с помощью Controller.EditingController.Edit, например, так:

Код: with TcxCustomGridTableView(Grid.FocusedView).Controller.EditingController do
if IsEditing then
if Edit is TcxCustomDropDownEdit then
TcxCustomDropDownEdit(Edit).DroppedDown := True;
Автор: IgorXI
Дата сообщения: 05.11.2007 10:39
подскажите, никак не пойму как на TdxBar поставить сепаратор?
Автор: korobovmax
Дата сообщения: 05.11.2007 14:35
IgorXI, правой кнопкой по кнопке, перед которой хочешь сеператор поставить. В контекстном меню пункт "Add Group бла-бла-бла" (точно название не помню)
Автор: shulum
Дата сообщения: 06.11.2007 09:26
IgorXI - да просто кнопочку мышкой вниз немного ...
Автор: clear2121
Дата сообщения: 06.11.2007 12:11
Hi!
Скажите, что не так делаю. Компонент TdxMemData. Заношу значение по полям. В гриде все отображается. Пишу фильтр

tmp->ProgrammedFilter = true;
tmp->Filter = "NOM_S=1 AND NOM_U=1";
tmp->Filtered = true;
tmp->First();

И ничего нет. Что я не так делаю?

СПАСИБО!
Автор: Dronton2
Дата сообщения: 06.11.2007 16:00
clear2121
Насколько я помню, если используешь ProgrammedFilter, то нужно использовать FilterList, причём, всю работу делать вручную: очистка, заполнение и т.д.
Могу привести кусок кода на Delphi:

Код: var fC, fTC, fL, fA: TdxMemField;
i, beg, fin: integer;
begin
with mdControlVal do
begin
DisableControls;
FilterList.Clear;
// ProgrammedFilter := False;
// Filtered := False;
ProgrammedFilter := True;

iAttrID := aRecord.Values[tvItemsAttrID.Index];
fC := Data.IndexOf(FieldByName('CHILDS'));
fTC := Data.IndexOf(FieldByName('TRUE_CHILDS'));
fL := Data.IndexOf(FieldByName('LEVEL'));

fA := attrMap.Data.IndexOf(attrMap.FieldByName('ATTR'));
for i := 0 to attrMap.Data.RecordCount - 1 do
if PInteger(fA.Values[i])^ = iAttrID then
begin
beg := PInteger(attrMap.Data.IndexOf(attrMap.FieldByName('BEG')).Values[i])^;
fin := PInteger(attrMap.Data.IndexOf(attrMap.FieldByName('FIN')).Values[i])^;
break;
end;

for i := beg to fin do //Data.RecordCount - 1 do
if (PDouble(fL.Values[i])^ = 1) and
(PDouble(fC.Values[i])^ = PDouble(fTC.Values[i])^)
then FilterList.Add(Pointer(i + 1));
Filtered := True;
EnableControls;
end;
end;
Автор: IgorXI
Дата сообщения: 07.11.2007 09:26
korobovmax
shulum
Спасибо, действительно просто.
Автор: shulum
Дата сообщения: 07.11.2007 11:23
А не подскажете - кто чем пользуется для создания/изменения cxGrid в готовом проекте (runtime) ?
Автор: Dronton2
Дата сообщения: 07.11.2007 15:32
shulum
Всё зависит от конкретной задачи.
У меня, например, есть реестр отчётов, хранящийся в таблице БД.
Если упростить, то есть два поля:
1. название отчёта - строка
2. BLOB, в котором хранится TableView
Юзер выбирает отчёт, нажимает на кнопку, и из блоба в грид выгружается tableView.
Автор: shulum
Дата сообщения: 07.11.2007 16:03
Dronton2
не ... ну с этим все понятно (в смысле как хранить), но я так понимаю, что к редактированию (созданию) того что хранить каждый подходит своим путем, т.е. типовое решение отсутствует.
Сам бьюсь в этом направлении и навеялась мысль, а вдруг уже есть решение и я занимаюсь изобретением велосипеда ... больно там всего много - желание охватить весь спектр возможностей с неумолимой силой преследует меня ...
Просмотрел аддоны, но они стары как мир
Автор: X11
Дата сообщения: 07.11.2007 20:49
Нет ли примера у кого перетаскивания данных из одного cxGrid`а в другой. Буду весьма признателен.

Добавлено:
2 таблицы: главная и детальная

нужно из одной записи главной таблицы скопировать детальные записи в другую запись главной таблицы
Автор: Dronton2
Дата сообщения: 08.11.2007 09:18
shulum
Редактирую в DesignTime, затем, нужный кусок из .dxf сохраняю в отдельном файле, запускаю самописную утилиту, которая этот файл сохраняет в блоб-поле БД. Другой автоматизации не имею.
Если подумать, то кажется странным, что нет какой-то коммерческой утилиты на эту тему. На мой взгляд, она пользовалась бы спросом.

X11
Я для таких целей вызываю процедуру сервера БД и передаю ей ID родительских записей - в случае изменения параметров таблицы не нужно менять клиентское приложение.
Копирование средствами девэкспресс: 2 цикла, внешний по записям, внутренний - по колонкам. Какие проблемы? Быстрее написать самостоятельно, чем ждать ответа на форуме.
Автор: X11
Дата сообщения: 08.11.2007 19:33
да, я вызываю процедуру сервера, но хотелось знать, на какую мастер-запись пользователь бросил выделенные дочерние записи



Код:
procedure TForm1.cxGrid2DBTableView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ((Button = mbLeft) and (ssAlt in Shift)) or (ssRight in Shift) then
if (TcxGridSite(Sender).ViewInfo.GetHitTest(X, Y).HitTestCode in [htCell, htRecord])
then TcxGridSite(Sender).BeginDrag(False);
end;

procedure TForm1.cxGrid2DBTableView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source is TcxDragControlObject;
end;

procedure TForm1.cxGrid2DBTableView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
self.Caption := TcxGridRecordCellHitTest(TcxGridSite(Sender).ViewInfo.GetHitTest(X, Y)).GridRecord.Values[cxGrid1DBTableView1FULLNAME.Index];
end;
Автор: shulum
Дата сообщения: 09.11.2007 11:53
Dronton2
да не то слово, что странно ... странно что сами Dev ничего не сделали ... ну и народ безмолвствует. Неужели все делают статические проекты

ломаю голову - вот что пока получилось - далеко не финал, скорее набросок на 70%, так что ногами просьба не пинать. Цель - сделать все на одной форме и что бы все настройки выходили в одном файле (или потоке stream, что в общем одно и то же).

http://shulum.com/project/grids_.rar
Автор: X11
Дата сообщения: 10.11.2007 18:47
Кто подскажет, как изменить программно колонтитулы в dxComponentPrinter?
Автор: Shadi
Дата сообщения: 11.11.2007 12:32
X11


Цитата:
Кто подскажет, как изменить программно колонтитулы в dxComponentPrinter?



Код: dxComponentPrinter1.CurrentLink.ReportTitle.Text := dmod.qryShotTITLE_REP.AsString;
dxComponentPrinter1.CurrentLink.PrinterPage.PageFooter.CenterTitle.Clear;
dxComponentPrinter1.CurrentLink.PrinterPage.PageFooter.CenterTitle.Add(dmod.qryShotFOOTER_REP.AsString);

Автор: X11
Дата сообщения: 11.11.2007 15:22
Спасибище
Автор: brookson
Дата сообщения: 11.11.2007 16:06
Доброго всем времени суток!

Нужен контекстный поиск либо по столбцам грида, либо по лукапному комбо, состоящему из нескольких полей. Есть такое - кто знает?
Инкрементный поиск, который IncSearch=True в TableView ищет с начала поля к сожалению.
Автор: zarogon
Дата сообщения: 12.11.2007 04:53
А что делать при получении такой ошибки когда ставишь DevExpress.ExpressBars.Suite.v6.28 на BCB 2006 “Cannot load package 'dxRibbonC10.' It contains unit 'Dxbarstrs,' which is also contained in package 'dxBarC10'"

P.S
Добавить сам dxBarC10.bpi пробовал - аналогично(
Автор: X11
Дата сообщения: 12.11.2007 13:51
Использую TcxDBLookupComboBox. Настроил ListSource, List-поля. Список выпадает, всё нормально. Но данные выбрать не даёт. Свойство DataSource не настраивал, да и настраивать мне его не нужно. Просто хочу похожий функционал как у списка EhLib.

Добавлено:
буду использовать TcxLookupComboBox, вроде подходит
Автор: Beibut
Дата сообщения: 12.11.2007 14:22
Здравсвуйте программисты, профессионалы Дельфи!

У меня, как у любого начинающего разработчика ПО, возник вопрос. Я работаю в банке, а там мой начальник попросил сделать изменить одну программу, которая использует разные пакеты, компоненты.
При установке пакетов Dev Express ExpressQuantumGrid все время возникает ошибка, то ругается на то что dxcnter.pas отсутсвуте, то "Этот пакет не является дизайн пакетом". В общем, по моему эти компоненты кривые. Очень долго разбирался, и как оказалось без результатно.
У меня к Вам просьба, не могли бы мне скинуть эти пакеты, либо скинуть линк, хотя бы помочь для установки. >>

Буду очень признателен.
Автор: X11
Дата сообщения: 12.11.2007 15:16

Цитата:
не могли бы мне скинуть эти пакеты

см. шапку
Автор: Nikolay11111
Дата сообщения: 12.11.2007 16:28
to Beibut

Инсталляхи нормальной я в инете не видел - тока нашел в исходниках на китайских сайтах, например здесь http://delphi.borlandforum.com.
Способ установки следующий:
- открываешь в Дельфях dpk-файл с именем соответствующего пакета из директории Packages, компилируешь, и если не вылетело ошибок то инсталлируешь
- если вылетела ошибка что это не дизайн-пакет, закрываешь его и переходишь к следующему
- если вылетела ошибка, что типа нета такого-то файла pas, то ищешь где этот файл в исходниках лежит и прописываешь к нему путь в лайброриз, потов возвращаешься к предыдущему пакету и пытаешься снова скомпилить.
В общем, некоторое количество гемора, но пакеты устанавливаются

Добавлено:
Подскажите пожалуйста, если кто знает, можно ли в DBTreeList по нажатию левой кнопки мыши на ячейке вызывать отдельное окно просмотра содержимого данного BLOB-поля по аналогии с вызовом Popup-окна при редактировании? Само дерево необходимо держать в режиме Read only. Внешний вид Popup-окошка со обоими скроллингами вполне подходит, но вот возможность изменить инфу is not good. Перерыл все что мог - никак не получается.
Заранее благодарю за подсказку.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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