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

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

Автор: f3ka
Дата сообщения: 20.08.2009 12:46
Cryogen2003
только ручной отрисовкой... cxMemo как и обычный Memo предназначены для отображения просто текста без подсветки...
в принципе лучше наверно будет использовать cxRichEdit, там хоть есть возможность установки цвета для текста...
Автор: Cryogen2003
Дата сообщения: 20.08.2009 12:53
f3ka
Ясно. Просто в своем проекте пытаюсь полностью избавиться от больших пакетов компонентов, сделав свой выбор в пользу девок. Раньше за шаблоны отвечали компоненты от TMS, но в итоге очень часто выходило так, что были произвольные глюки (в основном Access Violation).
Автор: ZalivkoDenis
Дата сообщения: 20.08.2009 13:11
Доброго дня всем!
Есть небольшой вопрос.
DevExpress v.45, Ribbon, D2007
Делаю MDI-приложение. Создаю ChildMDIForm.

Вопрос 1: При разворачивании (maximized) child, на основной форме не появляются те самые 3 кнопки (свернуть, свернуть в окно, закрыть). Причём, не то, чтобы совсем не появляются, а рисуются, похоже с неправильными координатами -- слева вверху виден какой-то баг (совсем как-то чуть-чуть). Но, если мышкой дернуть на изенение размеров основное окно -- кнопашки становятся на свои места. Может посоветует кто-нибудь рациональное решение?

Вопрос 2: (скорее всего OFF, но, до кучи, может быть подскажете) Как открыть ChildMDIForm сразу развёрнутым, чтобы без анимационных перерисовок (типа, если выставлять WindowsState := wsMaximized).

Спасибо за помощь!
Автор: Cryogen2003
Дата сообщения: 20.08.2009 15:40
f3ka
Кстати, а случаем с TcxDBFilterControl не возился? Просто нужно сделать так, что при like например автоматом проставлялись проценты, а при null автоматом ставились is null или там is not null.
Автор: vladman
Дата сообщения: 20.08.2009 16:16
ZalivkoDenis

Цитата:
Вопрос 1: ... Может посоветует кто-нибудь рациональное решение?

Сделать класс главной формы наследником от TdxRibbonForm а нет от TForm.
<YourMDIForm> = class(TdxRibbonForm)
не забыть прописать в uses dxRibbonForm;

Цитата:
Вопрос 2:

А чем не устраивает <YourMDIChildForm>.WindowState := wsMaximized;?
Автор: Vadim153
Дата сообщения: 20.08.2009 23:50
vladman


Цитата:
Давайте пример, посмотрим.

В моем случае используется MS SQL.
На таблицу коннектим cxNavigator и пробуем добавлять записи.
Если использовать ADOTable и установить в нем
IndexFieldNames:=RegionCountryID, то все работает.

С ADOQuery работает криво. Запрос такой:

SELECT * FROM Region2
ORDER BY RegionCountryID

Если принудительно переоткрыть датасет, то запись появляется в гриде.
Автор: DroN_S
Дата сообщения: 21.08.2009 06:11
Привет всем!!
перешёл на 2009 IDE
раньше в своих проектах использовал dxInspector, на 2009 поставил 45 билд девок и вот вам здрасте, поддержку dx вообще убрали...
вот и вопрос: если в 45 билде что то похожее на dxInspector?
Автор: xvirtus
Дата сообщения: 21.08.2009 09:08
Привет всем!
Работаю с TcxSpreadSheetBook.
Задача : сохранить в один поток (TMemoryStream) данные книги, а также дописать в тот же поток часть своих данных (делается, чтобы не плодить лишние колонки в базе данных).

Итак, сохраняю :
Book->SaveToStream(str);
some_data->SaveToStream(str);

Теперь чтобы вытащить данные из потока соответсвенно выполняю:
Book->LoadFromStream(str);
some_data->LoadFromStream(str);

И вот тут возникает проблема, при восстановлении данных из потока классом TcxSpreadSheetBook считывается гораздо меньше данных(от 200 до 500 в моих случаях), чем записывалось, причём в разных случаях - разный объем. Соответственно выйти на свою позицию перед считыванием some_data->LoadFromStream(str); никак не удаётся...

Пробовал записывать в поток и наоборот, сначала свои данные, затем данные SpreadSheet, в этом случае идёт другая ошибка, о некорректности потока, ну тут понятно, вероятно SpreadSheet позиционируется на начало потока...

Есть у кого-нить идеи или соображения по этому поводу?
Автор: FunCode
Дата сообщения: 21.08.2009 09:14
xvirtus
Ну может быть cделать так:
1. Запись в поток первым идет Book, потом some_data, потом пишем размер some_data.
2. При считывании сначала смотрим размер some_data, считываем соотвествующее кол-во байтов с конца за исключением байтов содержащих размер some_data.
3. Потом меняем Size потока на предыдущий Size минус размер some_data и байты содержащие информацию о размере some_data.
Автор: xvirtus
Дата сообщения: 21.08.2009 09:19

Цитата:
FunCode

Дельная мысль, спасибо!
Однако всё равно мучает вопрос, а какого фига собственно он недочитывает свои же данные? )
Автор: neznayka3
Дата сообщения: 21.08.2009 09:24
как обработать клик на вкладке TdxTabContainerDockSite? хочу, чтоб на даблклике таб закрывался.
Автор: FunCode
Дата сообщения: 21.08.2009 09:27
xvirtus
ну скорее всего ситуация в следующем:
сначала мы записали в поток Book, потом дописали свои данные,
теперь читаем поток - SheetBook даже не предполагает, что в потоке
могут находиться чужие данные ...

и что значит недочитывает свои данные?
Автор: xvirtus
Дата сообщения: 21.08.2009 09:31
FunCode
после записи SheetBook'ом данных, смотрим размер : 3584 байт
теперь этим же буком считываем из потока : считывается 3264 байт
вот и остаётся 320 лишних байт...
Автор: vladman
Дата сообщения: 21.08.2009 10:03
Vadim153

Цитата:
Если принудительно переоткрыть датасет, то запись появляется в гриде.

Значит проблем с ADOQuery, вернее рефрешем после добавления новой записи.
Ищите в этом направлении.
Автор: FunCode
Дата сообщения: 21.08.2009 10:06
xvirtus
я честно говоря ни разу не пользовался этим SheetBook, но предполагаю, что в конце потока он пишет какую-то общую информацию, которая при считывании ему возможно не нужна, я бы для интереса посмотрел что находится в этих 320 байтах ...
Автор: xvirtus
Дата сообщения: 21.08.2009 10:11
FunCode
Может быть...
Лады, спасибо за совет, уже его реализовал, всё путём.

Автор: FunCode
Дата сообщения: 21.08.2009 10:15
xvirtus
Кстати, если количество байт, которые он не считывает, постоянно равно 320,
то можно смещать Position всегда на эту величину и не делать как я предлагал раньше ...
Автор: xvirtus
Дата сообщения: 21.08.2009 10:31
FunCode
Увы, не постоянно, как я писал выше, размер всегда разный...
Автор: DroN_S
Дата сообщения: 21.08.2009 10:47

Цитата:
Привет всем!!
перешёл на 2009 IDE
раньше в своих проектах использовал dxInspector, на 2009 поставил 45 билд девок и вот вам здрасте, поддержку dx вообще убрали...
вот и вопрос: если в 45 билде что то похожее на dxInspector?

народ, кто что может сказать по этому поводу????
что разве никто не сталкивался с переносом проектов?
Автор: data man
Дата сообщения: 21.08.2009 10:58
DroN_S
Конечно есть.
VerticalGrid, TcxRTTIInspector
И есть конвертор из dxInspector в VerticalGrid.
Автор: DroN_S
Дата сообщения: 21.08.2009 11:16

Цитата:
И есть конвертор из dxInspector в VerticalGrid.

что за конвертор? где найти?
Автор: data man
Дата сообщения: 21.08.2009 11:39
DroN_S
У меня не установлен dxInspector.
Если не ошибаюсь, все конверторы в DevExpress работают так:
Бросаете на форму нужный компонент - в Вашем случае один из компонентов VerticalGrid.
Щелкаете на нем правой клавишей - в контекстном меню появится нужный пункт.

Добавлено:
Пункт 'Import...'
Автор: DroN_S
Дата сообщения: 21.08.2009 12:14
data man
спасибо!!!
всё отлично!!!
Автор: vladman
Дата сообщения: 21.08.2009 12:24
neznayka3

Цитата:
как обработать клик на вкладке TdxTabContainerDockSite? хочу, чтоб на даблклике таб закрывался.

Изменением процедуры TdxTabContainerDockSite.WMLButtonDblClk(var Message: TWMLButtonDblClk) в dxDockControl.pas
вместо AControl.Hide; нужно вызвать AControl.Close;
Автор: ZalivkoDenis
Дата сообщения: 21.08.2009 12:35
vladman

Цитата:
А чем не устраивает <YourMDIChildForm>.WindowState := wsMaximized;?

Я уже написал, что, если использовать указанную конструкцию (в конструкторе ли дочерней формы или из главной формы при создании дочерней формы), то имеется эффект анимации, той самой, которая включается в настройках быстродействия системы (WinXP SP3) -- типа разворачивается окно анимированно, а хотелось бы, чтобы это окно отрисовалось как панел -- т.е. сразу, без заголовка и т.д. Но, я понимаю, что не в эту тему, потому не буду флейм разводить
А за остальное -- Спасибо (как я на это внимание не обратил -- сам прозрел (!), вроде ж не первый день замужем . Спасибо!).
Автор: korobovmax
Дата сообщения: 21.08.2009 12:40
Glyph (картинка) у TdxBar (панелька) используется только в Ribbon'ах (ленточный стиль)?
Автор: FunCode
Дата сообщения: 21.08.2009 14:07
korobovmax

Цитата:
Glyph (картинка) у TdxBar (панелька) используется только в Ribbon'ах (ленточный стиль)?

Именно только в Ribbon'ах ...
Автор: vladman
Дата сообщения: 21.08.2009 14:20
korobovmax

Цитата:
Glyph (картинка) у TdxBar (панелька) используется только в Ribbon'ах (ленточный стиль)?

Да. Используется, когда Tab Group сворачивается к одному Itemу
ms-help://borland.bds5/ExpressBars6.BDS5/ExpressBars6/IDH_TdxBar_Glyph.htm
Автор: korobovmax
Дата сообщения: 21.08.2009 14:28
FunCode,vladman, спасибо за ответы! Буду писать им в To do

vladman, какой интересный у вас линк на справку по компонентам. Это новый формат для новых IDE?
Автор: vladman
Дата сообщения: 21.08.2009 15:03
korobovmax

Цитата:
Это новый формат для новых IDE?

Это линк на страницу в Microsoft Document Explorer. В версиях Delphi c D2005 используется как справочная система.
В winhelp справке ищите по ключу TdxBar,Glyph в файле ExpressBars6.hlp

Добавлено:
А что вы ходите писать в Todo? Если не секрет?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

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


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