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

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

Автор: vladman
Дата сообщения: 23.11.2011 02:41
noobofthenoobs
Cryogen2003

Цитата:
Дык разрешить надо, чтобы был вариант с Grayed - AllowGrayed..... и будет тебе счастья

У TcxCheckComboBoxProperties своство AllowGrayed помечено как deprecated, так что его уcтавка не может решить проблему noobofthenoobs.

Как вариант решения можно предложить испольование связки cxPopupEdit и cxCheckListBox.
Важно, свойство EditValueFormat должно быть установлено в значение отличное от cvfInteger и, соответственно, как упоминалось ранее, AllowGrayed = True.
[more=Например]
*.dfm
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 390
ClientWidth = 339
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object cxCheckComboBox1: TcxCheckComboBox
Left = 104
Top = 56
Properties.Items = <
item
Description = 'Item1'
end
item
Description = 'Item2'
end
item
Description = 'Item3'
end>
TabOrder = 0
Width = 121
end
object Button1: TButton
Left = 120
Top = 96
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
object cxCheckListBox1: TcxCheckListBox
Left = 8
Top = 285
Width = 121
Height = 97
AllowGrayed = True
EditValueFormat = cvfIndices
Items = <
item
Text = 'Item1'
end
item
Text = 'Item2'
end
item
Text = 'Item3'
end>
TabOrder = 3
Visible = False
OnCheckStatesToEditValue = cxCheckListBox1CheckStatesToEditValue
OnClickCheck = cxCheckListBox1ClickCheck
end
object cxPopupEdit1: TcxPopupEdit
Left = 104
Top = 144
Properties.PopupClientEdge = True
Properties.PopupControl = cxCheckListBox1
Properties.PopupSizeable = False
Properties.ReadOnly = False
Properties.OnCloseUp = cxPopupEdit1PropertiesCloseUp
Properties.OnInitPopup = cxPopupEdit1PropertiesInitPopup
TabOrder = 2
Text = 'None selected'
Width = 121
end
end
-----------------

*.pas
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCheckComboBox,
StdCtrls, dxSkinsCore, cxCheckListBox, cxCheckBox;

type
TForm1 = class(TForm)
cxCheckComboBox1: TcxCheckComboBox;
Button1: TButton;
cxCheckListBox1: TcxCheckListBox;
cxPopupEdit1: TcxPopupEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure cxCheckListBox1CheckStatesToEditValue(Sender: TObject; const ACheckStates: TcxCheckStates; out AEditValue:
Variant);
procedure cxCheckListBox1ClickCheck(Sender: TObject; AIndex: Integer; APrevState, ANewState: TcxCheckBoxState);
procedure cxPopupEdit1PropertiesInitPopup(Sender: TObject);
procedure cxPopupEdit1PropertiesCloseUp(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
cxcheckcombobox1.States[1]:=cbsGrayed;
end;

procedure TForm1.cxCheckListBox1CheckStatesToEditValue(Sender: TObject; const ACheckStates: TcxCheckStates; out
AEditValue: Variant);
begin
//ваш код для более наглядного отображения cxPopupEdit1.Text
end;

procedure TForm1.cxCheckListBox1ClickCheck(Sender: TObject; AIndex: Integer; APrevState, ANewState: TcxCheckBoxState);
begin
cxPopupEdit1.Text := VarToStr(cxCheckListBox1.EditValue);
end;

procedure TForm1.cxPopupEdit1PropertiesCloseUp(Sender: TObject);
begin
cxCheckListBox1.Visible := False;
end;

procedure TForm1.cxPopupEdit1PropertiesInitPopup(Sender: TObject);
begin
cxCheckListBox1.Visible := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
cxcheckcombobox1.Properties.AllowGrayed:=true;
end;

end.
[/more]
Автор: SubAbonent
Дата сообщения: 28.11.2011 12:43
8.2.4 & c# 2005
В моём приложении хотелось бы предусмотреть следующую ситуацию.
Пользователь при печати сформированного отчёта в окне "Печать", вызываемом по Ctrl+P, выбирает печать на виртуальный принтер, который формирует файл (например, Microsoft XPS Document Writer, doPDF), либо на физический принтер с отметкой опции "Печать в файл", и нажимает кнопку Печать. Далее драйвер принтера выдаёт диалог выбора имени и местоположения файла. Возможно ли несложным способом отловить ситуацию, когда пользователь в этот момент делает отмену этого выбора?
Автор: xokc
Дата сообщения: 28.11.2011 17:22
SubAbonent
Несложным - нет. Эти окна - часть ОС и нужно будет отлавливать сначала факт появления в системе окна с диалогом имени файла, а потом ещё и нажатие на кнопку Отменить ( а так же нажатие на Esc, Ctrl+F4 и т. п.).
Автор: AlexCoRu
Дата сообщения: 29.11.2011 12:12
Можно ли в гриде сделать подсветку заголовка текущей ячейки? Нужно что б в TcxGridBandedTableView в котором несколько полей расположены одно над другим по заголовку было б видно в каком поле находимся.
Автор: X11
Дата сообщения: 29.11.2011 12:59
Зачем, если это видно в самой сетке, какая ячейка выделена.
Автор: AlexCoRu
Дата сообщения: 29.11.2011 13:21
Не всегда сразу видно. Например, друг под другом расположены
- количество,
- ёмкость,
- цена
и записей десяток. Горизонтальную линию, отделяющую записи во вьюхе, толще чем линии, разделяющие вертикальные поля, сделать тоже возможности нет. Красить вьюху зеброй не хочется. А выделить заголовок, как в экселе, было б самое то.

Добавлено:
Уже сколько раз путали количество и ёмкость, ёмкость и цену.

Добавлено:
Хотя можно и зеброй покрасить, но заголовок всё-равно выделять )
Автор: Shadka
Дата сообщения: 29.11.2011 14:30
Здравствуйте! Такой вот вопрос:
В cxgrid у поля в summary свойство groupkind установлено в akSum. Групповые итоги подбиваются, но результат отображается вот так: Пользователь (SUM=21)
Возможно ли изменить SUM на Сумма и т.п. ? Пробовала менять значения DisplayText и Format - нужного результата не получила.
Автор: X11
Дата сообщения: 29.11.2011 14:42

Цитата:
Пробовала менять значения DisplayText и Format - нужного результата не получила.


а что, привести свой пример у современных программистов считается моветон?
Автор: Shadka
Дата сообщения: 29.11.2011 14:49
X11, DisplayText:='Cумма'; =)
Формат походу только форматирует.
Автор: X11
Дата сообщения: 29.11.2011 14:51
Используй общие правила форматирования

Добавлено:
Например в Format введи:

Код: 'Кол-во:' #,##0.
Автор: Shadka
Дата сообщения: 29.11.2011 15:00
X11, спасибище!!! вот я лошара, так замучалась уже с этим)
Автор: Cryogen2003
Дата сообщения: 29.11.2011 16:55
Добрый вечер. Появилась задачка, нарисовать в проекте диаграмму ганта для отображения последовательности каких-либо действий.
Нашел в принципе неплохую реализацию в шедулере, но не устраивает привязка по времени (ну в принципе это шедулер, по идее та и должно быть). Как нибудь можно отказаться от привязки ко времени или искать придется другой компонент? Если придется искать другой компонент, то плиз пните в его сторону (можно в личку).

Весь проект написан на девовских компонентах (ну кроме компонентов подключения к ораклу и kbmDataSet).
Автор: AlexCoRu
Дата сообщения: 29.11.2011 17:33
Оказалось решение есть. Но
Цитата:
We appreciate it and will consider it regarding future versions of the ExpressQuantumGrid.
от 23.05.2006 22:27:43

Добавлено:
Редкий случай, однако

Добавлено:
Видимо, девэксовцы тоже считают
Цитата:
Зачем, если это видно в самой сетке, какая ячейка выделена.
Хоть не спрашивают "анафига".
Автор: sam291074
Дата сообщения: 29.11.2011 18:52
Подскажите, можно ли привести строку VertGrid, содержащую ComboBox (установлено в EditProperties), к типу TcxComboBox, чтобы получить ItemIndex выбранного элемента? Если можно, то как.
Напрямую (TcxComboBox*)Row->ItemIndex не катит - выскакивает AV.
RAD XE, Builder C++, Dev 2011.1.7
Автор: alexmir
Дата сообщения: 29.11.2011 21:09
Добрый день помогите решить, чет не могу сообразить, в общем использую dxDBTreeView и cxGrid. в dxDBTreeView загружаю категории из базы, далее надо при нажатии на категорию в cxGrid отобразить содержимое этой категории? Спасибо.
Автор: Graach
Дата сообщения: 29.11.2011 22:42
sam291074
Может проще будет прицепиться на событие выбора элемента конкретной строки грида.
Не знаю как в C++ Builder'e, но в Delphi это будет событие
procedure TForm1.cxVerticalGrid1EditorRow1EditPropertiesClickCheck(Sender: TObject; ItemIndex: Integer; var AllowToggle: Boolean);
и здесь у вас сразу есть индекс элемента, на который только что был сделан щелчок. Это меня проглючило на другой компонент.

Насколько я знаю, строки грида так просто не приводятся к типам того компонента, свойства которого они в себе содержат.

Еще можно попробовать TcxComboBox(cxVerticalGrid1.InplaceEditor).ItemIndex. На какое событие это можно повесить, не знаю.
Автор: vladman
Дата сообщения: 30.11.2011 01:38
AlexCoRu

Цитата:
Можно ли в гриде сделать подсветку заголовка текущей ячейки?

Можно. Например:

Код: procedure <YourForm>.<YourGridBandedTableView>FocusedItemChanged(Sender: TcxCustomGridTableView; APrevFocusedItem,
AFocusedItem: TcxCustomGridTableItem);
begin
<YourGrid>.Invalidate(True);
end;

procedure <YourForm>.<YourGridBandedTableView>CustomDrawColumnHeader( Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
vRec: TRect;
vTextToDraw: String;
begin
if AViewInfo.Column.Focused then
begin
vTextToDraw := AViewInfo.Text;
vRec := AViewInfo.Bounds;
ACanvas.FillRect(vRec, clActiveCaption);
ACanvas.DrawFocusRect(vRec);
ACanvas.DrawText(vTextToDraw, vRec, cxAlignCenter);
ADone := True;
end;
end;
Автор: X11
Дата сообщения: 30.11.2011 08:56

Цитата:
Добрый вечер. Появилась задачка, нарисовать в проекте диаграмму ганта для отображения последовательности каких-либо действий.  
Нашел в принципе неплохую реализацию в шедулере, но не устраивает привязка по времени (ну в принципе это шедулер, по идее та и должно быть). Как нибудь можно отказаться от привязки ко времени или искать придется другой компонент? Если придется искать другой компонент, то плиз пните в его сторону (можно в личку).


я пересмотрел несколько разных в своё время и остановился на TeeChart
Автор: Cryogen2003
Дата сообщения: 30.11.2011 09:00
X11
А можно демку и скрины в личку?! Просто всегда считал, что TeeChart только для обычных графиков
Автор: X11
Дата сообщения: 30.11.2011 09:03

Цитата:
Подскажите, можно ли привести строку VertGrid, содержащую ComboBox (установлено в EditProperties), к типу TcxComboBox, чтобы получить ItemIndex выбранного элемента? Если можно, то как.
Напрямую (TcxComboBox*)Row->ItemIndex не катит - выскакивает AV.
RAD XE, Builder C++, Dev 2011.1.7


Тебе нужно получить значение выбранного элемента?
Достаточно просто:
i := RowComboBox.Properties.Value;
или если текст, что вместо Value DisplayText.

Если нет, то поясни, что именно нужно
Автор: X11
Дата сообщения: 30.11.2011 12:08

Цитата:
Добрый день помогите решить, чет не могу сообразить, в общем использую dxDBTreeView и cxGrid. в dxDBTreeView загружаю категории из базы, далее надо при нажатии на категорию в cxGrid отобразить содержимое этой категории? Спасибо.


Ну и где код?
Что не получается?

Предварительно могу сказать, что после изменения записи в дереве, нужно передавать в подчинённый НД грида условие where и переоткрывать этот НД.
Автор: AAlexander
Дата сообщения: 30.11.2011 17:15
Подскажите пожалуйста:
Я использую XtraGrid совместно с Linq to Sql. Грид используется для отображаения задач(имя, описание, проект (объект типа проект), исполнитель (объект типа исполнитель)). Использую один MainView и для нужных колонок назначаю GroupIndex.
Всё работает, отображется и редактируется без проблем. Проблема возникает, когда пользователь хочет увидеть задачи сгруппированные по исполнителю и при этом чтобы грид показывал также тех исполнителей, для которых ещё не назначено ни одной задачи. Есть ли возможность данной колонке указать всех исполнителей, чтобы в результате были показаны все они(исполнители)?
Автор: AlexCoRu
Дата сообщения: 30.11.2011 19:11
vladman, подходящий вариант.
Автор: sam291074
Дата сообщения: 01.12.2011 05:16
X11

Цитата:
Тебе нужно получить значение выбранного элемента?
Достаточно просто:
i := RowComboBox.Properties.Value;
или если текст, что вместо Value DisplayText.

Если нет, то поясни, что именно нужно


RowComboBox->Properties->EditProperties->Items - это список. Допустим он содержит строки "первый", "второй", "третий". В этом случае RowComboBox->Properties->Value и RowComboBox->Properties->DisplayText будут выдавать содержание строки, но не ее номер в списке. А номер можно получить?
Автор: marser
Дата сообщения: 01.12.2011 06:00
sam291074

Цитата:
А номер можно получить?

А неужели так сложно в TStrings узнать номер строки? Items.IndexOf()
Автор: X11
Дата сообщения: 01.12.2011 10:39

Цитата:
А номер можно получить?

Номер чего?
Номер выбранной строки?

Я ж ответил:


Цитата:
RowComboBox.Properties.Value;  

а DisplayText - это текст выбранной строки
Автор: marser
Дата сообщения: 01.12.2011 11:07
X11
Речь идет о RowComboBox.Properties.EditPropertiesClass = TcxComboBoxProperties.
Так что, sam291074 абсолютно прав
Цитата:
В этом случае RowComboBox->Properties->Value и RowComboBox->Properties->DisplayText будут выдавать содержание строки, но не ее номер в списке.
Автор: X11
Дата сообщения: 01.12.2011 11:18

Цитата:
В этом случае RowComboBox->Properties->Value


Цитата:
будут выдавать содержание строки


ты уверен?
Автор: marser
Дата сообщения: 01.12.2011 11:25
X11

Цитата:
ты уверен?

Да. Проверил.
Автор: mdid
Дата сообщения: 01.12.2011 14:11
народ.хелп плиз с maskedit...хелпа у меня нет и скачать нет возможности..
в общем надо числа 0-9 в количестве 12 штук..пробовал 12 раз \d но он на меня орет что число не верное если ввести меньше 12 символов...может есть как то по проще варианты?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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