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

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

Автор: marser
Дата сообщения: 16.02.2011 07:05
RomanDaemon

Цитата:
Подскажите пожалуйста, а есть компонент, типа диалогбокс, который бы имел галку - "показывать в дальнейшем"

offtop
Несложно самому написать фyнкцию. Только к DevExpess это отношение не имет. Пример: [more=Подробнее]function CheckMessageDlg(Msg, Caption, CheckBoxCaption: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; var AChecked: Boolean): TModalResult;
var
ADialog: TForm;
I, L, T, D: Integer;
AControl: TControl;
ACheckBox: TCheckBox;
begin
ADialog := CreateMessageDialog(Msg, DlgType, Buttons);
try
if Caption <> '' then
ADialog.Caption := Caption;

L := 0;
T := ADialog.ClientHeight;
D := 0;

ACheckBox := TCheckBox.Create(ADialog);
with ACheckBox do
begin
Parent := ADialog;
Caption := CheckBoxCaption;
Checked := not AChecked;
Width := ADialog.Canvas.TextWidth(ACheckBox.Caption) + 30;
end;

for I := 1 to ADialog.ControlCount - 1 do
begin
AControl := ADialog.Controls[I];
if AControl is TLabel then
begin
ACheckBox.Top := AControl.Top + AControl.Height + 10;
ACheckBox.Left := AControl.Left;
T := ACheckBox.Top + ACheckBox.Height + 20;
if ACheckBox.Width > AControl.Width then
L := ACheckBox.Width - AControl.Width;
end;
if AControl is TButton then
begin
D := T - AControl.Top;
if D > 0 then
AControl.Top := AControl.Top + D;
if L > 0 then
AControl.Left := AControl.Left + L div 2;
end;
end;

if D > 0 then
ADialog.ClientHeight := ADialog.ClientHeight + D;

if (ACheckBox.Left + ACheckBox.Width) > ADialog.ClientWidth then
ADialog.ClientWidth := ACheckBox.Left + ACheckBox.Width + 5;

Result := ADialog.ShowModal;
AChecked := not ACheckBox.Checked;
finally
ADialog.Free;
end;
end;[/more]

Добавлено:
Kmich

Цитата:
Народ подскажите установил DevExp 54 версию под delphi2007 и появился следующий косяк: у меня в ButonEdit кнопки с иконками стали отображаться серым цветом как неактивные а если ставлю enable=false то они делаются в нормальном цвете. Может кто сталкивался и подмогнет?
Об этом уже писали. Глюк 54 версии
Автор: Kmich
Дата сообщения: 16.02.2011 07:54
marser
а как лечится не писали
Автор: marser
Дата сообщения: 16.02.2011 08:14
Kmich

Цитата:
а как лечится не писали

Установкой 55 версии. http://www.devexpress.com/Support/Center/p/Q297763.aspx
Или откатом на 53. Или обращением в службу поддержки, если зарегистрированный пользователь.
Автор: GuSoft2007
Дата сообщения: 16.02.2011 10:11
2 vladman

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

2 marser

уже спрашивал тут, может изменения есть - посмотрите плз, в 55 версии у tcxListview появилась поддержка групп (как у стандартного листвиева в rad 2010 - чтото типа свойств Groups и GroupView), уж очень нехочется все это руками реализовывать...
и кстати, не ткнете носом, может в варезнике есть тема, где можно скачать?
Автор: marser
Дата сообщения: 16.02.2011 10:21
GuSoft2007

Цитата:
посмотрите плз, в 55 версии у tcxListview появилась поддержка групп (как у стандартного листвиева в rad 2010 - чтото типа свойств Groups и GroupView), уж очень нехочется все это руками реализовывать...
Когда выйдет, тогда и посмотрим.
http://www.devexpress.com/Support/WhatsNew/VCL/
Автор: GuSoft2007
Дата сообщения: 18.02.2011 03:19
на пустой форме лежит dxSkinController1, выбран какойто скин, юзескинс=тру. запускается нормально с этим скином. вопросик - как изменить цвет формы (не изменяя сам скин, а програмно, допустим form1.color:=clwhite, но чтобы остальные элементы скина не изменились визуально на форме)? т.е фактически надо чтобы скин применялся только к заголовку формы и ее краям, а не к самой форме. просто так не получается, а в событии TForm1.dxSkinController1SkinControl незнаю в AControl к чему привязываться.
TForm1.dxSkinController1SkinForm не подходит вроде, потому как там скин для всей формы отменяется.
Автор: BlackVetal
Дата сообщения: 18.02.2011 06:58
GuSoft2007
Например попробуй положить LayoutControl задать ему другой скин (или еще какие-нить настройки), по идеи все дочернии контролы должны подхватить эти настройки скина.
Автор: priks
Дата сообщения: 22.02.2011 09:46
Господа, поясните логику работы с TdxDBTreeView. Необходимо реализовать добавление ветвей дерева с помощью Drag&Drop (из грида перетаскиваются необходимые записи). Как правильно поступать – добавлять новую запись в датасет, или же формировать новую ветвь, а TdxDBTreeView будет сам добавлять запись в связанную таблицу? Буду благодарен, если покажите пример кода для добавления.
Автор: marser
Дата сообщения: 23.02.2011 09:54
priks

Цитата:
Буду благодарен, если покажите пример кода для добавления.

Так в ExpressQuantumTreeList есть DragDropDemo. Чем не устраивает?
Автор: priks
Дата сообщения: 23.02.2011 10:24
marser

Цитата:
Так в ExpressQuantumTreeList есть DragDropDemo. Чем не устраивает?

Спасибо. Естествеено, демки все были предварительно изучены. По интересующему меня TdxDBTreeView там довольно скудновато. Основная проблема была с тем, как и где заполнять дополнительные поля таблицы, которые TdxDBTreeView "не трогает".
На данный момент вопрос закрыт - все необходимое реализовал.
Автор: svs123456789
Дата сообщения: 23.02.2011 14:31
кладу на форму cxLocalizer,
cxLocalizer1.filename := ExtractFilePath((Application.ExeName)) + 'rus.ini';
cxLocalizer1.active := true;

в rus.ini есть в том числе и строки cxNavigatorHint_Next="След.запись"
итак компонент активен и файл присвоен ,
а хинты остаются на англ
Автор: X11
Дата сообщения: 23.02.2011 14:38

Код: if FileExists(sMyDocAppPath + 'Lang\lang.ini') then
begin
cxLocalizer1.Active := false;
cxLocalizer1.FileName := sMyDocAppPath + 'Lang\lang.ini';
cxLocalizer1.Active := True;
cxLocalizer1.LanguageIndex := 1049;
end;
Автор: svs123456789
Дата сообщения: 23.02.2011 15:29
X11 спасибо!

применение cxGrid и cxDBVerticalGrid стало вызывать нереальные тормоза при закрытии программы (т.е. после нажатия f8 на строке end; в .dpr) .
ранее я с таким не сталкивался, причем на игрушечной базе с 2 табл (мастер-детал) по 10 записей.
какие свойства этих гридов могли подвесить систему???

попробовал GridMode=True and GridModeBufferCount=1
Автор: frumych
Дата сообщения: 24.02.2011 10:47
Помогите новичку плиз. Как в cxGridTableView сделать проверку значений перед добавлением новой строки? Ну или установить свойство на подобии Required для столбца? Ну или сделать проверку ввода на значение в поле, где никто ничего не изменял и, соотв-но onValidate не срабатывал?
Автор: priks
Дата сообщения: 24.02.2011 11:13
frumych
В гриде, точнее в cxGridTableView в свойствах столбца (TCxGridDBColumn) есть Properties. Там ты задаешь, какой тип имеют твои данные и как их редактировать (TextEdit, PopupEdit и т.д.) - так вот там и есть события OnValidate, OnChange, OnEditValueChange и т.д.
Автор: frumych
Дата сообщения: 24.02.2011 11:20
priks

Это понятно. А как отловить пустое поле? То есть там где пользователь ничего не менял и, соотв-но, события OnValidate, OnChange, OnEditValueChange и т.д. не срабатывали?
Автор: priks
Дата сообщения: 24.02.2011 11:25
frumych
На уровне DataSet-a не вариант (BeforePost)?
Автор: frumych
Дата сообщения: 24.02.2011 11:45
priks

Нет там датасета. Таблица не привязана к db.
Автор: priks
Дата сообщения: 24.02.2011 12:02
frumych
Извиняюсь - только с базами его использую, вот глаз и замылился
cxGridTableView - DataController - OnBeforePost
Там проверишь свои значения на корректность ну и сможешь воздействовать, например
ADataController.Cancel; - отменит полностью ввод строки.
ADataController.Edit; - вернет пользователя для продолжения редактирования
Автор: frumych
Дата сообщения: 24.02.2011 12:07
priks

Спасибо, помогло)
Автор: svs123456789
Дата сообщения: 24.02.2011 17:20
почемуто в статус баре ихний навигатор, в отличие от стандартного, не выводит хинты
Автор: JohnSilver182
Дата сообщения: 25.02.2011 09:31
Не подскажите почему в dxDbTreeView так сдвигается все
http://screenshot.su/show.php?img=e4b60ee49aebe654d102f575eadf1237.jpg
Автор: tanaseduard
Дата сообщения: 25.02.2011 14:53
Уважаемые подскажите компоненты по аналогу dxMemData но чтоб можно было строить Master-Detail связки, и чтоб был побыстрее, а то чуть тормознутый он.
Спасибо.
Автор: f3ka
Дата сообщения: 25.02.2011 15:03
tanaseduard
kbmMemTable?
Автор: tanaseduard
Дата сообщения: 25.02.2011 15:11
f3ka

Щас проверим.
Спасибо.
Автор: Figaro2000
Дата сообщения: 25.02.2011 23:23
JohnSilver182
после чего такой вид у дерева? после какого действия?
Автор: X11
Дата сообщения: 26.02.2011 11:09
TcxDBCheckComboBox подключен к датасету, но данные в список не загружаются, в чем может быть дело?
Автор: tanaseduard
Дата сообщения: 26.02.2011 11:44
X11
Покажы код dfm. Ну я для проверки поставь на форме грид и подключи туда же.
Автор: X11
Дата сообщения: 26.02.2011 13:07
tanaseduard, т.е. ты хочешь сказать, что у тебя всё ок? Можешь сделать тестовый проект?

Добавлено:
Я сделал снимок. Видно, что грид наполнен, а TcxDBCheckListBox и TcxDBCheckComboBox пустые




Вот настройки в инспекторе свойств:
http://i1.fastpic.ru/big/2011/0226/1f/dd4a1fa2ffdcb865e0be0238a923941f.png

cvfstatesstring
TcxCheckGroup
cxCheckGroup
CheckGroup
Автор: tanaseduard
Дата сообщения: 26.02.2011 14:02
X11

У TcxDBCheckComboBox есть 4 варианта выбора(определяется полем Properties.EditValueFormat), выбрать можно только из списка который занесен в Properties.Items:
cvfInteger - создает битовую маску из выбора
cvfCaptions - создает строку с выбранными данными, разделение через точку с запятой
cvfIndices - индексы, старт точка с запятой , разделение запятыми
cvfStatesString - строка вида 010101 - если на позиции 1 значит элемент выбран.

Соответственно в поле будет записано готовое значение, я например 90% случаем использую битовую маску, так как с ней просто работатьвнутри БД через PL/SQL и просто SQL, и иногда cvfStatesString - тоже просто анализировать через состояние позиции в строке.
Ниже скрины.


Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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