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

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

Автор: vladman
Дата сообщения: 13.04.2010 02:16
mdid

Цитата:
1. как в cxGridBandedTableView1 сделать программно клик ONCellClick? или только через cxGridBandedTableView1CellClick(...)?

А вы в вашем обработчике onCellClick используете ACellViewInfo: TcxGridTableDataCellViewInfo? Ведь в общем случае многое зависит от того в каком месте вашего cxGridBandedTableView1 произошел клик.

Цитата:
в дизайнтайме есть кнопка "Create all columns" а как ее вызвать программно?

<Your>cxGridDBTableView.DataController.CreateAllItems(False);
Автор: mdid
Дата сообщения: 13.04.2010 07:53
1. да в этом обработчике он есть..а вообще есть возможноость нажать программно клик?
2. пасиб..помогло
Автор: vladman
Дата сообщения: 13.04.2010 09:31
mdid

Цитата:
1. да в этом обработчике он есть..а вообще есть возможноость нажать программно клик?

Определяем ACellViewInfo (например, для выделенной cell) и вызываем "cxGridBandedTableView1CellClick(...)". Если сложность как раз в получении этого ACellViewInfo, то это можно сделать, например, так:

Код: var
vFocusedItem: TcxCustomGridTableItem;
AFocusedCellViewInfo: TcxGridTableDataCellViewInfo;
begin
vFocusedItem := <Your>cxGridDBTableView.Controller.FocusedItem;
AFocusedCellViewInfo := <Your>cxGridDBTableView.Controller.FocusedRecord.ViewInfo.GetCellViewInfoByItem(vFocusedItem)
end;
Автор: mdid
Дата сообщения: 13.04.2010 18:50
vladman
пасиб большое..ща попробую

чет лыжи не едут или я торможу дет
cxGridBandedTableView1CellClick(cxGridBandedTableView1,AFocusedCellViewInfo,mbLeft,[],false);
выдает
Types of actual and formal var parameters must be identical
Автор: volser
Дата сообщения: 14.04.2010 10:53
mdid
А что здесь не понятного? Хочет переменную вместо константы.
Автор: mdid
Дата сообщения: 14.04.2010 11:10
мда..видимо торможу...проект должны были показывать в понедельник посему ща все в попыхах...не думая...звиняйте
Автор: DmitryZzz
Дата сообщения: 14.04.2010 15:43
Прошу совета по старому dxdbgrid.
Запитан он от adoquery, в гриде есть несколько summarygroup, которые подводят промежуточный итог по группе.
Проблема - изменяю значение в таблице, сумма меняется только при выхоже из ячейки.
Как сделать пересчет суммы сразу по изменению значения в ячейке?

Добавлено:

Цитата:
Прошу совета по старому dxdbgrid.

Отбой, вроде нашел:
на adodataset on change вызываем grud.RefreshGroupColumns
+
в свойствах грида ставим SmartRefresh

продолжаю наблюдение.

Автор: fortezza
Дата сообщения: 16.04.2010 07:18


в первом варианте запись выделена и сфокусирована (Focused, Selected = true) и во втором тоже. каким свойством они различаются?

Добавлено:
все решение было найдено
Автор: X11
Дата сообщения: 16.04.2010 13:44
Есть TcxVerticalGrid с несколькими строками, у которых есть кнопки. Это строки с EditProperties типа CalcEdit, SpinEdit, LookupComboBox и т.п. Есть ли возможность расположить кнопки не справа строки, а слева, т.е. сразу после Caption??
Автор: vladman
Дата сообщения: 16.04.2010 17:12
X11

Цитата:
Есть ли возможность расположить кнопки не справа строки, а слева, т.е. сразу после Caption??

Есть, например так:

Код: type
TcxCustomEditPropertiesAccess = class(TcxCustomEditProperties);

begin
with TcxCustomEditPropertiesAccess(<Your>cxVerticalGridEditorRow.Properties.EditProperties).Buttons do
Items[0].LeftAlignment := True;
end;
Автор: sam291074
Дата сообщения: 17.04.2010 18:51
Подскажите, а можно ли скинить стандартные окна с сообщениями, создаваемыми Application->MessageBox(...) или ShowMessage(...) ?
А то как-то некрасиво под XP получается (под вистой и 7 в принципе смотрится).
Автор: vladman
Дата сообщения: 17.04.2010 22:00
sam291074

Цитата:
Подскажите, а можно ли скинить стандартные окна с сообщениями, создаваемыми Application->MessageBox(...) или ShowMessage(...) ?

ShowMessage должен скиниться.
"I apologize, we cannot adjust the appearance of the window produced by the MessageBox function due to the reasons described in report B30148 ("Skinning of InputBox and InputQuery is wrong"). Please use the ShowMessage function instead."

Добавлено:
Также снитится и MessageDlg. Есть, правда, один нюанс с применением скинов к этим диалогам если вы компилируете приложение под Windows Vista или Windows 7. В таких случаях диалоги создаются как Vista-style, и, соответственно, выглядят не скиненные. Для решения (обхода) проблемы при инициализации приложения (формы) попробуйте выполнить

Цитата:
Dialogs.UseLatestCommonDialogs := False;
Автор: V1s1ter
Дата сообщения: 18.04.2010 18:23
Подскажите чегото после обновление с 47 на 49 версию Printing System перестал печатать. Предварительный просмотр все в норме, но с принтера пустые листы лезут. Если сохранять (средвствами Printing System) в pdf, то все в норме. Коды еще не смотрел, но может кто уже знает где собака порылась?
Автор: Real11
Дата сообщения: 18.04.2010 23:03
Использую элемент cxDBVerticalGrid, как в нем сделать, чтобы поля формировались на основе полей таблицы базы данных ?
По аналогии с динамическими полями в обычном DBGrid
TDBGridColumnsState = (csDefault, csCustomized);
Автор: fortezza
Дата сообщения: 19.04.2010 08:47
Не могу найти решение с помощью поиска, но знаю, что такой вопрос уже был.
Подскажите, можно ли управлять раскрытием группы (в настройках cxGridDBTableView или программно)?

В первом случае (картинка 1) нужно, чтобы группа "Месяц" по умолчанию была раскрыта (картинка 2), а во втором (картинка 3), чтобы при раскрытии группы "Заявка" всегда были раскрыты позиции группы "Группа" (картинка 4)

Заранее спасибо!

Автор: vladman
Дата сообщения: 19.04.2010 09:47
Real11

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

Попробуйте

Код: <Your>cxDBVerticalGrid.DataController.CreateAllItems;
Автор: Real11
Дата сообщения: 19.04.2010 17:34
не..., так не работает!
Автор: linker_2009
Дата сообщения: 19.04.2010 20:28
Real11

Цитата:
не..., так не работает!

DataSet открыт? а поля в нем есть? на 49 все работает

Автор: Real11
Дата сообщения: 19.04.2010 20:49
[q][/q]
DataSet подключен к Query
у Query свойство SQL чистое.
в программе по щелчку на button в SQL заносятся таблицы, поля из которых и надо отобразить.
Делаю параллельно это же, но с обычным DBGrid и свойством Columns.State:=csDefault все работает, но мне нужен вертикальный grid

Добавлено:
Разобрался !!!!!!
Проблемма была в том, что я после CreateAllItems прописывал Query.Active, а надо Query включать до items ! Для простого grida это значения не имеет, поэтому сразу не догадался
Большое спасибо за помощь !!!
Автор: X11
Дата сообщения: 19.04.2010 21:56
Проблема с группировкой и событием OnGetContextStyle.


Код: procedure TfmScanner.Grid1StylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
out AStyle: TcxStyle);
begin
// if ARecord. then

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

if ARecord.Values[Grid1CP.Index] = true then
AStyle := cxStyle12;
end;
Автор: Real11
Дата сообщения: 19.04.2010 22:18
еще возник вопросик
если я передаю CreateAllItems в VerticalGrid, свойство DataSet у меня Query, как мне скрыть поля типа со служебной информацией (типа key ). БД Access через ADO.
Автор: X11
Дата сообщения: 19.04.2010 22:32

Цитата:
как мне скрыть поля типа со служебной информацией

cxVerticalGridRow1.Visible ??

Добавлено:
Добавил проверку.
if AItem = nil then exit;
Проблема исчезла.
Я правильно сделал?? Или есть другой способ, более правильный?


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

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

if ARecord.Values[Grid1CP.Index] = true then
AStyle := cxStyle12;
end;
Автор: linker_2009
Дата сообщения: 19.04.2010 23:19
Real11

Цитата:
как мне скрыть поля типа со служебной информацией

либо как написал X11
или после
Query.Active

Query.FieldByName('<Имя служебного поля>').visible:=false;

но до CreateAllItems



Добавлено:
X11
А у тебя не слетели стили?
я бы сделал так
if (AItem.Name='Grid1Med') and (ARecord.Values[AItem.Index]) then AStyle := cxStyle13;

Добавлено:
или у каждой колонки есть свой обработчик OnGetContentStyle
Автор: Real11
Дата сообщения: 20.04.2010 18:34

Цитата:
cxVerticalGridRow1.Visible ??

пробывал cxDBVerticalGrid1.RowByName('key1').Visible:=false;
не сработало


Цитата:
Query.FieldByName('<Имя служебного поля>').visible:=false;

но до CreateAllItems


тут получилось.

В обоих случаях до CreateAllItems ставил
Автор: linker_2009
Дата сообщения: 20.04.2010 18:39
Real11

Цитата:
пробывал cxDBVerticalGrid1.RowByName('key1').Visible:=false;

в этом случае надо было после, ведь строки еще не существует

Автор: Real11
Дата сообщения: 20.04.2010 18:53
тоже пробывал.
ошибку выдает
Access violation at adress 00867507 ...
Автор: X11
Дата сообщения: 20.04.2010 20:14

Цитата:
пробывал cxDBVerticalGrid1.RowByName('key1').Visible:=false;
не сработало

А что такой key1? Это имя поля или имя строки вертикального грида?
Автор: Real11
Дата сообщения: 20.04.2010 21:27
имя поля в БД Access откуда подключаем таблицу
Автор: X11
Дата сообщения: 20.04.2010 21:56
А при чём здесь имя поля, если тут ясно написано ROWByName, а не FieldByName, наверное
Автор: linker_2009
Дата сообщения: 20.04.2010 21:56
Real11

Цитата:
тоже пробывал.
ошибку выдает
Access violation at adress 00867507 ...

ну правильно у тебя нет такого строки. В твоем случае надо было
cxDBVerticalGrid1.RowByName('cxDBVerticalGrid1key1').Visible:=false;

лучше все настройть в query (Visible,DisplayLabel и т.д.), а VerticalGrid сам все подхватит при созданий полей

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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