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

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

Автор: drSerj
Дата сообщения: 26.05.2014 08:19
svs123456789

cxDBRichEdit не пройдет?
Автор: StredaX
Дата сообщения: 26.05.2014 08:21
prand1
Событие DataController.OnCompare.
Автор: svs123456789
Дата сообщения: 26.05.2014 15:41
возникла идея:
пользователь интерактивно применяет к таблице DevExp фильтр,
а затем я уже программно обрабатываю записи запросом select whearе

вопрос как получить имя поля и значение ? (из фильтра таблицы cx)
Автор: Andryshok
Дата сообщения: 26.05.2014 19:00
Prot_XT В событии OnEditValueChanged - ставь фокус куда угодно... вроде так
Автор: ChSerg
Дата сообщения: 26.05.2014 22:47
svs123456789

Цитата:
пользователь интерактивно применяет к таблице DevExp фильтр,
а затем я уже программно обрабатываю записи запросом select whearе

Давно все это уже сделано на уровне пакета Oracle,
причем при работе гридины от курсора возвращается курсор,
в противном случае возвращается сформированный стейтмент 'select ... ' с соответствующим фильтру 'where ...'.
Автор: prand1
Дата сообщения: 27.05.2014 08:37
[more] Использую cxGrid (unbound mode).
Вопрос: как лучше сделать нумерацию строк, наподобие мс эксель?
Сейчас делаю так:
procedure TForm1.NumGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: string);
var
Row: Integer;
begin
inherited;
Row := Sender.GridView.DataController.GetRowIndexByRecordIndex(ARecord.RecordIndex, False) + 1;
AText := IntToStr(Row);
end;
,но:
1. выглядит этот столбец как остальные строки, а надо в стиле хедеров
2. даже если у этого столбца запретить перемещение, то все равно другой столбец можно засунуть в первую позицию

PS. Еще подскажите где черпать знания?? Захожу на сайт девок.саппорт.документация в поиске набираю:
Technology:vcl, Product:ExpressQuantumGrid Suite Keywords: cxGrid. В результате ничего не найдено!!!
В комплекте с девками у меня очень старые неудобные .hlp (по cxMemData, там вообще пару строк)

Вопрос 2: Как добавить тень у ComboBox'а в гриде (TcxGridColumn.Properties = ComboBox), а то вываливающийся список сливается с гридом. [/more]
Автор: exteris
Дата сообщения: 27.05.2014 12:00
prand1
Как вариант - использовать BandedTableView.
В бэнд засунуть колонку с нумерацией и сделать его FixedKind:=fkLeft. Под хидер колонку можно стилизовать.
Автор: prand1
Дата сообщения: 29.05.2014 10:46
в cxGrid у Tcx...TableView независимо DB это или нет есть Controller и есть DataController в чем их отличие?? особенности использования??

в cxGrid каждый столбец это отдельный объект, если у меня две одинаковых внешне, но разных по содержанию таблицы могу ли я столбцы одного грида добавить в другой?
Автор: Andryshok
Дата сообщения: 29.05.2014 19:32
Форумчане посоветуйте как распечатать cxGrid - в том числе сгруппированный, есть экспорт в Excel но у меня почему то иконки группировки - знак "-" в Excel не сворачивают узел, можт есть возможность что они работали? И еще как распечатать PivotGrid , ну или экспортировать куда нить его например в тот же Excel...
Автор: PowerChute
Дата сообщения: 30.05.2014 04:03
Andryshok
Есть такая компонента - TdxComponentPrinter. И cxGrid, и PivotGrid печатает на ура.
Автор: Andryshok
Дата сообщения: 30.05.2014 06:37
PowerChute А PivotGrid в Excel случайно нельзя выгрузить?
Автор: exteris
Дата сообщения: 30.05.2014 06:56
Andryshok
Можно.
Автор: Andryshok
Дата сообщения: 30.05.2014 07:34
exteris Ну а пример кода можно в студию? Интересуют только встроенные средства.
Автор: exteris
Дата сообщения: 30.05.2014 07:45
uses cxExportPivotGridLink
...

cxExportPivotGridToExcel(...);
Автор: dred2k
Дата сообщения: 30.05.2014 08:05

Цитата:
знак "-" в Excel не сворачивают узел


Возможно, отключены макросы. Посмотри параметры безопасности Excel.
Автор: Nonstopich
Дата сообщения: 30.05.2014 08:31
Установил DevExpress 13.1.2 на RAD XE4 Upd 1 (всё делалось начисто.)

При установке в списке Wizard Control был, а в самой IDE и в папке после установки, ни самого контрола ни его исходников, вообще ничего.

Подскажите куда копать? #

Автор: prand1
Дата сообщения: 30.05.2014 14:12
При использовании BandTableView появляется возможность разместить хедеры(заголовки колонок) в несколько рядов. Как от этого избавиться?
Автор: Andryshok
Дата сообщения: 30.05.2014 18:20
Господа есть еще вопросик - имеется cxGrid , одна колонка в нем с кнопкой (cxButtonEditColumn), кнопка всегда видна , возможно ли при определенных значениях в гриде/датасете эту кнопку скрывать/ показать
или дисаблить на записях грида где сравниваемое значение , копал в сторону CustomDrawCell но что то не нашел там таких опций... помогайте
Автор: Prot_XT
Дата сообщения: 31.05.2014 05:37

Цитата:
Prot_XT В событии OnEditValueChanged - ставь фокус куда угодно... вроде так


Да нет, не все так просто там... а хотелось бы разобраться. Вот, что там есть:
procedure TdxBarWinControl.KeyDown(var Key: Word; Shift: TShiftState);

function IsWindowDistroyed: Boolean;
begin
Result := Handle = 0;
end;

var
ALinkSelf: TcxObjectLink;
begin
if IsSysKeyDown(Key, Shift) then
SysKeyDown(Key, Shift)
else
begin
ALinkSelf := cxAddObjectLink(Self);
try
Item.KeyDown(Key, Shift);
if (ALinkSelf.Ref = nil) or IsWindowDistroyed then
Key := 0;
case Key of
VK_ESCAPE:
begin
DoEscape;
Key := 0;
end;
VK_RETURN:
begin
DoEnter;
Key := 0;
end;
VK_TAB:
begin
DoNavigation(Shift);
Key := 0;
end;
end;
finally
cxRemoveObjectLink(ALinkSelf);
end;
end;
end;

Какой-то непонятный DoEnter;
Автор: dred2k
Дата сообщения: 31.05.2014 09:44
Andryshok
Должно помочь OnGetEditProperties, по идее.

Добавлено:
Prot_XT
Через сообщение пробовал ?
Автор: Prot_XT
Дата сообщения: 31.05.2014 10:43
Через сообщение - это костыль, даже если что-то будет получаться...
Все равно отработает этот DoEnter; Затем курсор улетит, потом его возвращать, причем залетит он в Edit в другое место, а не там где был... его опять что-ли запоминать и возвращать посимвольно, где он был?
Можно либо отключить в исходниках DoEnter - ну это слишком радикально - ампутация, либо все таки понять нахрена этот баян, и что с ним делать. Для чего-то же это сделали...
Автор: dred2k
Дата сообщения: 31.05.2014 11:04
Prot_XT
90% кода запросто можно назвать "костылями".
Хозяин-барин.

Я тут на досуге попробовал, все вроде получилось... И без всяких событий.
http://www.sendspace.com/file/cayvjj

Добавлено:
Andryshok
Насчет подмены едитов в гриде на лету. Есть там одни грабли...
Нужно было мне поменять динамически, от данных, цвет и всякое в прогресс-баре, происходило это все в гриде. Поменял, менялось, но полетели массовые экцепшены. Оказалось, даже в хелпе прописано - динамически менять едиты в гриде можно, но способ такой:
1. создаешь репозиторий едитов
2. создаешь в нем нужные тебе едиты с нужными тебе свойствами
3. в событии получения эдита только присваиваешь уже созданный в репозитории едит
Работает, причем я в рамках одной хитрости динамически создавал в репозитории нужные едиты, потом их присваивал - все ровно.

Такие дела. Мож, пригодится...
Автор: G787
Дата сообщения: 31.05.2014 17:31
Почему если в TcxGridBandedTablesView разместить одну колонку над другой то не меняется высота колонки и высота строки,
меняю в свойстве OptionsView.DataRowHeight и OptionsView.HeaderHeight результат без изменений.
Автор: Prot_XT
Дата сообщения: 31.05.2014 18:28

Цитата:
Prot_XT
90% кода запросто можно назвать "костылями".
Хозяин-барин.

Я тут на досуге попробовал, все вроде получилось... И без всяких событий.
http://www.sendspace.com/file/cayvjj


Не спорю получилось... но только именно так как я и описывал...
Во первых попробуй набрать что-то в эдите... после отработки что получается? Правильно... весь текст выделяется, как будто ты только что перепрыгнул на новый контрол... это нужно опять обрабатывать.
Во вторых приглядись... видно, что на форме моргает Edit1 еще.

Кстати какая версия у тебя среды и DevExpress?


Добавлено:
Кстати в DoEnter вот что живет:

procedure TdxBarWinControl.DoEnter;
var
AHandle: HWND;
AParent: TCustomdxBarControl;
begin
AHandle := Handle;
AParent := Parent;
if (ItemLink.RealItemLink <> nil) then
ItemLink.RealItemLink.BringToTopInRecentList(True);
StoreDisplayValue;
if IsWindowVisible(AHandle) then
begin
AParent.SetKeySelectedItem(nil);
KillBeep(AHandle);
AParent.HideAll;
end;
end;


Добавлено:
Что за ItemLink.RealItemLink такой?
Автор: dred2k
Дата сообщения: 31.05.2014 18:44
Prot_XT
Убрать выделение - элементарно. Хотя бы через Properties.AutoSelect := False; К тому же есть соответствующий метод. Моргающий контрол чем мешает ? Ну убери у всего на форме, кроме риббона и его содержимого, возможность участия в переходах (TabStop := False)...

И при чем тут метод DoEnter?

Пример сделан на XE6, DevExperess 2013.2.5.

Добавлено:
G787
Насколько я помню, там есть минимум высоты, зависящий по ходу от размера шрифта... 18 по умолчанию. Может, указываешь меньше ?
Автор: Prot_XT
Дата сообщения: 31.05.2014 18:56
dred2k
Моргающий контрол просто говорит всего-лишь о том, что фокус прыгает тем не менее... все компоненты не поставишь TabStop := False.

А метод DoEnter, как раз и заставляет прыгать курсор - это исходники...
Я же выкладывал ранее:

procedure TdxBarWinControl.KeyDown(var Key: Word; Shift: TShiftState);
.....
VK_RETURN:
begin
DoEnter;
Key := 0;
end;
.....

Проще говорю мне DoEnter закоментировать в исходниках... просто хочу разобраться сообща чего оно делает то?
Автор: dred2k
Дата сообщения: 31.05.2014 19:14
Prot_XT

DoEnter как раз передает фокус следующему элементу. Разве нет?
Насчет прыжка - поверь, он будет совершенно незаметен. Юзер будет сосредоточен на поиске, диалогов не будет. Вот попробуй, закомменти в моем примере показ сообщения - вообще не видно прыжка...

Насчет изменения девок. Признаться, при всей мощи кое-чего порой не хватает. Я как-то задавал вопрос - кто знает, как запретить рисование тени на кнопке тулбара, если тулбар в стиле Flat. Оказалось, никак. Я раскопал в исходниках это место, вшито намертво. Пришлось изменить модуль (dxBars.pas), положить рядом, включить в проект, поставить путь на сырцы бара и собирать проект уже с измененным модулем. В принципе, не особо и гиморно. Единственное - грамотно вносить изменения при смене версии, ну и за версией для сборки следить...
Автор: Prot_XT
Дата сообщения: 31.05.2014 23:02
dred2k

Цитата:
DoEnter как раз передает фокус следующему элементу. Разве нет?


Ну да здесь это и происходит, я просто не пойму для чего это они сделали? Не для того же чтобы фокус менялся...возможно это как то штатно и отключается... Может быть в рантайме...
Автор: G787
Дата сообщения: 31.05.2014 23:58
dred2k
наоборот больше, ставлю 21
Автор: Prot_XT
Дата сообщения: 01.06.2014 08:54
Вообще кто знает... что такое ItemLink.RealItemLink ?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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