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

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

Автор: yuish
Дата сообщения: 21.11.2006 16:40
вопрос.
есть схгрид, в нем поля, надо что бы всего одно поле, если его значение не вмещается в ширину поля на экране, показывало его значение в подсказке (hint) например как это сделано в службах винды. там если описание строки не влезает - показывается подсказка с полным описанием

возможно ли это. а то что то я не раскопал...

Добавлено:
Извиняюсь за офтоп - нашел сам.
Автор: samusev
Дата сообщения: 21.11.2006 18:30
Простите за назойливость - есть еще задача.
Проект ДевЭкс сентябрьские+BSD2006

Грид содержит большое кол-во колонок с "полнозвучными" заголовками которые просто просятся нарисоваться вертикально.

Нашел на офф сайте Девок такой код

procedure TfmMainForm.cxDailyOpGridDBTableView1_Колонка_CustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
Size: TSize;
OldFont, LogFont: TLogFont;
ARect: TRect;
AFilterRect: TRect;
I: Integer;
AButtonState: TcxButtonState;
begin
with AViewInfo do
begin
GetObject(ACanvas.Font.Handle, SizeOf(OldFont), @OldFont);
LogFont := OldFont;
with LogFont do
begin
lfEscapement := 900;
lfOrientation := lfEscapement;
lfOutPrecision := OUT_TT_ONLY_PRECIS;
end;
ACanvas.Font.Handle := CreateFontIndirect(LogFont);
GetTextExtentPoint32(ACanvas.Handle, PChar(Text), Length(Text), Size);
ARect := Bounds;
if Size.cx > ARect.Bottom - ARect.Top then
begin
ACanvas.Font.Handle := CreateFontIndirect(OldFont);
Exit;
end;
AButtonState := cxbsNormal;
with TcxGridColumnHeaderViewInfoAccess(AviewInfo) do
for I := 0 to AreaViewInfoCount - 1 do
if AreaViewInfos[I] is TcxGridColumnHeaderFilterButtonViewInfo then
begin
AFilterRect := TcxGridColumnHeaderFilterButtonViewInfo(AreaViewInfos[I]).Bounds;
AButtonState := TcxGridColumnHeaderFilterButtonViewInfo(AreaViewInfos[I]).ButtonState;
Break;
end;
Sender.Painter.LookAndFeelPainter.DrawHeader(ACanvas,
Bounds, ARect, Neighbors, Borders, cxbsNormal, taCenter,
TcxAlignmentVert(vaCenter),
False, False, '', ACanvas.Font, clNone, Color);

with ARect do
begin
Left := (Left + AFilterRect.Left - Size.cy) div 2;
Right := Left + Size.cy;
Bottom := (Bottom + Top + Size.cx) div 2; // << center vertical alignment
Top := Bottom - Size.cx;
end;
ACanvas.Canvas.TextRect(ARect, ARect.Left, ARect.Bottom, Column.Caption);

Sender.Painter.LookAndFeelPainter.DrawFilterDropDownButton(ACanvas,
AFilterRect, AButtonState, AViewInfo.Column.Filtered);
ADone := True;
end;
end;

Работает сносно , НО только для колоной у которых есть кнопка фильтрации. С другими ни как.

Подскажите решение...
Автор: Alex47
Дата сообщения: 22.11.2006 08:11
samusev

На 64 странице я давал рабочую процедуру отрисовки заголовка колонки с вертикальным текстом для QGrid5. Отрисовываются кнопки сортировки и фильтра (В Knowledge Base на сайте DevExp есть вариант, но без поддержки сортировки). Процедуру можно вызывать в обработчике CustomDrawHeader.
Автор: samusev
Дата сообщения: 22.11.2006 10:29
Alex47
Спасибо - помогло!

RedPromo
А можно батничек на почту получить AddHelpDevExpress для BDS2006
asamusev Ссабака жмайл.ком
Автор: afiget
Дата сообщения: 22.11.2006 11:13
samusev
В ветке по БДС2006 есть батник.
Автор: samusev
Дата сообщения: 22.11.2006 14:22
afiget -спс -нашел

Еще вопрос. Уж коли занялись оформлением QuantumGrid. Пробовал кто-нибудь реализовать многоуровневую шапку.
Типа
+--------------------+
| Header |
+---------+----------+
| Sub1 | Sub2 |
+---------+----------+

Даже не знаю как на оффсайте поискать. Какими словами это обозвать?
Автор: OXDBA
Дата сообщения: 22.11.2006 14:26
samusev
BandedTableView? Или я не понял вопроса?
Автор: samusev
Дата сообщения: 22.11.2006 14:43
Нет! в простом DBTableView
Автор: OXDBA
Дата сообщения: 22.11.2006 15:02
Гм. DbBandedTableView как раз и предназначен для решения этой задачи, где Header это Band, а Sub1, Sub2 - заголовки столбцов(см. Banded View Tutorial. Step 2: Bands And Columns в хелпе)

Добавлено:

Цитата:
Нет! в простом DBTableView

onCustomDrawColumnHeader + большой напильник + много времени и терпения
Автор: QQQRurik
Дата сообщения: 23.11.2006 02:46
День Добрый

Кто подскажет, как зафиксировать первые колонки
в TcxGrid (!!!!! не в Band) - TcxDBTableView

(Типа FixedCols в RX)

Pleeeeeease!?!




Автор: Dennica
Дата сообщения: 23.11.2006 07:23
QQQRurik

Вот не пойму склонность людей к постоянному изобретению велосипедов. BandedTableView как раз для этого и предназначен. Можно же не показывать заголовки Band и внешне будет тот-же TableView. Нет, нам band не люб, ща будем колонки сами замораживать и многоуровневые заголовки рисовать :))
Автор: SerjP75
Дата сообщения: 23.11.2006 11:02
cxDBLookupComboBox (5.12) Отображается поле "текст", в выпадающем списке "Число" и "Текст", поиск при наборе с клавиатуры должен идти по полю "число".
KeyFieldName="Текст", ListFieldName="Число";"Текст", GridMode=true, DropDownListStyle=lsEditList.
На закрытие списка "Руками" выставляю нужные значения. Все вроде работает нормально, но при возврате в cxDBLookupComboBox, отображается не "Текст" а "Число". Может кто подскажет, как победить
Автор: QQQRurik
Дата сообщения: 23.11.2006 11:40
Извиняюсь писал же для турков

TcxGrid (!!!!! не в Band) - TcxDBTableView

нашелся китаец( BandHeaders не проблема)
придется писать на китайском

Виноват End-User (Cheif)-Любитель менять ширину заголовков
А теперь еще надо и фиксировать

1. После BandHeaders-False Headers ездят в рамках Band =>
На каждый Header по Band' ---> 15-25 пустых Bands.....
1a. Header без bands либо вообще не ездят, либо .....

2. => onCustomDrawColumnHeader - --> двигать Bands
(сразу предупреждаю - 5 пикселов у Bands и за них таскать - это не для End-User )

пока хватит
.................................

3. И еще вопрос класса BandHeaders-False - пока не смотрел

Есть 20-25 TcxDBTableView, не считая справочников
Как бы их без морки в TcxDBBandedTableView


Заранее огромное спасибо

Автор: OXDBA
Дата сообщения: 23.11.2006 11:54
SerjP75
Поставь ListFieldIndex в 1 и будет тебе засчитана победа
Автор: SerjP75
Дата сообщения: 23.11.2006 12:28
Только поиск по "Числу" перестал работать
Автор: OXDBA
Дата сообщения: 23.11.2006 12:59
SerjP75
Опа, тогда на InitPopup нужно ListFieldIndex делать 0, а на CloseUp 1. Только это в теории, проверить на практике пока не могу...
Автор: SerjP75
Дата сообщения: 23.11.2006 13:59
Практика оказалась успешной . Спасибо
Автор: QQQRurik
Дата сообщения: 24.11.2006 06:44
Есть миного TcxGrid
Как бы их без мороки из TcxDBTableView в TcxDBBandedTableView




Автор: makz
Дата сообщения: 24.11.2006 07:26
QQQRurik

Цитата:
Как бы их без мороки из TcxDBTableView в TcxDBBandedTableView

Ну совсем без мороки - не выйдет. В .dfm, в описании объекта меняем TcxDBTableView на TcxDBBandedTableView и добавляем строку:
Bands = < item end>
,а в описание колонок добавляем:
Position.BandIndex = 0
Автор: X11
Дата сообщения: 24.11.2006 08:50
Есть ли возможность перевести текст в окне построителя фильтров. Построитель фильтров - это окно, вызываемое щелчком по кнопке в заголовке столбца cxGrid. Если есть такая возможность, то как это сделать? А то всё на русском, а Filter Builder на буржуйском.
Автор: makz
Дата сообщения: 24.11.2006 09:09
X11
cxFilterDialog.dfm
Автор: X11
Дата сообщения: 24.11.2006 09:49
makz, не эт не то. Осталось не переведенным ничего
Там же ещё есть меню типа, Add Condition.
cxFilterDialog.pas тоже нужно же переводить? А там всё из ресурсов .
Автор: QQQRurik
Дата сообщения: 24.11.2006 09:53
А возможно ли не в TcxDBBandedTableView (TcxDBTableView)
сделать фиксацию первых колонок

С закрытыми Band у TcxDBBandedTableView
Headers не хотят номально менять ширину и убираться

Если сделать Band=Header то еще и дырки остаются

Спасибо





Добавлено:
Можно внутри

cxSetResourceString(@cxSFilterBoolOperatorAnd,'И');
cxSetResourceString(@cxSFilterBoolOperatorOr,'ИЛИ');


попозже если надо кину
...........................
Автор: Dennica
Дата сообщения: 24.11.2006 10:24
X11
Тут где-то на форуме валялся файлик DevexRes.pas с уже переведенными ресурсами. Там диалоги были переведены.
Выложил, т.к. тот что был тут уже удален http://www.filefactory.com/file/b14c37/
Из главной формы в OnCreate
DevexRes.SetRes;
Автор: X11
Дата сообщения: 24.11.2006 10:32

Цитата:
cxSetResourceString(@cxSFilterBoolOperatorAnd,'И');

вообще нет такого текста во всех папках девок искал
Установлено DevExpress VCL Products1 march 2006
Автор: makz
Дата сообщения: 24.11.2006 11:07
QQQRurik
Band фиксируется.
X11
cxFilterConsts.pas, cxFilterControlStrs.pas. Не забудьде .dcu потереть.
Автор: X11
Дата сообщения: 24.11.2006 11:39
makz, в cxFilterConsts.pas всё на русском и когда открываю unit cxFilterDialog тоже всё на русском, а вот приработе приложения на буржуйском

Добавлено:
О, вроде нашёл в cxFilterControlStrs.pas
Автор: samusev
Дата сообщения: 24.11.2006 13:27
Продолжается тема с обработчиками полей.

есть поле Field1 типа TdxBarTreeViewCombo. Содержит классифицированное дерево шаблонов документов
+Выберите шаблон
+-Заявки
--Канцтовары
--Мебель
--Оргтехника
+-Отчеты
--Приходный
--Расходный

.... ну и т.д.

Задача. Как отловить Выбор пользователя (Enter или Click) и главное что он выбрал.
в OnChange анализ Field1.SelectedNode.Text - почемутА всегда на первый элемент показывает

Подскажите плз.

Добавлено:
продолжение...

При выборе шаблона происходит печать доки. чтобы иметь возм повторной генерации-печати сделано

на OnEnter
Field1.selectednode = Field1.Items.GetFirstNode

далее на OnCloseUp анализирую SelectedNode - всегда показывает корень.
то есть видимо Окно-дерева закрывается, а selectednode еще не присвоен.

Что делать?

Добавлено:
Вопрос снят


на onChanged - анализируем входящий Node - и все.

Просто промучался 2 дня - ну думаю к асам надо идти сдаваться!
Автор: Dennica
Дата сообщения: 24.11.2006 14:47
samusev

можно так:

procedure TForm1.Field1Change(Sender: TObject);
begin
if Assigned(Field1.SelectedNode) and (not Field1.DroppedDown) then
ShowMessage(Field1.SelectedNode.Text);
end;
Автор: svs123456789
Дата сообщения: 24.11.2006 17:46
а нет ли у кого перевода ExpressPrinting System и в частности dxPSRes

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Kylix


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