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

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

Автор: salexn1
Дата сообщения: 27.11.2012 10:01
MagistrAnatol

Цитата:
AEdit := TcxRichEdit(Edit); - не пойму что такое Edit???

у Controller.EditingController есть Edit

Но это не ваше скорее всего, это пример для RichEdit
Автор: mdid
Дата сообщения: 27.11.2012 10:38
MagistrAnatol
про одну колонку вы ничего не говорили

Цитата:
У меня по фильтру и так останутся только нужные значения


Но тут какая кака может быть. Я, конечно, не знаю вашей задачи, но у меня подсветка куска слова не прокатит по одной простой причине. У меня может быть куча колонок со значениями, которые могут не влезть в ширину колонки. Посему сама по себе подсветка не прокатит. Так как искомый кусок может быть за видимой границей. Посему, если у вас может быть такая же ситуевина, то это потом, просто, вгонит в ступор усера, так как значение отфильтруется, а подсветки нет. Вам решать, но на красоты я бы забил, и выделил просто ячейку, даже если там одна колонка.


Автор: salexn1
Дата сообщения: 27.11.2012 10:41
mdid
И вы получите просто одну желтую колонку
И смысл тогда ее раскрашивать?
Автор: mdid
Дата сообщения: 27.11.2012 10:47
salexn1
я просто предлагаю варианты, так как не знаю всех интимных подробностей. Просто если одна колонка, то смысла выделять отфильтрованные значения нет(как полностью так и частично), так как усер все равно прочитает сначала каждое найденное значение. По крайней мере должен.
Автор: salexn1
Дата сообщения: 27.11.2012 10:55
mdid
как приятно при поиске в гриде подсветка введенных данных... (даже по начальным сивмолам)
так и тут: отфильтровали - подсветили часть текста.
по-моему логика железная: не нужно искать ту часть текста, из-за которой она попала в фильтр
Автор: MagistrAnatol
Дата сообщения: 27.11.2012 14:35
вот код подсветки символов

Код: [no]

void __fastcall TfrmNewOper::cxGrid1DBCardView1OPER_NAMECustomDrawCell(TcxCustomGridTableView *Sender,
         TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
         bool &ADone)
{

if (Pos(AnsiLowerCase(AdvEditBtn1->Text),AnsiLowerCase(VarToStr(AViewInfo->Value)))>0)
{
TRect R ;
AnsiString s1,S2;
int X,dx,cx,C,Y;



ADone = true;
R = AViewInfo->Bounds;
s1 = AViewInfo->Text;
C = AdvEditBtn1->Text.Length();
cx = ACanvas->TextWidth(AdvEditBtn1->Text);
ACanvas->FillRect(R);
X = R.Left;

if (AViewInfo->Selected) ACanvas->Font->Color = clWhite ;
else ACanvas->Font->Color = clBlack;

ACanvas->Canvas->TextOut(R.Left + 1, R.Top + 1, s1);
ACanvas->Font->Color = clRed;
while (Y!=0)
{

    Y = Pos(AdvEditBtn1->Text, s1);
    if (Y > 1)
    {
     S2 = s1.SubString(1,Y-1);
     dx = ACanvas->TextWidth(S2);
     s1=s1.Delete(1,Y-1);
     X=X+dx;
    }

    if (Y > 0)
    {
     S2=s1.SubString(1, C);
     ACanvas->Canvas->TextOut(X + 1, R.Top + 1, S2);
     s1=s1.Delete(1,C);
     X=X+cx;

    }
}

}
}
//---------------------------------------------------------------------------
[/no]
Автор: X11
Дата сообщения: 28.11.2012 11:01
У TcxTreeList есть DefaultLayout. Почитал в справке и не понял что это и для чего? Кто-нибудь пользуется? Можете "показать на пальцах"?

Добавлено:

Цитата:
вот код подсветки символов

а вот на дельфи (в этой же ветке когда-то давно дали пример)

Код: procedure TfmEdit.GridDB1TELCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var R: TRect;
s1,S2: string;
X,dx,cx,C,Y: integer;
begin
if checkHighLight.EditValue = false then exit;

ADone := true;
R := AViewInfo.Bounds;
s1 := AViewInfo.Text;
C := Length(edSearch.Text);
cx := ACanvas.TextWidth(edSearch.Text);
ACanvas.FillRect(R);
X := R.Left;
if AViewInfo.Selected
then ACanvas.Font.Color := clWhite
else ACanvas.Font.Color := clBlack;
ACanvas.Canvas.TextOut(R.Left + 1, R.Top + 1, S1);
ACanvas.Font.Color := clRed;
repeat
Y := Pos(edSearch.Text, S1);
if Y > 1 then begin
S2 := Copy(S1,1,Y-1);
dx := ACanvas.TextWidth(s2);
Delete(S1,1,Y-1);
Inc(X,dx);
end;

if Y > 0 then begin
ACanvas.Canvas.TextOut(X + 1, R.Top + 1, copy(S1, 1, C));
Delete(S1,1,C);
Inc(X,cx);
end;
until Y = 0;

end;
Автор: G787
Дата сообщения: 29.11.2012 08:18

Цитата:
у Controller.EditingController есть Edit   Но это не ваше скорее всего, это пример для RichEdit



А если у cxGridColumn в RepositoryItem стоит RichEdit ?
Автор: salexn1
Дата сообщения: 29.11.2012 10:09
G787
Должно отработать

Но X11 привел универсальный код.
Автор: X11
Дата сообщения: 29.11.2012 12:24
Вопрос про группировку и фильтрацию.
Пользователь сгруппировал записи. А как теперь сделать, чтобы ему отобразить только группы, где определённое количество записей, например, >1
Автор: G787
Дата сообщения: 29.11.2012 17:29

X11

Наверное скрыть записи с не повторяющимися значения по группированной колонке.
Автор: X11
Дата сообщения: 29.11.2012 19:07
да, а как скрыть?
Автор: dimm78
Дата сообщения: 29.11.2012 19:30
X11


Цитата:
да, а как скрыть?


Может стоит пробежаться по по группам (DataController.Groups), получить количество строк для каждой группы и для тех групп, у которых количество строк = 1, добавить фильтр по значению поля для которого была сделана группировка. Другого варианта что то не вижу)))
Автор: G787
Дата сообщения: 30.11.2012 14:37
X11
Пардон, я думал есть что-то типа row.visibility , а тут по любому нужно через фильтр ..
Автор: dimm78
Дата сообщения: 30.11.2012 18:31
X11

Есть еще такая хрень View.DataController.DeleteRecord(RecordIndex) - запись удаляется из вьюхи, однако физического удаления из датасета прикрепленного к вьюхе не происходит. Попробуй может и это прокатит.
Автор: delphiuser
Дата сообщения: 03.12.2012 09:18
Добрый день.
Как вывести картинку из ImageList в TcxLookupComboBox перед текстом?
Автор: makz
Дата сообщения: 04.12.2012 03:56
delphiuser
Можно использовать TcxExtLookupComboBox, а велосипед не изобретать.
Автор: MagistrAnatol
Дата сообщения: 06.12.2012 15:57
Как программно свернуть/развернуть dxDockPanel?
Hide() его полностью прячет

Добавлено:
Немного уточню задачу есть три dxDockPanel вот картинка

мне надо чтобы при нажатии на док Печать(Друк) левые доки скрывались/сворачивались , док печать(Друк) ставал на всю форму.
При активации дока Правка все становилось на круги своя
Автор: mdid
Дата сообщения: 06.12.2012 16:41
MagistrAnatol
без обид, но на первый взгляд интерфейс - говно. Чем проще-тем лучше. Авы непонятно чем перегружаете его. По моему по правилам хорошего тона, усеру надо показывать только то, что он просит. А у вас сразу все, а потом согласно кнопке что то прячется. Простота - залог здоровья.
сделайте что то типа

сбоку кнопки, остальная рабочая область(pagecontrol), Tabsheet которой показывается согласно нажатой кнопке.
ПС
так как не знаю всей задачи, могу делать неверные выводы.
Автор: MagistrAnatol
Дата сообщения: 07.12.2012 08:49
mdid
Я и так постарался максимально упростить интерфейс - левая панель - перечень операций, правая - управление етим перечнем, центральная - визуализация действий, просто надо впихнуть и печать с выбором в центральной панели, а в печати тоже список чего печатать, короче муть.
Ваш вариант оформления а сам часто пользую, но при такой реализации еще больше придется клацать, и все запутается до невозможности.
Попробую упростить фейс, но врядли.
Автор: Andryshok
Дата сообщения: 07.12.2012 09:55
MagistrAnatol Ща меня будут ругать тут.... но можт вариант сделать обычную форму с менюшкой... а не делать вот такой "гимор". Поверь магистр - усеры не оценят твое творение - они не любят перемен.
Кстати в случае гимора помогает чтение доки по девам. Я хотел было залезть в нее и тыкнуть пальцем..., но глядя на творение желание пропало.
Автор: Man_Without_Face
Дата сообщения: 07.12.2012 09:57
Добрый день! Dll была написана на Delphi 2009 + Developer Express v52. Теперь перевел проект на Delphi XE2 + DevExpress.VCL.2011.vol.2.4. При создании формы на который лежит cxGrid вылетает av. Под дебарегом ругается на юнит cxGridCustomTableView на
function TcxCustomGridTableItem.CanFilter(AVisually: Boolean): Boolean;
begin
Result :=
(esoFiltering in GetProperties.GetSupportedOperations) and FOptions.Filtering and
(not AVisually or GridView.OptionsCustomize.ItemFiltering and FOptions.FilteringPopup);
end;

DevExpress.VCL.2011.vol.2.4 переустанавливал заново, не помогло. Как решить проблему?

p.s. Windows 7 32. С другими проектами при переводе проблем не было.
Автор: kabee
Дата сообщения: 07.12.2012 11:56
Как воткнуть выпадающее дерево в gridview?
Один из столбцов в каждой ячейке содержит editorbutton, при нажатии на нее формируется и отображается дерево, где уже можно выбрать значение.
Возможно ли реализвать такой вариант: сделать пользовательский контрол (например treelist), на нужном столбце определить свойство .ColumnEdit = repositoryItemLookUpEdit и уже в него запихнуть дерево?
Автор: X11
Дата сообщения: 07.12.2012 12:57
Можно. Просмотрите форум несколько страниц назад. Уже дали готовый пример и несколько вспомогательных модулей. Но просто так у Вас ничего не выйдет.

Второй вариант - это popupEdit указать в Properties и уж в выпадающую панельку пихайте, что душе заблагорассудится )))
Автор: G787
Дата сообщения: 07.12.2012 15:50
Как присвоть Band-у колонку ? Или как назначить колонке Band ?
Автор: neznayka3
Дата сообщения: 07.12.2012 15:54
подскажите как лучше "мигнуть" записью в cxGrid. если запись добавилась или изменилась юзер хочет это увидеть.
Автор: G787
Дата сообщения: 07.12.2012 15:57
Всё нашел MoveColumn
Автор: mdid
Дата сообщения: 07.12.2012 16:06
neznayka3
а вы после добавления и обновления курсор на добавленную запись ставьте
Автор: salexn1
Дата сообщения: 07.12.2012 16:11
mdid
а если Вы установили курсор на запись, которую хотите редактировать и тут бац! и вы уже на другой... А если пользователей много и много изменений, то отредактировать запись можно и не успеть... Или грид будет мигать, как рождественская елка.

Уже столько копий было сломано вокруг обсуждения - надо ли автоматически обновлять записи, подсвечивать, мигать и прочее...
Автор: mdid
Дата сообщения: 07.12.2012 16:17
salexn1

Цитата:
а если Вы установили курсор на запись, которую хотите редактировать и тут бац! и вы уже на другой..

это как?
у меня ща 40 усеров, и я даже представить не могу, что надо сделать, что бы такое случилось

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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