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

» Использование DevExpress 2

Автор: X11
Дата сообщения: 27.03.2008 17:43
Создаю таким образом кнопки на панели dxBar

Код:
procedure TfmMain.CreateFormButton(form1:TForm);
var
ABarManager : TdxBarManager;
ABar : TdxBar;
NewButton : TdxBarButton;
NewItemLink : TdxBarItemLink;
Icon : TIcon;
Bitmap : TBitmap;

begin
ABarManager := GetBarManagerByForm(self);
ABar := Bar1;
NewButton := TdxBarButton.Create(self);

NewItemLink := ABar.ItemLinks.Add;
NewItemLink.Item := NewButton;
NewItemLink.Item.Tag := form1.Handle;

NewButton.Tag := form1.Handle;
NewButton.Name := 'dxButton'+IntToStr(NewButton.Tag);
NewButton.Caption := form1.Caption + '[' + IntToStr(MDIChildCount) + ']';
NewButton.Hint := form1.Caption;
NewButton.OnClick := dxBarButtonClick;
NewButton.ButtonStyle := bsChecked;
NewButton.Down := true;
NewButton.GroupIndex := 1;
NewButton.Glyph.Canvas.Draw(0,0,form1.Icon);
NewButton.PaintStyle := psCaptionGlyph;
end;
Автор: shulum
Дата сообщения: 27.03.2008 22:32
X11

ПУНКТ 1

Var
im: TPicture;
......

begin
im:=Tpicture.Create;
....

im.LoadFromFile(откуда-то отттуда); // ну, или из потока, или еще как по необходимости
NewButton.Glyph:=im.Bitmap;
NewButton.PaintStyle:=psCaptionGlyph; // например ..., или какой надо
....
end; //собственно? вот

одно замечание - ты не присваиваешь кнопку категории ...
bar1.Categories.Add('хорошая такая категория');
NewButton.Category:=bar1.Categories.IndexOf('хорошая такая категория');


ПУНКТ 2

разрушай кнопку ... линк сам умрет ... во всяком случае у меня работает

только ИМХО при переборе надо использовать обратный порядок

for I := Bar1.ItemLinks.Count - 1 downto 0 do
Автор: Mishgan_ru
Дата сообщения: 28.03.2008 07:12
Здрасти! Подскажите пож-та ответ... C#, DevExpress 7.2,MS SQL SERVER 2005
Нужно программно поставить фильтр на гриде...


C_AKTgridView.ActiveFilterString = "[akt_date]Between('"+ dateEdit1.DateTime.Date+ "','" + dateEdit2.DateTime.Date + "')";
C_AKTgridView.ActiveFilterEnabled = true;

...ничего хорошего не получается (((( Пробовал dateEdit1.DateTime.Date.ToString("d") - нифига.. Как я понял фильтр чето свое пропихивает... или нет?
Автор: X11
Дата сообщения: 28.03.2008 10:26

Цитата:
ПУНКТ 1

Var
im: TPicture;
......

begin
im:=Tpicture.Create;
....

im.LoadFromFile(откуда-то отттуда); // ну, или из потока, или еще как по необходимости
NewButton.Glyph:=im.Bitmap;
NewButton.PaintStyle:=psCaptionGlyph; // например ..., или какой надо
....
end; //собственно? вот

мне нужно присвоить иконку окна, а не грузить из файла

Добавлено:

Цитата:
одно замечание - ты не присваиваешь кнопку категории ...
bar1.Categories.Add('хорошая такая категория');
NewButton.Category:=bar1.Categories.IndexOf('хорошая такая категория');

а это обязательно? что мне это даст?

Добавлено:

Цитата:
ПУНКТ 2

разрушай кнопку ... линк сам умрет ... во всяком случае у меня работает

только ИМХО при переборе надо использовать обратный порядок

for I := Bar1.ItemLinks.Count - 1 downto 0 do

вот за это спасибо, только какая разница в порядке, в за один проход удаляется только 1 кнопка!
кстати, ты уверен, что линк сам умирает и прога к концу дня не станет жрать по 500 метров памяти?
Автор: shulum
Дата сообщения: 28.03.2008 10:58
X11


Цитата:
а это обязательно? что мне это даст?


в реалтайме ты ее сможешь найти в настройках (Добавить/удалить кнопки)
- опционально, конечно, но все же ...


Цитата:
вот за это спасибо, только какая разница в порядке, в за один проход удаляется только 1 кнопка!
кстати, ты уверен, что линк сам умирает и прога к концу дня не станет жрать по 500 метров памяти?


ну если одна - то разницы нет ... а вот если кучка, то есть разница.
А то что линк умирает - теперь уверен, во всяком случае попытка опросить количество линков и кнопок показывает, что количество оных уменьшается после разрушения кнопки. А вот после разрушения линка - кнопка остается ... что в общем то логично.



Добавлено:

Цитата:
мне нужно присвоить иконку окна, а не грузить из файла


в свою бытность, для этого я использовал TImageList
бросал туда иконку, а вынимал BitMap, возможно, несколько коряво, но работало ...
AddIcon
GetBitmap
Автор: drunk2
Дата сообщения: 31.03.2008 07:05
После установки новых девок в Delphi7 вываливается
Цитата:
[Fatal Error] DataModule.pas(10): Unit cxGridCustomTableView was compiled with a different version of cxEdit.TcxInplaceEditList.GetEdit
Старых девок удалял полностью, удалял все dcu, делал rebuild - не помогает(

Добавлено:
Вопрос снят. Не все dcu почистил.
Автор: X11
Дата сообщения: 31.03.2008 08:09
Проблему решил одной строчкой )))

Код:
NewButton.PaintStyle := psCaptionGlyph;
NewButton.GroupIndex := 1;
NewButton.Glyph.Width := 16;//GetSystemMetrics(SM_CXSMICON);
NewButton.Glyph.Height := 16;//GetSystemMetrics(SM_CYSMICON);
NewButton.Glyph.Canvas.Draw(0,0,form1.Icon);

//ВОТ ОНА!!
ABar.Control.RepaintBar;
Автор: shulum
Дата сообщения: 31.03.2008 12:46
X11

имхо - надо саму иконку ресайзить ...

P.S.
а попробуй вот так поставить (сам не пробовал - времени нет)
NewButton.Glyph.Canvas.Draw(0,0,form1.Icon);
NewButton.Glyph.Width := 16;//GetSystemMetrics(SM_CXSMICON);
NewButton.Glyph.Height := 16;//GetSystemMetrics(SM_CYSMICON);

вообще дурь, конечно, но вдруг поможет ....
Автор: drunk2
Дата сообщения: 31.03.2008 13:55
Можно сделать, чтобы Caption у TdxNavBarItem переносился по словам на несколько строк, типа WordWarp? Как у виндового explore-а?
Автор: ArtemiyUO
Дата сообщения: 31.03.2008 14:15
Добрый день уважаемые!

Столкнулся, похоже, с багом в Devexpress контролах. Проверял на версиях 30 и 33.
Если создать New VCL Application, кинуть на неё TcxTextEdit и запустить на терминальном сервере, а окно терминальной сессии "восстановить" (сделать не на полный экран), то при переключении задач с помощью Alt + Tab теряется фокус с активного контрола на форме. В результате этого первое нажатие клавиши после переключения обратно на задачу "теряется".
т.е. если мы введем ааа, получим аа.

С обычным TEdit все в порядке.

Проблема, похоже, в неправильной обработке системных комбинаций клавиш.
Замечено, что после переключения на задачу, фокус находится у системного меню формы (это легко проверяется нажатием на пробел)

Собираюсь оформить баг-репорт, а пока ничего лучше, чем приделать следующую кривую заплатку не придумал:
На главную форму приложения кинуть TApplicationEvents и в обработчике OnMessage написать:
Handled := (Msg.Message = WM_KEYUP) and (Msg.wParam = VK_MENU);

Никто не сталкивался с этой проблемой? Как решали?
Автор: ArtemiyUO
Дата сообщения: 01.04.2008 14:23
Запостил баг. Сегодня баг сделали приватным и дописали такой комент)
Hi
Thank you for your report. We will be happy to help you, but we need to clarify your license information first. If you are a registered customer, please specify the ID of the Client Center account you were using to order our components. Then, feel free to reactivate this issue. It is safe, since I have marked this issue as Private.

Может быть тот кто является их клиентом поможет?

ЗЫ Я разочарован.
Автор: X11
Дата сообщения: 01.04.2008 14:56
Подскажите, как правильно выполнить Группировку программно?
Автор: xokc
Дата сообщения: 01.04.2008 19:32
X11
Column.GroupIndex := 0;
Автор: korobovmax
Дата сообщения: 01.04.2008 22:03
ArtemiyUO, известный баян.

Раньше, когда я с ними общался, 2 вопроса обсуждали, на третьем точно такой же текст отвечали Приходилось менять почту и скриншоты...
Сейчас, видимо, строже стали ))
Автор: DumnedAspid
Дата сообщения: 02.04.2008 13:50
Нашел любопытный глюк в гриде - объект SelectedRecords (класс TcxCustomGridRecord) указывает на выделенные строки только если нет группировки. Как только записи группируются, SelectedRecords указывает на совершенно левые записи. А объект SelectedRows ссылается на тот же самый указатель, что и SelectedRecords

Впрочем, если точно знать количество групп, то смещение можно подсчитать.
Автор: StdNet
Дата сообщения: 04.04.2008 21:55
Поставил девэкспрес версии 7.3.6
все вроде работает нормально НО
когда в ObjectExplorer'e жму правой кнопочкой по проэкту, и выбираю Создать элемент
мне ВС предлагает создать элементы только из Девэкспреса.
т.е. простую формочку или класс создать немогу... кто то такое встречал и как с этим бороться?
Автор: StdNet
Дата сообщения: 05.04.2008 13:49
еще такой вопрос.... у меня все проэкты компилятьсяч и работают нормально
Даю юзеру откомпиленый файл(у юзера установлен дотнет фреймворк 2.0) у него не работает пишет

System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.XtraEditors.v7.3, Version=7.3.6.0, Culture=neutral, PublicKeyToken=49d90c14d24271b5' or one of its dependencies. Не удается найти указанный файл.
File name: 'DevExpress.XtraEditors.v7.3, Version=7.3.6.0, Culture=neutral, PublicKeyToken=49d90c14d24271b5'

это что же получаеться... девэкспрес нада ставить и юзерам на компы?
Автор: xokc
Дата сообщения: 06.04.2008 10:50
StdNet
Я не спец в .Нет, но с моей точки зрения без нетовской сборки ДевЭкспресса ничего работать и не должно по определению.
Автор: Graach
Дата сообщения: 06.04.2008 15:48
если не возражаете вопросик по TdxSideBar: на каждом айтеме прописала хинты, установила showhint:=true для компоненты.
Прописала:
procedure TMainform.AppOnHint(Sender: TObject);
begin
StatusBar1.Panels[1].Text:=Application.Hint;
end;
получила результат: Черное непонятно что - мой курсор. Когда перехожу на другой элемент иногда получаю: . Причем пока не выйду за границу компонента ничего не меняется, иногда хинт "зависает": уже начинается расчет, открывается новая форма, а хинт еще висит и в статус баре тоже.

И вопросы:
1) можно как-то сделать так, чтобы на самом баре хинт не отображался, а прописывался только в статусе;
2) можно ли сделать так, чтобы при переходе указателя на новый элемент хинт переключался, а не подвисал?

Использую Delphi7 и DevExpress декабрьский. сборка местная (за что спасибо огромное)
Автор: VadimLou
Дата сообщения: 08.04.2008 22:32
StdNet
посмотр в зависимости проекта от других либ и дай(зарегь в GAC) юзеру то чего не хватает
Автор: X11
Дата сообщения: 10.04.2008 10:39
Подскажите такую вещь. Есть код, который грузит в комбобокс VirticalGrid несколько записей из файла


Код:
Var
sCurrentSkin : String;

if FileExists(sAppPath + 'skins.txt') then
(vgGeneralSkinName.Properties.EditProperties as TcxComboBoxProperties).Items.LoadFromFile(sAppPath + 'skins.txt');

затем нужно выбрать программно текущий скин
(vgGeneralSkinName.Properties.EditProperties as TcxComboBoxProperties)...... := sCurrentSkin;
как здесь сфокусировать (выбрать) скин по имени, а не по ItemIndex?

Автор: X11
Дата сообщения: 10.04.2008 13:54
Решил проблему
vgGeneralSkinName.Properties.Value

Добавлено:
Очень нужна помощь по VerticalGrid.
Есть таблица в базе ID, ID_PARENT, NAME. Как вы поняли - это для построения дерева.
Нужно встроить дерево в Row этого самого вертикального грида, но как?
И ещё. Что посоветуете использовать: cxTreeList или cxVirtualTreeList1?
Автор: zergan82
Дата сообщения: 11.04.2008 11:27
ДОбрый день. Нажна помощь. Установлены DevExpress.ExpressQuantumGrid.Suite.v6.23 fro Delphi7. При нажатии на cxGrid с открытым query в приложении выдается ошибка 'Privileged instruction' Помогите плиз
Автор: Alkatraz
Дата сообщения: 11.04.2008 11:52
Здравствуйте!

Возникла острая необходимость перевести все ADODataSet'ы на асинхронность исполнения и фетчинга, в связи с чем всплыли полностью неадекватные глюки в QuantumGrid - после FetchComplete, грид заполняется значениями, но боковые скроллбары исчезают, хотя мышкой скроллится, и при закрытии приложения вылезает Exeption.

Кто-нибудь, поделитесь информацией по работе с асинхронными подключениями в ADO и QuantumGrid'ом!..

На сайте DevExpress недвусмысленно намекают, что все операции с гридом должны быть выполнены в основном потоке. Как заставить его работать без глюков, ведь даже примитивный DBGrid отрабатывает нормально и без глюков при работе с асинхронными запросами?..
Автор: tonyrubin
Дата сообщения: 11.04.2008 11:53
Где находится буфер группировки строк в gride? И как возвращать строку на своё место автоматически?
Автор: afiget
Дата сообщения: 11.04.2008 13:36
Alkatraz
Снчала в основном потоке DisableControls, потом фетч, потом EnableControls пробовал?
Автор: Alkatraz
Дата сообщения: 11.04.2008 13:41
afiget
Не помогает...
Полностью аналогичная ситуация, если у View делать BeginUpdate перед открытием и EndUpdate после Fetch...
Автор: X11
Дата сообщения: 11.04.2008 14:23
как в VerticalGrid пробежаться по всем строкам в цикле и очистить значения? (Value := null)

Добавлено:

Цитата:
Очень нужна помощь по VerticalGrid.
Есть таблица в базе ID, ID_PARENT, NAME. Как вы поняли - это для построения дерева.
Нужно встроить дерево в Row этого самого вертикального грида, но как?
И ещё. Что посоветуете использовать: cxTreeList или cxVirtualTreeList1?


Подсказали использовать PopupEdit - туда можно вставить теперь хоть чёрта лысого )))))))))
Автор: X11
Дата сообщения: 12.04.2008 00:08
На форме есть cxDBTreeList и TpFIBDataSet. Натравил дерево на таблицу, прописал KeyField и ParentField. Открываю таблицу. В дереве появлется ползуном, мол данные есть, только ничего не отображается. В чём может быть проблема?

Добавлено:
Само собой, что данные в гриде, например, отображаются

Добавлено:
Дошло - нужно создавать колонки.
Автор: X11
Дата сообщения: 12.04.2008 09:57
Не могу допереть, как узнать значение выделенного узла

vgAreasID_TYPE.Properties.Value := cxDBTreeList1.FocusedNode.Values[ ??????? ]

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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