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

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

Автор: golkanavt
Дата сообщения: 07.02.2009 09:31
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express



Ресурсы:
Home page
Documentation for VCL Products
Support Center
Online documentation
Community blog
DevExpress Channel - Training Videos, Interviews, Demos

DX-Squad - комсомольцы-добровольцы, защитники слабых и угнетенных
DevExpress Extentions
Free DevExpress Addons
Кое-какие сэмплы(давно не обновлялся, но все же)


Сами прирученные компоненты частенько приходят на водопой сюда

DLL со скинами из библиотеки dxSkins, автор Ziltoid [more] Наконец-то дошли руки до выкладки на файлообменник.
Скачать DLL можно здесь: http://rapidshare.com/files/166902064/SkinDLL.rar

Архив включает в себя:
- DLL со скинами (помимо скинов есть битмапы 16х16 для ImageCombobox'ов, битмапы 32х32 для RibbonGallery, константы цветов полосатости и фонов для каждого скина)
- модулек SkinHandle.pas с процедурками загрузки и навешивания скина на приложение.
- тестовый пример.
[/more] линк обновлен
Продолжение, Первая часть, вторая часть
Автор: X11
Дата сообщения: 07.02.2009 11:04
Не знаю, может быть разработчики читают эту ветку. Может им как-то попадёт это сообщение.
Так вот. В компоненте cxLocalizer есть один очень неприятный момент. Такой момент есть у некоторых компонент, связанных с базами данных, а в FibPlus его прекрасно обошли.
В FibPlus - это свойство DesignDBOptions в компоненте TpFibDataBase, там есть ddoStoreConnected, которое почти в 100 процентах случаев нужно ставить в False, иначе если будет оно в True и пользователю отдать программу, то при запуске программа будет подключаться к той базе, которая была подключена в дизайне.
Так и в TcxLocalizer`е. Если в дизайне у тебя подключен файл с переводом, то есть большая вероятность того, что программист забудет поставить свойство Active в False и отдаст программу пользователю после компиляции. Только программа там, у пользователя, НЕ запуститься из-за исключения. TcxLocalizer будет пытаться подключить файл, который был подключен у программиста в дизайне. Другое дело, если бы прога в таком случае хотя бы просто выдала ошибку и продолжала работать на английском, а так вообще не запускается.
Автор: Radio_Kat
Дата сообщения: 07.02.2009 11:18
подскажите пожалуйста как получить дату, которая выбрана пользователем в TcxScheduler ?
Автор: yurik13y
Дата сообщения: 07.02.2009 15:31
Нужна помощь, создавал проект (Delphi 2007) с использованием DevExpress 38, решил поставить 41.
После этого проект начал выдавать ошибки. Локализовал до окна на котором лежит GridPanel, а в нем cxButton. Убрал кнопку - все заработало как часы.
Для эксперимента на другой форме создал GridPanel и положил туда cxButton - и опять ошибки...
Кто-нить сталкивался с таким?
или
Может есть замена GridPanel?
Автор: igorkn
Дата сообщения: 07.02.2009 16:45
Как программно открыть PopupEdit в cxGrid?
Автор: xokc
Дата сообщения: 07.02.2009 21:54
igorkn
см. http://www.devexpress.com/Support/Center/KB/p/A805.aspx
Автор: vladman
Дата сообщения: 08.02.2009 00:51
yurik13y

Цитата:
Локализовал до окна на котором лежит GridPanel, а в нем cxButton. Убрал кнопку - все заработало как часы.

Эта ошибка появилась в .41 релизе.
Девэкпрессы заявляют, что в будущем .42 релизе эта ошибка уже исправлена.

Radio_Kat
cxScheduler1.SelStart

Добавлено:
X11

Цитата:
Другое дело, если бы прога в таком случае хотя бы просто выдала ошибку и продолжала работать на английском

Проблему можно решить немного подправив метод
LoadFromFile(const AFileName: TFileName = '') в модуле cxLocalization.pas, а именно:

Код:
procedure TcxLocalizer.LoadFromFile(const AFileName: TFileName = '');
var
AFileStream: TFileStream;
vSearchRec: TSearchRec; //<- Added Line
begin
Active := False;
if AFileName <> '' then
FFileName := AFileName;

if not (csDesigning in ComponentState) then //<- Added Line
if FindFirst(FFileName, faAnyFile - faDirectory, vSearchRec) <> 0 then Exit; //<- Added Line

AFileStream := TFileStream.Create(FFileName, fmOpenRead or fmShareDenyNone);
try
InternalLoadFromStream(AFileStream);
finally
AFileStream.Free;
end;
end;
Автор: X11
Дата сообщения: 08.02.2009 11:31
vladman, исходники править - это табу... Потом забыл... девок переустановил... и опять..
Автор: X11
Дата сообщения: 08.02.2009 15:07
Кто-нибудь ставил свойство Transparent в True у компоненты TcxGroupBox?
Автор: Dmiro
Дата сообщения: 08.02.2009 20:57
X11

Цитата:
Кто-нибудь ставил свойство Transparent в True у компоненты TcxGroupBox?



А в чём прикол?
Автор: vladman
Дата сообщения: 08.02.2009 21:16
X11

Цитата:
исходники править - это табу... Потом забыл... девок переустановил... и опять..

и опять поправил и радуешься жизни и не ждешь когда разработчики начнут читать этот топик


Цитата:
Transparent в True у компоненты TcxGroupBox

и что с этим свойством не так?
Автор: Sufferer
Дата сообщения: 08.02.2009 23:49
Что-то я непонял, это продолжение http://forum.ru-board.com/topic.cgi?forum=33&topic=7918&start=2420 или как?
Автор: X11
Дата сообщения: 09.02.2009 08:06

Цитата:
X11

Цитата:
Кто-нибудь ставил свойство Transparent в True у компоненты TcxGroupBox?



А в чём прикол?

cxGroupBox становится чёрным

Добавлено:
Причём этот глюк тянется ещё за царя Панька

Добавлено:

Цитата:
Что-то я непонял, это продолжение http://forum.ru-board.com/topic.cgi?forum=33&topic=7918&start=2420 или как?

Да, там же написано: "продолжаем здесь". Т.е. здесь, в этой ветке.
Автор: Dmiro
Дата сообщения: 09.02.2009 10:34
X11
Только что попробовал на новом проекте.
Бросил на форму панельку. cxGroupBox бросил прямо на форму и на панельку.
Выставил Transparent в True у обих. Всё ок, прозрачненькие оба.
Delphi2006, Devexpress 40-ые.
Видимо этот глюк проявляется в каких-то спец. условиях.
Автор: X11
Дата сообщения: 09.02.2009 14:44
Dmiro, странно-странно, у меня D2007 студия и для вынь32, проявилось для студии. Ещё раз потестю.


Ребята, вопрос по визуальному календарю, типа как у MS Project. Cпособны ли девки на такое? Если да, то какие компоненты можно помацать в этом плане?
Вот сцылко на мою тему:
http://forum.ru-board.com/topic.cgi?forum=33&topic=10126
Автор: Anton_Bunin
Дата сообщения: 09.02.2009 18:23
Всем привет.

В cxGrid'е есть 2 уровня (две таблицы одной БД). Как программно переключаться между ними.

(не пинайте сильно, если вопрос уже был, форум пролистал. девы (DevExpr) октябрьские '08)
Автор: xokc
Дата сообщения: 09.02.2009 18:54
Anton_Bunin
Сам-то понял, что спросил? Куда и чем переключаться?
Автор: X11
Дата сообщения: 09.02.2009 19:24
Да, действительно... проявляется не постоянно. Сейчас вот воспроизвести глюк с cxGroupBox не получается.

Добавлено:

Цитата:
В cxGrid'е есть 2 уровня (две таблицы одной БД). Как программно переключаться между ними.

у грида есть свойство activelevel, или я чего-то не понял, а вообще ты можешь настроить одновременный показ таблиц в одном гриде с помощью встроенных в грид страниц
Автор: Sufferer
Дата сообщения: 09.02.2009 20:04
Люди, а что за фигня такая с именем Sendera в едиторах TcxVerticalGrid?
Пробую получить в обработчике едитора имя Sendera, а вместо имени получаю пустоту.

procedure TfrmMain.OddNodeFrameColorEditPropertiesChange(Sender: TObject);
begin
ShowMessage(TcxControl(Sender).Name);
end;

Где суслик?

И еще вопросец по едитору TcxVerticalGrid - конкретно по TcxCheckGroup. Где искать состояние выбраных элементов?
Автор: igorkn
Дата сообщения: 09.02.2009 22:01
xokc

Спасибо! Помогло!
Автор: StepashaD
Дата сообщения: 09.02.2009 23:17
Подскажите пожалуйста как можно изменить размер строчки в cxGrid, обыскался уже и так и не нашел.
Автор: vladman
Дата сообщения: 10.02.2009 01:11
Sufferer

Цитата:
ShowMessage(TcxControl(Sender).Name);

А чье имя в действительности необходимо получить? И с какой целью это имя нужно получить? Sender-то в данном случае это InplaceEditor, и что может дать получение его имени? Может имелось ввиду необходимость определения класса едитора, тогда это может выглядеть так: ShowMessage(TcxCustomEdit(Sender).ClassName), если доступ к его свойствам, например EditValue, - то ShowMessage(VarToStr(TcxCustomEdit(Sender).EditValue)).
Если необходимо получить Row в которой произошло это событие - тогда так: ShowMessage(TcxVerticalGrid(TcxCustomEdit(Sender).Parent).FocusedRow.Name)
Ну для надежности можно проверять что Sender is TcxCustomEdit и что TcxCustomEdit(Sender).Parent is TcxVerticalGrid.


Цитата:
TcxCheckGroup. Где искать состояние выбраных элементов?

ShowMessage(TcxCheckGroup(Sender).EditingValue).
или Properties.Value для установки в DesignTime

StepashaD

Цитата:
Подскажите пожалуйста как можно изменить размер строчки в cxGrid, обыскался уже и так и не нашел.

cxGrid1TableView1.OptionsView.DataRowHeight
Автор: Anton_Bunin
Дата сообщения: 10.02.2009 07:53
xokc

Цитата:
Сам-то понял, что спросил? Куда и чем переключаться?


Есть структура:

cxGrid
|- cxGridLevel1 - cxGridTableView1
|- cxGridLevel2 - cxGridTableView2

возник вопрос: как программно менять (делать активным) тот или иной уровень (cxGridTableView1/2). Например выбирая чекбокс1 отображается cxGridTableView1, чекбокс2 отображается cxGridTableView2

Автор: OXDBA
Дата сообщения: 10.02.2009 08:27
А чем cxGrid.ActiveLevel не устраивает?
Автор: Anton_Bunin
Дата сообщения: 10.02.2009 09:35
OXDBA

Цитата:
А чем cxGrid.ActiveLevel не устраивает?


Да впринципе все устраивает, вот только на:
cxGrid->ActiveLevel->Items[1];
или
cxGrid->ActiveLevel->Items[2];
выдается, что "...перечень индексов в не предела". ('List index out of bounds (1/2)')
(похоже я чегото не знаю и/или не допонимаю )
Автор: X11
Дата сообщения: 10.02.2009 09:59

Цитата:
Подскажите пожалуйста как можно изменить размер строчки в cxGrid, обыскался уже и так и не нашел.

OptionView.DataRowHeight
Автор: OXDBA
Дата сообщения: 10.02.2009 10:36

Цитата:
похоже я чегото не знаю и/или не допонимаю

cxGrid->ActiveLevel = cxGrid->Levels[1]
cxGrid->ActiveLevel = cxGrid->Levels[2]

Автор: Dmiro
Дата сообщения: 10.02.2009 11:08
Sufferer
Name не обязательное свойство компонента, особенно если компонент создается в рантайме.

У TcxVerticalGrid есть свойство Rows. Вот по нему и надо ползать - занятие нетривиальное.
Проще создать меморидатасет и использовать TcxDBVerticalGrid.
Автор: Anton_Bunin
Дата сообщения: 10.02.2009 11:23
OXDBA
спасибо большое за подсказку. На запись

Цитата:
cxGrid->ActiveLevel = cxGrid->Levels[1]
cxGrid->ActiveLevel = cxGrid->Levels[2]

ругается и пишет, что неможет конвертить Level в Level, а если записать так
cxGrid->ActiveLevel = cxGridLevel1;
cxGrid->ActiveLevel = cxGridLevel2;
то все работает.
Спасибо, что на мысль навел.

(опять же думаю, что не точно задачу обрисовал, если что извини).
Автор: AlexSuv79
Дата сообщения: 11.02.2009 03:47
Что-то ни как не найду, а как в одну строку разместить несколько разных столбцов из таблицы в cxGrid?
Типа:
-----------------------
|Вася |D1 |D2 | ... |
-----------------------
| |N1 |N2 | ... |
-----------------------

-----------------------
|Петя |D1 |D2 | ... |
-----------------------
| |N1 |N2 | ... |
-----------------------
...........

, где D1,D2...N1,N2... это поля одной таблицы
заранее спасибо за наводку.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


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