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

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

Автор: neznayka3
Дата сообщения: 07.12.2012 16:36
mdid
есть варианты, кроме установки курсора?
salexn1
юзер хочет, чтоб грид мигал. в настройки пропишу, кому не нравится - уберут. интересует менее затратный и правильный способ.
Автор: mdid
Дата сообщения: 07.12.2012 16:56
neznayka3
не совсем понятно. Усер не помнит что менял, или он хочет видеть в режиме реального времени, что меняли другие? Так второй вариант это вообще бред сивой кобылы. Грузить сервак постоянными запросами по таймеру. Это раз. Второе, вам где то надо хранить предыдущее состояние+сравнение. Это все выльется в то, что ваша прога будет жрать проц и озу, а сервак будет постоянно нагружен выполняя бессмысленные запросы. Вы как программист должны пояснить усеру, что можно, а что нет, ибо чуть позже, когда все начнет тормозить, и беспорядочно мигать на экране, виноваты будете вы.
Автор: neznayka3
Дата сообщения: 07.12.2012 17:11
mdid
не совсем так. динамически обновляются несколько журналов(настраивается). клиент ничего не посылает, а ждет сообщение от сервера в другом потоке(PostgreSQL+AnyDAC). юзер, который отвечает за работу подопечных видит все в реальном времени. теперь хочет, чтобы изменения "мигали". хранить состояние не надо, если запись обновилась, придет сообщение с сервера.
тормоза с динам. обновлениями пока не замечены.
все "пожелания" от юзеров записываются, ко мне претензии только в случае ошибок.
Автор: G787
Дата сообщения: 07.12.2012 21:28
RE: подскажите как лучше "мигнуть" записью в cxGrid. если запись добавилась или изменилась юзер хочет это увидеть.
neznayka3


Выделить нужный Row
cxGrid2BandedTableView1.DataController.SelectRows();

Установить стиль для
cxGrid2BandedTableView1.Styles.Selection

а затем у этого стиля (cxStyle1) менять свойство Color

И будет мигание задним фоном
Автор: X11
Дата сообщения: 08.12.2012 10:56
здесь есть пример мигания рамкой
http://www.sql.ru/blogs/x11
Автор: DNLHC
Дата сообщения: 16.12.2012 17:24
подскажите какой пароль был к установщику DevExpr_2011.2.3?
я решил переустановить, т.к некоторые компоненты отлетели, а пароль не помню уже
Автор: G787
Дата сообщения: 17.12.2012 00:41
Скажите а для cxGrida есть что-нить что сохраняет и восстанавливает позиции всех Bando-в и Columns ?
Автор: neznayka3
Дата сообщения: 17.12.2012 06:55
G787

Код: <view>.StoreToIniFile(fname);
Автор: StredaX1
Дата сообщения: 17.12.2012 11:10
G787

Код: TcxCustomGridView.StoreToStream
Автор: G787
Дата сообщения: 17.12.2012 13:06
мерси
Автор: eddoc
Дата сообщения: 17.12.2012 15:39
Вопрос к работавшим с cxSheduler'ом. Посоветуйте оптимальную структуру БД с учетом привязки к этому компоненту. Нужно прикрутить к базу расписание приемов докторов с учетом что течение дня в одном кабинете в разное время могут принимать разные доктора + доктор может принимать в разных клиниках и носить базу с собой.

Я сделал некоторые наброски в виде [more=DDL базы]
-- Domains

CREATE DOMAIN DMN_BLOBTXT AS
BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET UTF8;

CREATE DOMAIN DMN_BOOL AS
SMALLINT
DEFAULT 0
NOT NULL
CHECK (VALUE IN (0,1));

CREATE DOMAIN DMN_DATE AS
DATE
DEFAULT CURRENT_DATE
NOT NULL;

-- Tables


CREATE TABLE TBL_CLINIC (-- табля с клиниками
ID_CLINIC INTEGER NOT NULL,
NAME_CLINIC VARCHAR(100) CHARACTER SET UTF8 NOT NULL
);

CREATE TABLE TBL_DOCTOR (-- табля с докторами
ID_DOCTOR INTEGER NOT NULL,
FIO_DOCTOR VARCHAR(100) CHARACTER SET UTF8 NOT NULL
);

CREATE TABLE TBL_PATIENTS_GENERAL (-- пациенты с оформленной амб.картой
ID_PATIENTS_GENERAL INTEGER NOT NULL,
FIO_PATIENTS_GENERAL VARCHAR(100) CHARACTER SET UTF8 NOT NULL
);

CREATE TABLE TBL_PATIENTS_TEMP (-- пациенты без оформленной амб.карты
ID_PATIENTS_TEMP INTEGER NOT NULL,
FIO_PATIENTS_TEMP VARCHAR(100) CHARACTER SET UTF8 NOT NULL
);

CREATE TABLE TBL_PLANNER (-- табля расписания
ID_PLANNER INTEGER NOT NULL,
FK_DOCTOR INTEGER NOT NULL,
FK_CLINIC INTEGER NOT NULL,
FK_ROOM INTEGER NOT NULL,
FK_PATIENTS_GENERAL INTEGER NOT NULL,
FK_PATIENTS_TEMP INTEGER NOT NULL,
DATE_PLANNER DMN_DATE,
NOTES_PLANNER DMN_BLOBTXT
);

CREATE TABLE TBL_ROOM (--табля кабинетов
ID_ROOM INTEGER NOT NULL,
NUMB_ROOM INTEGER,
NAME_ROOM VARCHAR(20) CHARACTER SET UTF8 DEFAULT 'Unnamed Room' NOT NULL
);

CREATE TABLE TBL_TIME_SLICE (--табля интервалов
ID_TIME_SLICE INTEGER NOT NULL,
FK_PLANNER INTEGER NOT NULL,
TIME_SLICE_300 DMN_BOOL,
TIME_SLICE_310 DMN_BOOL,
TIME_SLICE_320 DMN_BOOL,
TIME_SLICE_340 DMN_BOOL,
TIME_SLICE_350 DMN_BOOL,
TIME_SLICE_360 DMN_BOOL,
TIME_SLICE_370 DMN_BOOL,
TIME_SLICE_380 DMN_BOOL
);



-- Primary Keys

ALTER TABLE TBL_CLINIC ADD CONSTRAINT PK_TBL_CLINIC PRIMARY KEY (ID_CLINIC);
ALTER TABLE TBL_DOCTOR ADD CONSTRAINT PK_TBL_DOCTOR PRIMARY KEY (ID_DOCTOR);
ALTER TABLE TBL_PATIENTS_GENERAL ADD CONSTRAINT PK_TBL_PATIENTS_GENERAL PRIMARY KEY (ID_PATIENTS_GENERAL);
ALTER TABLE TBL_PATIENTS_TEMP ADD CONSTRAINT PK_TBL_PATIENTS_TEMP PRIMARY KEY (ID_PATIENTS_TEMP);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT PK_TBL_PLANNER PRIMARY KEY (ID_PLANNER);
ALTER TABLE TBL_ROOM ADD CONSTRAINT PK_TBL_ROOM PRIMARY KEY (ID_ROOM);
ALTER TABLE TBL_TIME_SLICE ADD CONSTRAINT PK_TBL_TIME_SLICE PRIMARY KEY (ID_TIME_SLICE);


-- Foreign Keys

ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_1 FOREIGN KEY (FK_DOCTOR) REFERENCES TBL_DOCTOR (ID_DOCTOR);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_2 FOREIGN KEY (FK_CLINIC) REFERENCES TBL_CLINIC (ID_CLINIC);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_3 FOREIGN KEY (FK_ROOM) REFERENCES TBL_ROOM (ID_ROOM);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_4 FOREIGN KEY (FK_PATIENTS_GENERAL) REFERENCES TBL_PATIENTS_GENERAL (ID_PATIENTS_GENERAL);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_5 FOREIGN KEY (FK_PATIENTS_TEMP) REFERENCES TBL_PATIENTS_TEMP (ID_PATIENTS_TEMP);
ALTER TABLE TBL_TIME_SLICE ADD CONSTRAINT FK_TBL_TIME_SLICE_1 FOREIGN KEY (FK_PLANNER) REFERENCES TBL_PLANNER (ID_PLANNER);
COMMIT WORK;


-- Primary Keys

ALTER TABLE TBL_CLINIC ADD CONSTRAINT PK_TBL_CLINIC PRIMARY KEY (ID_CLINIC);
ALTER TABLE TBL_DOCTOR ADD CONSTRAINT PK_TBL_DOCTOR PRIMARY KEY (ID_DOCTOR);
ALTER TABLE TBL_PATIENTS_GENERAL ADD CONSTRAINT PK_TBL_PATIENTS_GENERAL PRIMARY KEY (ID_PATIENTS_GENERAL);
ALTER TABLE TBL_PATIENTS_TEMP ADD CONSTRAINT PK_TBL_PATIENTS_TEMP PRIMARY KEY (ID_PATIENTS_TEMP);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT PK_TBL_PLANNER PRIMARY KEY (ID_PLANNER);
ALTER TABLE TBL_ROOM ADD CONSTRAINT PK_TBL_ROOM PRIMARY KEY (ID_ROOM);
ALTER TABLE TBL_TIME_SLICE ADD CONSTRAINT PK_TBL_TIME_SLICE PRIMARY KEY (ID_TIME_SLICE);


-- Foreign Keys

ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_1 FOREIGN KEY (FK_DOCTOR) REFERENCES TBL_DOCTOR (ID_DOCTOR);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_2 FOREIGN KEY (FK_CLINIC) REFERENCES TBL_CLINIC (ID_CLINIC);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_3 FOREIGN KEY (FK_ROOM) REFERENCES TBL_ROOM (ID_ROOM);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_4 FOREIGN KEY (FK_PATIENTS_GENERAL) REFERENCES TBL_PATIENTS_GENERAL (ID_PATIENTS_GENERAL);
ALTER TABLE TBL_PLANNER ADD CONSTRAINT FK_TBL_PLANNER_5 FOREIGN KEY (FK_PATIENTS_TEMP) REFERENCES TBL_PATIENTS_TEMP (ID_PATIENTS_TEMP);
ALTER TABLE TBL_TIME_SLICE ADD CONSTRAINT FK_TBL_TIME_SLICE_1 FOREIGN KEY (FK_PLANNER) REFERENCES TBL_PLANNER (ID_PLANNER);
COMMIT WORK;
[/more] и [more=картинки-схемы] [/more]

Все крутится вокруг табли (TBL_TIME_SLICE) с интервалами времени (столбцы в минутах от полуночи), каждую запись которой планирую отображать в сетке "девкинского" шедулера

Что смущает:
1. если брать 5-минутный интервал, то таких полей потенциально может быть 5 х 12 х 24 = 1440 - не широковата ли таблица?
2. нет ли тут избыточной нормализации в контексте подхватывания индексов и "многоэтажности" запросов?

База FB 2.5.2 26539, диалект 3, SS
Автор: mdid
Дата сообщения: 17.12.2012 16:50
eddoc
мало чего понял из этого, особенно паразила широта мыслей на счет 5 х 12 х 24 = 1440. как к такому вообще прийти можно? Для вашей задачи это абсолютно не подходит. + так и не понял зачем это все цеплять на cxSheduler. Ведь все гораздо проще или сложнее.
- справочник больниц
- справочник докторов
- справочник кабинетов
- документ который будет иметь ссылку на больницу, доктора и кабинет. В этом же кабинете будет задаваться диапазон времени занятости кабинета.
Честно говоря я вообще не представляю, что именно вы хотите получить от cxSheduler при такой задаче?
Автор: eddoc
Дата сообщения: 17.12.2012 17:46
mdid

Цитата:
Честно говоря я вообще не представляю, что именно вы хотите получить от cxSheduler при такой задаче?

Да я только пытаюсь его освоить, потому и первые попытки что-то сделать напоминает бред сивой кобылы

Вообще-то задача простая: отобразить в сетке шедулера временнЫе события, сгруппированные по дате [more=(как демке)] [/more]. Только вместо имен используются названия/номера кабинетов.

Вот с проектированием БД тут проблемы, пока не знаю, в какой раздел ткнуться
Автор: mdid
Дата сообщения: 17.12.2012 20:18
eddoc
поясните только одну вещь. Зачем cxSheduler?
Автор: neznayka3
Дата сообщения: 17.12.2012 20:28
eddoc

Цитата:
Вот с проектированием БД тут проблемы, пока не знаю, в какой раздел ткнуться

в этот.
Автор: eddoc
Дата сообщения: 17.12.2012 21:07
neznayka3

Цитата:
в этот.

Угу. Там как раз первой ссылкой моя тема

mdid

Цитата:
Зачем cxSheduler?

Тогда задам интимный вопрос: а что вместо него?

зы. разве это не аналог [more=TMS DBPlanner] [/more]
Автор: makz
Дата сообщения: 18.12.2012 03:58
eddoc
Может стоит посмотреть демку cxDBscheduller'a? Идея с timeslice имхо выглядит дико и бесперспективно - у DBшедуллера совсем другой принцип хранения событий.
Автор: eddoc
Дата сообщения: 18.12.2012 07:35
makz

Цитата:
Идея с timeslice имхо выглядит дико и бесперспективно

сам вижу

Демки штудирую, беда в том, что cxMemData используемый в качестве источника данных, грузит их из dat-файла, содержимое которого можно посмотреть, лишь выгрузив cxMemData в текстовый формат.

Нечто похожее на мою задачу нашел в демке ResourceDemo - сижу, вон, препарирую код ...
Автор: mdid
Дата сообщения: 18.12.2012 07:48
eddoc
да блин. Я же вам дал вариант решения. Это 3 справочника(2 если не нужен справочник кабинетов) и один документ, который будет хранить данные, какой доктор, в какой больнице сидел между t1 и t2 в кабинете таком то. Все. Для отчета можно использовать как обычный отчет девок так и сторонние. Для отображения данных просто заюзайте cxGrid, он будет как бы журналом приема врачей. Так же в триггере во время записи проверяйте не пересекаются ли время приема для одинаковых больниц и кабинетов, а так же что бы один доктор в одно и то же время не мог быть в разных местах. На первый взгляд все очень просто.
ПС
справочник кабинетов вам необходим только при одном условии, что вам надо знать описание кабинета, то есть, кабинет ли это хирурга , окулиста или мрт. Если не надо, то пойдет простое текстовое поле для значения кабинета в документе.
Автор: eddoc
Дата сообщения: 18.12.2012 09:19
mdid

Цитата:
Для отображения данных просто заюзайте cxGrid

С гридом я это всегда успею сделать.

ОК. Вы мне на пальцах объясните, для чего предназначен шедулер в контексте GUI? Может я не обладаю каким-нибудь сокровенным знанием, ибо после вашего поста у меня создается ощущение, что я пытаюсь закрутить гвоздь отверткой вместо того, чтобы забить шуруп молотком?
Автор: mdid
Дата сообщения: 18.12.2012 09:34
eddoc
лично у меня этот компонент предназначен для планирования усерами своего дня,недели, месяца. И до этого момента я думал, что это его единственная адекватная цель.
у меня на ms sql таблица выглядит так

Код: CREATE TABLE [dbo].[Doc_Scheduler] (
[ID] int IDENTITY(1, 1) NOT NULL,
[EmployeeID] int NULL,
[EventsParentID] int NULL,
[EventsType] int NULL,
[EventsStart] datetime NULL,
[EventsFinish] datetime NULL,
[EventsOptions] int NULL,
[EventsCaption] varchar(255) COLLATE Cyrillic_General_CI_AS NULL,
[EventsRecurrenceIndex] int NULL,
[EventsRecurrenceInfo] varbinary(max) NULL,
[EventsResourceID] varbinary(max) NULL,
[EventsLocation] varchar(255) COLLATE Cyrillic_General_CI_AS NULL,
[EventsMessage] varchar(255) COLLATE Cyrillic_General_CI_AS NULL,
[EventsReminderDate] datetime NULL,
[EventsReminderMinutes] int NULL,
[EventsState] int NULL,
[EventsLabelColor] int NULL,
[EventsActualStart] datetime NULL,
[EventsActualFinish] datetime NULL,
[EventsSyncIDField] varchar(255) COLLATE Cyrillic_General_CI_AS NULL,
PRIMARY KEY CLUSTERED ([ID])
WITH (
PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF,
ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF),
CONSTRAINT [Doc_Scheduler_fk] FOREIGN KEY ([EmployeeID])
REFERENCES [dbo].[Spr_Employee] ([ID])
ON UPDATE NO ACTION
ON DELETE NO ACTION
)
ON [PRIMARY]
GO

EXEC sp_addextendedproperty 'MS_Description', N'планировщик заданий', N'schema', N'dbo', N'table', N'Doc_Scheduler'
GO
Автор: Developppir
Дата сообщения: 18.12.2012 15:01
Привет.

Подскажите пожалуйста как работать с TcxExtLookupComboBox.
Что-то не очень получается.

Во первых. Мне не нужен механизм лукапа - т.е. отображение записи из другого квери.
Мне хочется, чтобы как в справке на картинках, при щелчке на лукапе выпадала табличка, и оотуда можно было бы выбирать.

Создал в TcxGridViewRepository тестовый Вью. Задал только DataController.DataSource
Через кнопочки справа, добавил пару столбцов. Привязал их к полям датасета (появились из выпадающего меню, значит датасец подцепился и я вроде все правльно делаю)

А вот дальше как подцепить этот Вью к TcxExtLookupComboBox ?
Вроде указал в свойстве Property.View. Еще выбрал в Property.ListFieldItem один из столбцов.

Но при запуске приложения компонент не работает. Он вроде активный, но при щелчке ничего не выпадает.

Может я не все свойства задал ? Справка весьма скупа. А Демо примера я вообще не нашел.

Помогите плиз.
Автор: X11
Дата сообщения: 18.12.2012 15:19
Кинь на форму TcxGridViewRepository, в нём создай грид.
Думаю, что в TcxExtLookupComboBox не составит труда прикрутить созданный грид, там есть свойство View, вот в нём и выбирай созданный грид. Затем укажи KeyFieldNames
Автор: eddoc
Дата сообщения: 18.12.2012 15:45
mdid

Цитата:
А вы из простой задачи создали просто нереальное что то

Собственно, в демках все гениально просто, их только поковырять хорошенько нужно - чем и занимаюсь. Если что-то дельное получится - выложу обязательно. За приведенный код спасибо.
Автор: makz
Дата сообщения: 19.12.2012 04:07
eddoc
Если вы решили сделать расписание для докторов с помощью записей в планировщике - то это не хорошая идея - лучше прикрутить отдельную таблицу, как советует mdid. А вот запись на прием оформлять в планировщике достаточно удобно. Нужно только определиться, что собственно у вас resource - то ли кабинет, то ли врач
Автор: mdid
Дата сообщения: 19.12.2012 11:55
народ, а подскажите кто как борется с такой херней. Есть панель dxBar с DockingStyle dsBottom. Если прилепить еще какой то компонент вниз, то получится, что панель сверху этого компонента


makz
продолбается над элементарной задачей неделю, если упертый, то две. Потом все равно придет к выводу, что делать надо нормально, максимально просто и теми методами, которыми владеет.
Автор: G787
Дата сообщения: 19.12.2012 12:56
Как cxLocalizer-ером сделать локализацию заголовка для Button1 ?
Автор: eddoc
Дата сообщения: 19.12.2012 20:30
makz
mdid

Пообещал же, отпишусь, как только определюсь с результатами
Автор: G787
Дата сообщения: 20.12.2012 13:54
Как в событии OnClickItem компонента dxBarManager узнать что клик пришёл от TdxBarMRUListItem ?
Автор: StredaX1
Дата сообщения: 20.12.2012 15:04
G787

Код: (ClickedItem is TdxBarMRUListItem)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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