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

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

Автор: akaGM
Дата сообщения: 25.10.2010 18:03
regkz
ок, ясно, спасибо...
Автор: TechnoDreamer
Дата сообщения: 25.10.2010 20:54

Цитата:
требует ли ExpressSkins наличия установленных Девок или может работать в автономе?
короче, ExpressSkins -- расширение или как?

Так оно в любом случае только свои контролы скинит (исключение только форма и TPanel), так что пользы то он него без остальных девок ноль.
Автор: akaGM
Дата сообщения: 25.10.2010 20:58
TechnoDreamer
не, там у них в описалове много стд.-контролов заявлено...
Автор: jonikDk
Дата сообщения: 25.10.2010 22:16
sam291074

Цитата:
Это можно как-то исправить?

да можно подключив в uses dxBarSkinnedCustForm и ничего не надо перекомпиливать
Автор: TechnoDreamer
Дата сообщения: 26.10.2010 14:17

Цитата:
не, там у них в описалове много стд.-контролов заявлено...

Где? http://www.devexpress.com/Products/VCL/ExSkins/

Да и собственно сообщение от саппорта:

Цитата:
By design, the ExpressSkins Library can affect appearance of only the following standard controls:

- TCustomForm and its descendants;
- TCustomFrame and its descendants;
- TButton;
- TPanel.
Автор: akaGM
Дата сообщения: 26.10.2010 14:51
TechnoDreamer
да, ты прав конечно, недоглядел, пардон...
Автор: TechnoDreamer
Дата сообщения: 26.10.2010 17:25
akaGM, та просто вплотную с этим столкнулся в проекте. Пару сторонних контролов заюзать не прочь был бы, да вот только смотрятся они совсем не к месту. Хотя контролов у девок всё таки хватает, хоть и недешевое это удовольствие.
Если надо скины, посмотри в сторону AlmDiaDev'овских (http://www.almdev.com), если еще не смотрел.
Автор: projection120
Дата сообщения: 26.10.2010 17:39
Здравствуйте.
У меня вопрос по cxgridy и comboboxy в его ячейке. Есть cxgrid, несколько колонок которого являются lookupcomboboxами. Необходимо чтобы при добавлении новой строки в этих лукапах автоматически подставлялось первое значение которое в списке.(чтобы пользователь не забыл выбрать значение, иначе при пустом комбобоксе возникает ошибка при сохранении в базу)
спасибо
Автор: akaGM
Дата сообщения: 26.10.2010 17:41
TechnoDreamer
ага, спас за ответы...
а со скинами я в БуизнессСкинс сижу...
Автор: f3ka
Дата сообщения: 26.10.2010 18:02
projection120
это не в лукапы надо подставлять значение, а в значения поля подставлять ключ который есть в датасете для лукапкомбобокса...
Автор: Chukotka
Дата сообщения: 27.10.2010 00:40
Имеем TcxGrid, колонки могут группироваться. В footer'e колонки необходимо показывать количество записей - если группировки нет, то общее кол-во, если есть - то количество записей первого уровня. Как это сделать покрасивше?
Автор: BlackVetal
Дата сообщения: 27.10.2010 05:07
Chukotka
отматает пару страниц назад - только вот обсуждали как выводить информацию в заголовок группы - аналогично все делается и для футера.
Автор: sam291074
Дата сообщения: 27.10.2010 06:18
jonikDk

Цитата:
да можно подключив в uses dxBarSkinnedCustForm и ничего не надо перекомпиливать

А как это под Builder C++ сотворить?
Почитал хелп, поэкспериментировал с событиями скинконтроллера. То, что скиниться - отключается и включается, остальное никак. Причем по текстовому описанию этой формы остальные то компоненты (кроме TPanel и TButton) девовские, тоесть должны уж сами себя-то скинить, ан нет

wbsg

Цитата:
Да. Изменив и перекомпилировав исходники DevExpress.

И в какую сторону копать?
Автор: projection120
Дата сообщения: 27.10.2010 06:36

Цитата:

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

ага.. а вот тогда подскажите как обратиться к новой строке которую я хочу вставить, она же наверное не в датасете еще.
Автор: marser
Дата сообщения: 27.10.2010 07:34
projection120

Цитата:
У меня вопрос по cxgridy и comboboxy в его ячейке. Есть cxgrid, несколько колонок которого являются lookupcomboboxами. Необходимо чтобы при добавлении новой строки в этих лукапах автоматически подставлялось первое значение которое в списке.(чтобы пользователь не забыл выбрать значение, иначе при пустом комбобоксе возникает ошибка при сохранении в базу)
спасибо

ага.. а вот тогда подскажите как обратиться к новой строке которую я хочу вставить, она же наверное не в датасете еще.

<TcxCridDBColumn>.EditValue := ???, или в обработчике события DataSet.OnNewRecord: DataSet.FieldValues['FieldName'] := ???
Автор: SIgor33
Дата сообщения: 27.10.2010 10:12
projection120

Цитата:
чтобы пользователь не забыл выбрать значение, иначе при пустом комбобоксе возникает ошибка при сохранении в базу

Можно еще попробовать обработчик BeforePost а там контролировать есть ли данные в данном поле и соответственно клиенту сообщить что они обязательны к заполнению
Автор: projection120
Дата сообщения: 27.10.2010 10:27
Спасибо за ответы! Направили в нужное место буду пробовать.
Автор: brookson
Дата сообщения: 27.10.2010 11:50
Доброго всем времени суток.

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

Нужно, чтоб курсор был в первом столбце на новой записи, и выглядело как после обычного
Tedit.Setfocus

Пытался извращаться по-разному, не получилось, например:

tvAbonType.Controller.FocusRecord(tvAbonType.DataController.Recordcount-1,true);
tvAbonType.Controller.FocusedtItem:=tvAbonTypeNAME;

Ну и в таком роде.
Автор: marser
Дата сообщения: 27.10.2010 12:10
brookson
cxGridDBTableView.OptionsBehavior.FocusFirstCellOnNewRecord := True
Автор: TechnoDreamer
Дата сообщения: 27.10.2010 12:13

Код:
if Key = VK_DOWN then
if gridDBTableView1.DataController.GetRecordCount - 1 =
gridDBTableView1.DataController.Controller.FocusedRecordIndex
then
begin
gridDBTableView1.DataController.Append;
gridDBTableView1.DataController.GotoLast;
gridDBTableView1.Controller.FocusedItemIndex := 0; /
end;
Автор: brookson
Дата сообщения: 27.10.2010 12:21
TechnoDreamer
Попробовал. Смотри. В стилях у меня Selection имеет жёлный фон.
После выполнения твоего кода новая строка серая, первая ячейка белая, где курсор - не видно. И когда уже я нажму на эту запись, тогда она становится жёлтой.
А если нажать кнопочку на самом навигаторе, то новая запись желтеет сразу.
Автор: marser
Дата сообщения: 27.10.2010 12:26
TechnoDreamer

Цитата:
Ну у меня такой код вот работает. Если в последней строчке нажать VK_DOWN, то добавляется новая запись и фокус переходит на первый столбик это записи. Или, что то другое под фокусом понимается?

А если cxGridDBTableView.OptionsBehavior.FocusFirstCellOnNewRecord := True и cxGridDBTableView.OptionsData.Appending := True, то разве не получите тоже самое без всякого кодирования?
Автор: brookson
Дата сообщения: 27.10.2010 12:29
marser
нет
Автор: TechnoDreamer
Дата сообщения: 27.10.2010 12:30
а, ну да, еще в DBTableView1FocusedRecordChanged:

Код:
if ANewItemRecordFocusingChanged and (AFocusedRecord = nil) then Sender.Controller.EditingController.ShowEdit(VisibleItems[0]);
Автор: brookson
Дата сообщения: 27.10.2010 12:31
Загвоздка в пользователях. Они как правило далёкие от программ и от компа вообще люди. Надо, чтоб было как можно нагляднее и проще.
Типа - засветилось жёлтым - вводи туда значение.
Автор: TechnoDreamer
Дата сообщения: 27.10.2010 12:31
а вот это лишнее: gridDBTableView1.Controller.FocusedItemIndex := 0;
если FocusFirstCellOnNewRecord := True
Автор: marser
Дата сообщения: 27.10.2010 12:40
brookson

Цитата:
marser
нет

Не согласен! У меня прекрасно работает.
Автор: TechnoDreamer
Дата сообщения: 27.10.2010 12:41
хм, что то не работает. Всё ночь не спал, башка уже не варит. Вообщем у меня так, а почему уже не помню:


Код:
WM_NEWROWFIRSCOL = WM_USER + 1;

procedure FocusFirstColumn(var AMessage: TMessage);message WM_NEWROWFIRSCOL;

procedure TMainForm.FocusFirstColumn(var AMessage: TMessage);
begin
with TcxCustomGridTableView(AMessage.wParam) do
Controller.EditingController.ShowEdit(VisibleItems[0]);
end;

procedure TMainForm.DBTableView1FocusedRecordChanged
(Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
//Переносим фокус на первый столбик
if ANewItemRecordFocusingChanged and (AFocusedRecord = nil) then
PostMessage(Handle, WM_NEWROWFIRSCOL, Integer(Sender), 0);
end;
Автор: brookson
Дата сообщения: 27.10.2010 12:43

Цитата:
if ANewItemRecordFocusingChanged and (AFocusedRecord = nil) then Sender.Controller.EditingController.ShowEdit(VisibleItems[0]);

Ни на что не повлияло. Условие AFocusedRecord = nil не выполняется ни разу, потому и ....
А что имелось в виду VisibleItems[0]?
Автор: marser
Дата сообщения: 27.10.2010 12:58
brookson
Ну не нужно никакого хитрого кода.
1. cxGridDBTableView.OptionsBehavior.FocusFirstCellOnNewRecord := True
2. На событие OnButtonClick:
cxGrid.SetFocus;
DataSet.Insert;

И всё должно работать.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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