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

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

Автор: X11
Дата сообщения: 24.03.2012 14:56
Lena44, у Вас что справки нет?


http://devexpress.com/Support/Center/p/A323.aspx

Если кратко, то это называется fixed, смотри в настройках бэнда.


Зафиксированные бывают не колонки, а бэнды. Таким образам создаешь зафиксированный бэнд и в него переносишь нужные колонки или одну колонку.
Автор: neznayka3
Дата сообщения: 24.03.2012 22:05
как вставить dxBar с другой формы в BarManager?

Код: procedure InsertBar(ABar: TdxBar; DestBM: TdxBarManager;
SourceForm, DestForm: TForm);
var
b,b2: TdxBar;
begin
// ABar.Parent := DestBM;
SourceForm.RemoveComponent(ABar);
DestForm.InsertComponent(ABar);
b := DestForm.FindComponent(ABar.Name) as TdxBar;
// b.BarManager := DestBM;

//временное решение
with DestBM.Bars.Add do
Assign(b);

end;
Автор: lancov
Дата сообщения: 25.03.2012 05:58
Привет кто работал с DevExpress XPO подскажите там есть непосредственое удаление объектов и отложенное . Каким образом сделать непосредственнное удаление ? При выполнениее допустим объект_хро.Delete() объект из базы не удаляется а помечается флагом.
Автор: k94kwk1
Дата сообщения: 25.03.2012 15:57
Подскажите пожалуйста, как из cxgrid вытянуть цвет конкретной ячейки. Не через событие OnDraw... а непосредственно, например по нажатию внешней кнопки*?
Автор: ant0ni02004
Дата сообщения: 25.03.2012 16:49
k94kwk1

всё не так просто
а если
- "полосатая" раскраска включена
- запись текущая(при Focused гриде или не Focused)
- выбранная (при multiSelect)
- через OnCustomDraw* какой-то специальный цвет выводится в зависимости от значения?

как бы не пришлось через тот же Canvas цвет получать или при OnCustomDraw* запоминать где-нибудь каким цветом какую ячейку рисовали
Автор: k94kwk1
Дата сообщения: 25.03.2012 18:10
ant0ni02004
Действительно не так все просто !
Тогда я уточню вопрос - мне на самом деле все-равно какай там цвет у ячейки. ПРосто необходимо у ячейки по щелчку на которой должен появиться inplace editor присвоить ему фон этой ячейки.
Делается это как увидел из примера вот здесь:

Код:
procedure TFrmMain.cxGrid1DBTableView1InitEdit(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit);
begin
with TcxCustomEdit(AEdit).Style do
begin
Color := ?<фон активной ячейки>? ;
end;
end;
Автор: ant0ni02004
Дата сообщения: 25.03.2012 22:14
k94kwk1

это уже легче

ведь ячейка является выделенной, для чего есть специальный стиль(ну может быть еще включена опция InvertSelected - это нужно учесть)

короче смотреть в сторону TcxGridDBTableView.Syles.* (Content,Active,Inactive...) и цвет брать оттуда
Автор: andreybear
Дата сообщения: 26.03.2012 05:55
X11

Цитата:
Мне нужно, чтобы если строка программно (в коде) принимает значение (Null), пустое, то переключатель бы был в состоянии Unсhecked (отключен).

Может на onValidate (или другом событии, связанном с изменением значения) проверять на Null и в случае, если значение Null переприсваивать значение соответствующее Unсhecked.
Автор: X11
Дата сообщения: 26.03.2012 08:41
andreybear, спасибо. Уже решил проблему.
thnx to mdid
Автор: neznayka3
Дата сообщения: 26.03.2012 09:56
как применить стиль ко всему столбцу, в котором выделена ячейка?
Автор: X11
Дата сообщения: 26.03.2012 10:17
spammers must die
Автор: mdid
Дата сообщения: 26.03.2012 10:21
neznayka3
у вас что отсутствует класс styles?
Автор: golkanavt
Дата сообщения: 26.03.2012 10:39
Коллеги, с версией DevExpress v2011 2.4 кто нибудь еще имеет проблемы аналогичные моим, а именно - при использовании шкурок проект и IDE (D2010) постоянно подвисают, спасает только убийство процесса. Отключении шкур в проекте помогает решить эту проблему. Второй косяк - на вкладках Express Editors 6, Express DBEditors 6 - пусто, нет ни одного компонента, хотя проект компилится без проблем, все компоненты работают. Отключение-включение данных пакетов, их пересборка не помогают. В сборке 2.5 из обменника эти проблемы есть или это вообще только у меня такие косяки вылезли? Спасибо всем отвечающим.
Автор: neznayka3
Дата сообщения: 26.03.2012 10:44
mdid
есть. как и где применить его ко всему столбцу?
Автор: mdid
Дата сообщения: 26.03.2012 10:57
neznayka3
укажите content и будет вам счастье
и разбирайте в OnCellClick ACellViewInfo
Автор: X11
Дата сообщения: 26.03.2012 11:01
golkanavt
я использую шкурки, IDE Delphi XE, проблем не наблюдал. На вкладках Express Editors, Express DBEditors компоненты были.

Сегодня установил 2.5. Тоже самое - проблем не наблюдаю.
Автор: golkanavt
Дата сообщения: 26.03.2012 11:22
Еще вопрос, задававшийся несколько месяцев назад - Locked View Image кто нить использует, как это делать?

Добавлено:
Уже разобрался, кому интересно:

Код:
Grid.LockedStateImageOptions.Enabled := TRUE;
Grid.BeginLockedStatePaint(lsimImmediate); //(lsimNever, lsimPending, lsimImmediate);
Автор: golkanavt
Дата сообщения: 26.03.2012 17:38
Поставил 2.5, та же хрень, не пойму в чем дело:
Editors

DBEditors


Uploaded with ImageShack.us
Автор: neznayka3
Дата сообщения: 26.03.2012 17:46
есть TcxGridDBBandedTableView. хидеры в банде расположены в 2 ряда один под другим. надо, чтобы при изменении ширины столбца соответствующий хидер сверху/снизу также изменял свои ширину. этот код работает криво, ширина нужных столбцов изменяется, но также изменяются соседние столбцы и сетка сбивается. хелп.
Код: procedure TfmOrderX.bvOrderX_ColumnSizeChanged(Sender: TcxGridTableView;
AColumn: TcxGridColumn);
var
bandiIndex, colIndex, rowIndex: Integer;
i: Integer;
begin
bandiIndex := TcxGridDBBandedColumn(AColumn).Position.BandIndex;
colIndex := TcxGridDBBandedColumn(AColumn).Position.colIndex;
rowIndex := TcxGridDBBandedColumn(AColumn).Position.rowIndex;

if rowIndex = 0 then
inc(rowIndex)
else
Dec(rowIndex);

for i := 0 to Sender.ColumnCount - 1 do
begin
if (TcxGridDBBandedColumn(Sender.Columns[i]).Position.BandIndex=bandiIndex) and
(TcxGridDBBandedColumn(Sender.Columns[i]).Position.ColIndex=colIndex) and
(TcxGridDBBandedColumn(Sender.Columns[i]).Position.RowIndex=rowIndex) then
begin
TcxGridDBBandedColumn(Sender.Columns[i]).Width:=AColumn.Width;
// AColumn.
end;
end;
end;
Автор: ant0ni02004
Дата сообщения: 27.03.2012 00:47
neznayka3

Цитата:
этот код работает криво...


лучше будет скриншот запостить что там ДО и что ПОСЛЕ получается, так быстрее вопрос решить


Цитата:
2 view table от одного датасета. как синхронизировать скролинг


IMHO придётся перехватывать WM_VSCROLL (и WM_HSCROLL если хочется еще и горизонтальный скроллинг синхронизировать)
Автор: andreybear
Дата сообщения: 27.03.2012 04:06
neznayka3

Цитата:
хидеры в банде расположены в 2 ряда один под другим.

Хидеры? Может правда скриншоты выложите?
Автор: neznayka3
Дата сообщения: 27.03.2012 04:12
ant0ni02004
Автор: andreybear
Дата сообщения: 27.03.2012 05:13
neznayka3

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

Первый скриншот видимо исходное состояние. Второй исходное состояние таблицы + нарисованная красная стрелка. Т.е. пользователь увеличивает ширину requireddate? Хотя на третьем видно, что ширина уменьшена, но стрелка на предыдущем скриншоте свидетельствует об ее увеличении. Может я неправильно что-то понял?
А на третьем скриншоте отображены последствия bvOrderX_ColumnSizeChanged?
Автор: Czechoslovak
Дата сообщения: 27.03.2012 09:31
neznayka3
Предлагаю разбить все хидеры по отдельным бэндам, тогда ширину можно будет изменять только заголовком бэнда и соответственно колонки будут одинаковыми
Автор: neznayka3
Дата сообщения: 27.03.2012 10:23
andreybear
первый - исходное, 2-й потянул вправо, 3-й влево.

заказчик хочет фиксировать столбцы "как в excel-е", и запись в 2 строки. поэтому взял банды. "как в excel-е" пока не знаю что придумать.
Автор: andreybear
Дата сообщения: 27.03.2012 13:02
neznayka3
Попробовал то, что посоветовал Czechoslovak. В таком случае можно будет изменять ширину верхнего Band'a, а нижний будет под него подстраиваться, колонки, соответственно, тоже. "Сетка" не сбивается. Вас такое решение устроит?
Автор: neznayka3
Дата сообщения: 27.03.2012 13:42
Czechoslovak
andreybear
так и сделаю, спасибо.
Автор: k94kwk1
Дата сообщения: 27.03.2012 16:33
Здравствуйте!

Использую dxComponentPrinter из Express Printing System и cxgrid.


1.    Открыл диалог preview и обалдел от количества наворотов, кнопок и проч. Думаю что пользователям будет сложно разобраться и я хочу в диалоге Preview убрать часть кнопок из меню. Кто-нибудь знает как сделать??? В свойствах компонента этого нет. Как добраться до менющек и свойств диалога preview этого компонента?

2.    Второй вопрос – использую dxPSEngineController1 удивительно что НЕ привязывая через какое-нить свойство к dxComponentPrinter оно оказывает на него воздействие (например на вид диалога «preview»). А вот для чего нужен dxPrintDialog? Я его корректирую, но на «preview window» он влияния не оказывает и нет свойства через которое можно было бы его привязать. Не подскажите?
Автор: ant0ni02004
Дата сообщения: 27.03.2012 18:38
k94kwk1

через PreviewOptions.VisibleOptions, EnableOptions итд их можна отключать


Добавлено:
neznayka3

странный прикол, если колонку расширять то код работает, а если ужимать - то рассинхрон идёт

вот так работает (если ужимаем - то всему ряду ширину проставляем)

Код:
procedure TfmMain.cxGrid1DBBandedTableView1ColumnSizeChanged(
Sender: TcxGridTableView; AColumn: TcxGridColumn);
var
bandiIndex, colIndex, rowIndex: Integer;
i: Integer;
lCol:TcxGridDBBandedColumn;
bShrinked:boolean;
sl:TStringList;
begin
lCol:=TcxGridDBBandedColumn(AColumn);
bandiIndex := lCol.Position.BandIndex;
colIndex := lCol.Position.colIndex;
rowIndex := lCol.Position.rowIndex;

if rowIndex = 0 then
inc(rowIndex)
else
Dec(rowIndex);

for i := 0 to Sender.ColumnCount - 1 do
begin
lCol:=TcxGridDBBandedColumn(Sender.Columns[i]);
if (lCol.Position.BandIndex=bandiIndex) and
(lCol.Position.ColIndex=colIndex) and
(lCol.Position.RowIndex=rowIndex) then
begin
bShrinked:=lCol.Width>AColumn.Width;
lCol.Width:=AColumn.Width;
end;
end;

if bShrinked then
begin
sl:=TStringList.Create;
try
for i := 0 to Sender.ColumnCount - 1 do
begin
lCol:=TcxGridDBBandedColumn(Sender.Columns[i]);
if (lCol.Position.BandIndex=bandiIndex) and
(lCol.Position.RowIndex=rowIndex) then
begin
sl.AddObject(IntToStr(lCol.Position.ColIndex),lCol);
end;
end;
for i := 0 to Sender.ColumnCount - 1 do
begin
lCol:=TcxGridDBBandedColumn(Sender.Columns[i]);
if (lCol.Position.BandIndex=bandiIndex) and
(lCol.Position.RowIndex<>rowIndex) then
begin
TcxGridDBBandedColumn(sl.Objects[lCol.Position.ColIndex]).Width:=lCol.Width;
end;
end;
finally
sl.Free;
end;
end;
end;
Автор: Dima335
Дата сообщения: 28.03.2012 01:49
Как у spreadsheet в header слева сделать, чтобы вместо цифр выводилось что-то свое?
А то я сделал вот так:

Код: procedure TMyPainter.DrawHeaderBrick;
var K: Integer;
begin
inherited;
for K := 0 to 10 do ViewInfo.Bricks[0, K].TextSettings.TextBricks[0].Text:='string';
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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