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

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

Автор: LadyOfWood
Дата сообщения: 26.02.2012 14:13
vcrank
Тут проблема не с запусками, а с тем что у cxGrid определенная логика, она по свойствам создает контрол для редактирования поля грида, очевидно что есть кэш контролов, так вот вы изменяете свойтва, но не контрола, если он уже был создан. Очевидно что новые свойства к нему не применяются.
Автор: X11
Дата сообщения: 27.02.2012 09:49
У кого-нибудь получалось сохранять свойства типа TStrings с помощью TcxPropertiesStore без лишних телодвижений?
Автор: XeoNu905097
Дата сообщения: 27.02.2012 10:49
и все-таки, как решить вопрос ???
ответ кто-то может подсказать, плиз ...
что должно быть вместо <X>, см. выражение ниже:
TcxPopupEdit(cxGrid4DBTableView1Col1.<X>).DroppedDown:=True;

начало:
http://forum.ru-board.com/topic.cgi?forum=33&topic=2214&start=1340

afiget

Вот сообщение, с которого началась дискуссия:

Цитата:
Прошу прощения, если уже было. Вопрос: Properties колонки таблицы установлено в PopupEdit. Как можно его (PopupEdit) программно развернуть или, наоборот, свернуть? Спасибо.


Речь шла о свойстве Properties колонки, а не об отдельно стоящем на форме контроле TcxPopupEdit.

И вот, что ты написал:

Цитата:
Или вот так:
TcxComboBox(ИмяКолонкиВГриде.Properties).DroppedDown:=True;


Сделал явное преобразование Properties, что является наследником класса TcxCustomEditProperties, к TcxComboBox, который наследник TcxCustomPopupEdit. Это все равно, что объект типа TGraphic, преобразовать к объекту типа TWinControl. Вот тебе и "ЗЫ".
Автор: salexn1
Дата сообщения: 27.02.2012 11:51
XeoNu905097
TcxPopupEditProperties(ИмяКолонкиВГриде.Properties).НужноеСвойство :=

Автор: XeoNu905097
Дата сообщения: 27.02.2012 12:10

Цитата:
salexn1

TcxPopupEditProperties(cxGrid4DBTableView1Col1.Properties).DroppedDown:=True;
[DCC Error] Unit1.pas(243): E2003 Undeclared identifier: 'DroppedDown'
Автор: salexn1
Дата сообщения: 27.02.2012 12:37
XeoNu905097

Я вообще-то не писал нигде о DroppedDown...
В случае с PopupEdit все может быть сложнее.
Судя по их коду, через Properties вы не сможете открыть\закрыть Popup окно.
Нужно стучаться к контролу, который создается для редактирования.
Но тут проблема в том, что данный контрол может быть еще и не создан...
Под рукой нет Delphi... Вечерком гляну, как можно это сделать.
Автор: salexn1
Дата сообщения: 28.02.2012 09:08
XeoNu905097
По-ходу там все пИчально...
Если только как-то не эмулировать нажати мышой.
Автор: andreybear
Дата сообщения: 29.02.2012 05:16
XeoNu905097
Если правильно понял, то можно сделать так:

Код: View.Site.SetFocus;
View.ViewData.Records[0].Focused := true;
View.Controller.EditingController.ShowEdit(View.Items[0]);
TcxPopupEdit(View.Controller.EditingController.Edit).DroppedDown := true;
Автор: delover
Дата сообщения: 29.02.2012 05:57
andreybear
Жуть в полоску, это так же как и в GridEh - все контролы редактирования создаются только при обращении к свойству EditingController? Например в EhLib-e эти компоненты редакторы интерфейсы по сути. Да и в VirtualTreeView пропатченом так же было.
Автор: salexn1
Дата сообщения: 29.02.2012 07:24
delover
Да, но глупо же, согласитесь, создавать все Edit controls сразу, при присвоении свойств.
Это ж никакой оперативы не хватит, если загрузить даже пару тыс записей с несколькими колонками.
Автор: delover
Дата сообщения: 29.02.2012 08:23
salexn1
Edit-у без разницы сколько тысяч записей, он же с колонкой работает а не с ячейкой. Да и оператив-ы они занимают не много. Однако когда программа криво написана бывает фокус улетает на handle который невидим и по сути vcl не умеет физически передавать ему фокус. Но вот программисты умеют видимо, по этой причине лучше чтобы контролы эти создавались только на момент редактирования. Описанная ситуация уже была и помогли только JCL Trace Stack. Удалось вычислить что фокус был у калькуляторов DB Edit или гридины непонятно, ими никто никогда не пользовался и про них не знали.

ЗЫ
а вот если писать не криво то можно создать контролы всех известных типов и связывать с ними на момент редактирования в зависимости от типа филда, давно в какой-то библиотеке видел как это реализовано.
Автор: andreybear
Дата сообщения: 29.02.2012 08:49
delover
Ну, видимо, да. Возможно есть более изящный вариант, я пользуюсь приведенным.
Автор: X11
Дата сообщения: 29.02.2012 11:29
Кто знает, у девок появилось что-то человеческое в плане получения списка доступных скинов?

здесь
http://www.devexpress.com/Support/Center/KB/p/K18293.aspx?searchtext=skinres&p=T1|P0|0

описано, как можно из *.SKINRES файла получать и загружать динамически скины, но как создать такой файл со списком всех доступных готовых скинов, я не могу найти.

У девок есть редактор скинов, который может создать такой .SKINRES файл, но как в новый проект загрузить все доступные скины, я не могу понять

Добавлено:
Нашёл


Код: uses LookAndFeelPainters;
...

Var
PaintersManager : TcxCustomLookAndFeelPainter;
i: integer;
begin
//загружаем список скинов
TcxComboBoxProperties(comboSkins.Properties).Items.Clear;
TcxComboBoxProperties(comboSkins.Properties).Items.Add('');//пустую строку тоже нужно добавить, чтобы пользоватtль мог отменять выбор скина

for i := 0 to Pred( cxLookAndFeelPaintersManager.Count ) do
TcxComboBoxProperties(comboSkins.Properties).Items.Add(cxLookAndFeelPaintersManager.Items[i].LookAndFeelName);
Автор: andreybear
Дата сообщения: 29.02.2012 12:13
X11
Я так получаю список скинов:

Код: var APainters: TcxExtendedStylePainters;
i: Integer;
begin
APainters := GetExtendedStylePainters;
for i := 0 to APainters.Count - 1 do
dxBarListStyles.Items.Add(APainters.Names[i]);
end;
Автор: X11
Дата сообщения: 29.02.2012 12:49
А где живет TcxExtendedStylePainters?
И работает ли Ваш способ для последних девок, например для 2.3?
Автор: andreybear
Дата сообщения: 29.02.2012 13:11
X11

Цитата:
А где живет TcxExtendedStylePainters?
И работает ли Ваш способ для последних девок, например для 2.3?

Модуль cxLookAndFeelPainters.
Насчет 2.3 не знаю, но в x52 и x56 точно работает.
Автор: X11
Дата сообщения: 29.02.2012 13:14
в том-то и дело, что в 2.3 Ваш способ работать не будет
Автор: tanaseduard
Дата сообщения: 29.02.2012 13:25
X11
Ниже код процедур модуля который поможет Вам. Переписывал заново его под 2.3

Код:
Procedure TDevExpressSkins.CreateAllSkinButtons(ASubItem:TdxBarSubItem;AImIndexWithout,AImIndexWith:Integer;ACreateWithoutButton:Boolean);
Var
barBtn:TdxBarItemLink;
i:Integer;
Begin
Try
If ACreateWithoutButton Then
Begin
barBtn:=ASubItem.ItemLinks.Add;
barBtn.Item:=TdxBarButton.Create(ASubItem.BarManager);
SetLength(FSkinButtonItems,Length(FSkinButtonItems)+1);
FSkinButtonItems[Length(FSkinButtonItems)-1]:=barBtn.Item;
barBtn.UserPaintStyle:=psCaptionGlyph;
TdxBarButton(barBtn.Item).OnClick:=SkinButtonClick;
TdxBarButton(barBtn.Item).ImageIndex:=AImIndexWithout;
TdxBarButton(barBtn.Item).Caption:='Без скина';
barBtn.BeginGroup:=True;
End;
//Create Skin Button
For I:=0 To cxLookAndFeelPaintersManager.Count-1 Do
Begin
barBtn:=ASubItem.ItemLinks.Add;
barBtn.Item:=TdxBarButton.Create(ASubItem.BarManager);
barBtn.UserPaintStyle:=psCaptionGlyph;
TdxBarButton(barBtn.Item).OnClick:=SkinButtonClick;
TdxBarButton(barBtn.Item).ImageIndex:=AImIndexWith;
TdxBarButton(barBtn.Item).Caption:=cxLookAndFeelPaintersManager.Items[I].LookAndFeelName;
TdxBarButton(barBtn.Item).Glyph:=GetSkinImageSmall(cxLookAndFeelPaintersManager.Items[I].LookAndFeelName);
SetLength(FSkinButtonItems,Length(FSkinButtonItems)+1);
FSkinButtonItems[Length(FSkinButtonItems)-1]:=barBtn.Item;
If i=0 Then barBtn.BeginGroup:=True;
End;
Finally
End;
End;

Function TDevExpressSkins.GetSkinImageSmall(ASkinName:String):TBitMap;
Var
Painter:TcxCustomLookAndFeelPainter;
SkinInfo:TdxSkinInfo;
Skin:TdxSkin;
Group:TdxSkinControlGroup;
Element:TdxSkinElement;
Begin
Result:=Nil;
cxLookAndFeelPaintersManager.GetPainter(ASkinName,Painter);
Painter.GetPainterData(SkinInfo);
Skin:=SkinInfo.Skin;
Group:=Skin.GetGroupByName('Common');
Element:=Group.GetElementByName('SkinIcon');
If Element<>Nil Then
Result:=Element.Image.Texture.GetAsBitmap;
End;

Function TDevExpressSkins.GetSkinImageLarge(ASkinName:String):TBitMap;
Var
Painter:TcxCustomLookAndFeelPainter;
SkinInfo:TdxSkinInfo;
Skin:TdxSkin;
Group:TdxSkinControlGroup;
Element:TdxSkinElement;
Begin
Result:=Nil;
cxLookAndFeelPaintersManager.GetPainter(ASkinName,Painter);
Painter.GetPainterData(SkinInfo);
Skin:=SkinInfo.Skin;
Group:=Skin.GetGroupByName('Common');
Element:=Group.GetElementByName('SkinIconLarge');
If Element<>Nil Then
Result:=Element.Image.Texture.GetAsBitmap;
End;

Procedure TDevExpressSkins.SetSkin(ASkinName:String);
Begin
FSkinController.SkinName:=ASkinName;
If ASkinName='' Then
FSkinController.UseSkins:=False
Else
FSkinController.UseSkins:=True;
End;
Автор: X11
Дата сообщения: 29.02.2012 13:38
А зачем он мне, что он делает такой огромный? Я ж написал, что уже нашёл способ и он занимает несколько строк.
Автор: tanaseduard
Дата сообщения: 29.02.2012 13:50
X11
Сорри. Не прочитал что уже нашел. Вклинился в последние сообщения. А это автономный класс. Он создает кнопки с иконками скинов и контролирует их переключение.
Автор: LadyOfWood
Дата сообщения: 29.02.2012 14:59

Цитата:
Кто знает, у девок появилось что-то человеческое в плане получения списка доступных скинов?

В последних появиласть галлерея скинов.
Автор: simplecs
Дата сообщения: 29.02.2012 15:44
Здравствуйте!
Подскажите пож-ста по компоненту TcxGrid (ExpressQuantumGrid Suite 6) для Delphi

1.    Есть ли в нем собственные методы добавления и удаления записей из подключенной таблицы и базы данных? Чтобы не обращаться к DataSourcy. В примерах для WinForms – они это делают, а вот для Delphi я не нашел
2.    Как сделать так, чтобы вделалась не строка а диапазон ячеек (как в Excel)
3.    Как узнать координаты диапазона: координату (по записи и столбцу) левой верхней и правой нижней ячейке…. Что-то типа : колонка - 2, запись - 4
Спасибо!
Автор: X11
Дата сообщения: 29.02.2012 15:57
Я думал, такие вопросы уже не задают

Datacontroller.edit;
Datacontroller.Values[x, z] :=
Datacontroller.post;

но лучше в датасет добавлять
Автор: simplecs
Дата сообщения: 29.02.2012 21:14
Ну задают....
А не подскажите на второй и третий вопросы ответы?
Автор: salexn1
Дата сообщения: 29.02.2012 22:56
simplecs
п.2
GirdView.OptionsSelection.CellMultiSelect := true;
GirdView.OptionsSelection.InvertSelect := False;

п.3
Смотри в сторону GridView.Controller.SelectedRow(Columns)
Автор: Andrey128
Дата сообщения: 01.03.2012 06:44
Использую TcxTreeView в Delphi XE2 (думаю версия не принципиальна),
и если Length(Node.Text) > 80, то Hint обрезается до 80 символов.
Насколько я понял, TcxTreeView - это обертка, а хинты выводит стандартный TTreeView, в котором и происходит это обрезание:

Код: procedure TCustomTreeView.WMNotify(var Message: TWMNotify);
...
MaxTextLen := SizeOf(PToolTipTextW(NMHdr)^.szText) div SizeOf(WideChar);
if Length(FWideText) >= MaxTextLen then
SetLength(FWideText, MaxTextLen - 1);
Автор: mdid
Дата сообщения: 01.03.2012 08:00
Andrey128
если ничего не поможет киньте свой взор на cxHintStyleController и на его событие OnShowHint
Автор: delover
Дата сообщения: 01.03.2012 18:11
Скажите а есть гламурные Девки для 2010, но чтобы там были компоненты dxBlaBla? Есть желание потихоньку приучить приложение Delphi7 хотябы к 2006-2010. Больше всего интересуют меню гридины я сам подошью. Может встречал кто?
Автор: Corsairs
Дата сообщения: 01.03.2012 18:22
delover
это сколько надо выпить, чтобы понять - что же имеется в виду под компоненты dxBlaBla, а?

А по сути - а в чем собственно разница? Ведь в инсталляторе есть поддержка и других версий Delphi, а не только D7...
Автор: delover
Дата сообщения: 01.03.2012 18:33
под D7 есть девки но других многих библиотек нет вообще. Пользователям надо тока меню лиш бы им сохранить. Будь они неладны временами. А мне надо безбажный билд с компонентами поновее. У меня Органайзер программа интересная. Будоражит мысль что прогу можно востановить. Но я в компонентах полный ламер - Ehlib любимый и тд баги отправляю создателям. Помогите сирому немного...

Добавлено:
Corsairs
Что я написал такого что вы взьярились, сейчас политика фирмы избавить от девок весь софт я сразу иду на контакт и узнаю много нового. Не хотите общаться девок мы вынесем из софта. TMS мне тоже не нравятся но юзеры хавают. Либо вы умерите свой пыл объясните по языку нормальному русскому либо незачем трыднеть, я не знаю что такое инсталлятор я не админ я программист и за софт не отвечаю. Чороче хватит гнать - про русски плиз что где и как и сколько. Ну и варианты.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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