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

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

Автор: uranic2
Дата сообщения: 15.02.2016 07:13
vipper
Устанешь от юникода избавляться. Так что меняй версию Делфи
Автор: vavavol
Дата сообщения: 26.02.2016 11:04
Добрый день! Перешёл с версии 2013.2.3 на 15.2.2 Пока особо не вникал, но сразу заметил, что вертикальные разделители в колонках (Headers) в cxGrid почти невидимы. Может, это кому-то нравится, но привыкшие юзера могут это не принять. Может, появилось какое-то свойство чтобы в данной версии девок изменить так, как было? Заранее спасибо за ответ
Автор: Cryogen2003
Дата сообщения: 26.02.2016 11:51
если используешь скин контроллер, то посмотри, не слетел ли он в native.
Плюс ко всему в гриде посмотри, что стоит в LookAndFeel
Автор: vavavol
Дата сообщения: 26.02.2016 15:18
Cryogen2003

Цитата:
если используешь скин контроллер, то посмотри, не слетел ли он в native.
Плюс ко всему в гриде посмотри, что стоит в LookAndFeel


При установке я вообще не включал скин библиотеку. Да, в гриде LookAndFeel.NativStyle стоял True. Благодарю
Автор: Sufferer
Дата сообщения: 08.03.2016 18:38
А есть ли стандартная возможность в Рибон заставить кнопки работать как радобуттоны? Можно конечно и самому сделать, но может уже это реализовано?
Автор: NeoAnomaly
Дата сообщения: 08.03.2016 19:57
Sufferer buttonstyle(или allowup, не помню точно, как в vcl) + group index.
Автор: Sufferer
Дата сообщения: 08.03.2016 21:36
Че-то не получается, уже все варианты вроде перебрал. Снимается отметка после нажатия кнопки.
Автор: NeoAnomaly
Дата сообщения: 09.03.2016 04:54

Цитата:
Че-то не получается, уже все варианты вроде перебрал. Снимается отметка после нажатия кнопки.

Sufferer как задал свойства, какие значения? Снимается отметка после нажатия на отмеченную кнопку или как?
Автор: Sufferer
Дата сообщения: 09.03.2016 07:10
Ситуация не меняется, нажал, отпустил - подсветка снялась.
Что делал:
Выставлял индексы для GroupIndex
Выставлял значение AllowAllUp = True
Выставлял значение UnclickAfterDoing = False
Определял для кнопок свойство bgpGroup = bgpMember

Не желают работать как радиобуттоны
Автор: ChSerg
Дата сообщения: 09.03.2016 23:40
Sufferer
GroupIndex одинаковый для всех кнопок группы?
AllowAllUp = False, если это действительно радиобаттоны.
Автор: d3adb33f
Дата сообщения: 21.03.2016 00:28
Может кто подскажет встроенные в DX функции преобразования Color в HEX, HTML и обратно или хотя бы в каком модуле они зашиты.?
Автор: ChSerg
Дата сообщения: 21.03.2016 16:09
d3adb33f
Вот тут можно посмотреть: dxGDIPlusAPI.pas
Автор: diablist
Дата сообщения: 27.03.2016 22:14
Ребята подскажите, где черт возьми Modified в TcxMemo, то есть как определить что текст менялся? рылся рылся, не могу ничего найти и все!
Автор: VadimLou
Дата сообщения: 27.03.2016 23:33

Цитата:
Modified в TcxMemo
EditModified
sample:
if cxDBEdit.EditModified then
cxDBEdit.PostEditValue;
Автор: diablist
Дата сообщения: 28.03.2016 20:07

Цитата:
EditModified

Спасибо! блин ктоб знал!

Еще вопрос, ExpressSpellChecker работает как-то с другими memo кроме своих? и работает ли с ExpressRichEdit Control?
Автор: VadimLou
Дата сообщения: 28.03.2016 22:34

Цитата:
ExpressRichEdit Control + SpellCheck
Судя по имени файла "dxRichEdit.InnerControl.SpellCheckerController.pas" поддерживается.

Цитата:
SpellCheck + other editors
Тут с другого конца тянется - умеют ли другие editors-ы работать с cxSpellCheck-ером. Если автор не предусмотрел , то нет. По идее там не сложно самому добавить поддержу. Для примера смотри поиск по "SpellChecker" в "cxEdit.pas" (cxTextEdit.pas/cxMemo.pas).
Автор: diablist
Дата сообщения: 29.03.2016 02:44

Цитата:
SpellChecker

Стандартные контролы поддерживаются, т.е. все TWinControl, но вот уже к примеру SynEdit нет, либо TMSMemo и.т.д


Цитата:
Control Integration and API
A wide range of both DevExpress and standard text-editing controls are fully supported.
The ExpressSpellChecker's API includes methods to check an arbitrary string, a text editor's content or all text editor controls within a specified container

Но вот документации по этому самому Control Integration нифига тоже нет(
Исхдники посмотрел, но что-то я не силен понять, как подогнать другой контрол под проверку(
Автор: zFire
Дата сообщения: 09.04.2016 11:52
Подскажите пожалуйста как в tdxspreadsheet получить сразу область данных?
(типа =Excel.WorkSheets[Sheet].UsedRange.Value)
Автор: KDPoid
Дата сообщения: 15.04.2016 12:46
TcxGridTableView
В ней столбик типа TcxGridColumn
У него Properties типа TcxImageComboBoxProperties
Как программно заставить вывалиться комбобокс ?
Автор: ASGASG
Дата сообщения: 18.04.2016 14:56
Подскажите пожалуйста, как сделать, чтоб ACanvas.DrawText выводил текст с выравниванием определённым в design-time (в разных колонках своё выравнивание)?
Автор: vavavol
Дата сообщения: 21.04.2016 09:10
Добрый день! cxGrid. Не подскажете, как программно выделить часть значения в ячейке, как при IncSearch. Я пытаюсь реализовать а-ля IncSearch, ведь стандартные возможности данного механизма немного не подходят (одновременно только по одному полю, поиск только с начала значения). Ну, или кто-то поделится реализацией с учётом вышеперечисленных требований. Я после своих трудов тоже поделюсь, если будут результаты. Спасибо.
Автор: marser
Дата сообщения: 21.04.2016 11:15
vavavol

Цитата:
Не подскажете, как программно выделить часть значения в ячейке, как при IncSearch.

Нужно обработать событие OnCustomDrawCell.

Код:
procedure TForm1.cxGrid1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
HighlightTextUseCustomDrawCell(VarToStr('Текст, который нужно выделить', Sender, ACanvas, AViewInfo, ADone);
end;

procedure HighlightTextUseCustomDrawCell(AText: string; Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
R: TRect;
H: Integer;
brushColor, fontColor: TColor;

procedure InitRect(var ARect: TRect; const l, w: Integer);
begin
ARect.Left := l;
ARect.Top := R.Top + 2;
ARect.Right := ARect.Left + w;
ARect.Bottom := ARect.Top + H;
end;

procedure CanvasInitDefault;
begin
// ACanvas.Font.Style := [];
ACanvas.Font.Color := fontColor;
ACanvas.Brush.Color := brushColor;
end;

procedure CanvasInitSelection;
begin
// ACanvas.Font.Style := [fsBold];
ACanvas.Font.Color := Sender.LookAndFeelPainter.DefaultSelectionTextColor;
ACanvas.Brush.Color := Sender.LookAndFeelPainter.DefaultSelectionColor;
end;

var
rt: TRect;
P, lT, lSearch, wSearch, wS: Integer;
T, sSearch, S: string;
begin
R := AViewInfo.Bounds;
T := AViewInfo.Text;
sSearch := AText;
P := AnsiPos(AnsiUpperCase(sSearch), AnsiUpperCase(T));
if P < 1 then
Exit;
ADone := True;
fontColor := ACanvas.Font.Color;
brushColor := ACanvas.Brush.Color;
ACanvas.FillRect(R);
H := ACanvas.TextHeight(T);
lT := Length(T);
lSearch := Length(sSearch);
sSearch := Copy(T, P, lSearch);
CanvasInitSelection;
wSearch := ACanvas.TextWidth(sSearch);
if P = 1 then
begin
if lT = lSearch then
ACanvas.TextOut(R.Left + 2, R.Top + 2, T)
else
begin
InitRect(rt, R.Left + 2, wSearch);
ACanvas.Canvas.TextRect(rt, rt.Left, rt.Top, sSearch);
S := Copy(T, lSearch + 1, lT);
CanvasInitDefault;
wS := ACanvas.TextWidth(S);
InitRect(rt, rt.Right, wS);
ACanvas.Canvas.TextRect(rt, rt.Left, rt.Top, S);
end;
end else begin
CanvasInitDefault;
S := Copy(T, 1, P - 1);
ACanvas.TextOut(R.Left + 2, R.Top + 2, S);
wS := ACanvas.TextWidth(S);
CanvasInitSelection;
InitRect(rt, R.Left + 2 + wS, wSearch);
ACanvas.Canvas.TextRect(rt, rt.Left, rt.Top, sSearch);
if P + lSearch - 1 < lT then
begin
S := Copy(T, P + lSearch, lT);
CanvasInitDefault;
wS := ACanvas.TextWidth(S);
InitRect(rt, rt.Right, wS);
ACanvas.Canvas.TextRect(rt, rt.Left, rt.Top, S);
end;
end;
end;
Автор: vavavol
Дата сообщения: 22.04.2016 08:59
marser

Благодарю Вас! Супер! Вы мне очень помогли. Да, и супер то, что есть теперь FindPanel. Иногда инструкции надо читать мне! Пойду по второму пути! Но Ваше - сохраню! Хорошего всем дня
Автор: exteris
Дата сообщения: 22.04.2016 09:22

Цитата:
Только в новых версиях это не актуально. Есть же FindPanel.

Оно умеет искать по любой части части слова?
Автор: NeoAnomaly
Дата сообщения: 22.04.2016 10:39
Автор: ivan76
Дата сообщения: 29.04.2016 13:14
Все доброго времени суток.

Вопрос, есть сетка (cxgrid), есть столбец содержащий id из справочника, добавлен новый несвязанный столбец с properties LookupComboBox.
При раскрытии, я вижу значения из справочника, хотелось бы синхронизировать данные столбца при заполнении сетки, что то вроде этого cxGrid1DBTableView1Column1.EditValue := id
не могу сообразить как сделать
Автор: KDPoid
Дата сообщения: 30.04.2016 16:35
Вы ходите одновременно отображать и id и лукапное поле для этого id из справочника ?
Так может просто завести в гриде два столбца, отображающих id ?
В одном столбце числом, а в другом лукапно.
Автор: ivan76
Дата сообщения: 01.05.2016 11:14

Цитата:
Вы ходите одновременно отображать и id и лукапное поле для этого id из справочника ?
Так может просто завести в гриде два столбца, отображающих id ?
В одном столбце числом, а в другом лукапно.


Поле id и так присутствует, выбор из списка осуществляется, но в режиме read-only (специфика запроса).
мне нужно при заполнении сетки выполнить что то подобное этому cxGrid1DBTableView1Column1.EditValue := id , но не могу понять в каком событии это можно сделать, что то подобное BeforeinsertRecord .
Автор: reenoip
Дата сообщения: 05.05.2016 06:24
Seattle + DE15.2.2. Кто силён в скинах - подскажите, пожалуйста, почему в dxSkinEditor в превью одна картинка, а в конечном приложении - другая:





???



Скин, естественно, один и тот же. Стоковый, шёл в комплекте, изменения не вносились. Лучше, конечно, если у себя перепроверите этот эффект.
Автор: reenoip
Дата сообщения: 05.05.2016 08:31

Цитата:
почему в dxSkinEditor в превью одна картинка

Путём практического ковыряния исходников исправил сей досадный визуальный глюк так:

\ExpressBars\Sources\dxRibbonFormCaptionHelper.pas:

AIndent := (GetWindowCaptionHeight - AIconSize.cy) div 2;
заменить на:
AIndent := 0;

Result := cxRectSetTop(GetClientRect, AIndent, AIconSize.cy);
заменить на:
Result := cxRectSetTop(GetClientRect, AIndent, GetWindowCaptionHeight);

R := cxRectSetRight(R, R.Right, CalculateBorderIconSize(AIcon).cx);
заменить на:
R := cxRectSetRight(R, R.Right, 46);

\ExpressBars\Sources\dxRibbon.pas:

Result := Ribbon.FormCaptionHelper.TextBounds.Left + 4;
заменить на:
Result := Ribbon.FormCaptionHelper.TextBounds.Left + 2;


После внесения и сохранения изменений необходима повторная компиляция набора.


Хотя, конечно, вряд ли здесь кто-то заморачивается такими мелочами кроме меня.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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