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

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

Автор: PetrovD
Дата сообщения: 08.12.2005 07:46
A_V
Нет, win у меня не 98, а 2000. Прозрачность на уровне api не при чем, т.к. наличие или отсутствие property от этого не зависит. Пожалуйста подскажите где точно искать это property.
Автор: gpi
Дата сообщения: 08.12.2005 09:45
PetrovD
cxCheckBox1.Transparent
Автор: PetrovD
Дата сообщения: 08.12.2005 10:07
Господа, вы все дружно врете, либо мы говорим о разных версиях cxCheckBox (Я использую EditorsLibrary v 5.7).

Такого property там НЕТ!!!

Автор: golkanavt
Дата сообщения: 08.12.2005 10:39
PetrovD
TcxCheckBox.Transparent - v5.10 точно есть
Автор: A_V
Дата сообщения: 08.12.2005 11:10
PetrovD
>Прозрачность на уровне api не при чем, т.к. наличие или отсутствие property от этого не зависит
чисто теоретически может зависеть, при инсталляции компонента не нужное св-во может убираться )))
явно дело в версии, у меня тоже 5.10
Автор: PetrovD
Дата сообщения: 08.12.2005 14:35
Поискал исходники более старых версий, там действительно такое property было, теперь его не стало, причем сейчас его не стало не только в этом классе, но и в родительских классах (помимо этого property там вообще много чего поменялось).

Может все-таки кто-нибудь знает решение, работающее на версии 5.7, а то не хочу я на понижение версии идти, проблемами может все это закончиться, т.к. в продукте используются многие другие контролы, которые скорее всего не вынесут такой миграции
Автор: korobovmax
Дата сообщения: 08.12.2005 16:02
Кто-нибудь из юзеров Scheduler'а знает, как при двойном клике не показывать форму-редактор?
Или подскажите наиболее просто способ подсунуть свою форму Scheduler'у как редактор событий.
Автор: PetrovD
Дата сообщения: 08.12.2005 17:36
В хелпе по шедулеру написано как это можно делать. Но к тому моменту как я нашел этот хелп, я уже решил задачу самостоятельно.


Я делаю это так:

В обработчике OnDblClick пишу код

if TimeTableScheduler.ActiveHitTest is TcxSchedulerDateNavigatorHitTest then exit;
if TimeTableScheduler.SelectedEventCount<>1 then exit;
Module.TimeTableDataSet.Locate('ID',TimeTableScheduler.SelectedEvents[0].ID,[]);

далее вызываю свою форму, например MyForm.ShowModal;

Форма делается как обычная детальная форма для БД.



Автор: korobovmax
Дата сообщения: 08.12.2005 18:28
PetrovD, вы практически решили задачу. Теперь я знаю, как переместиться к нужной записи. Это просто прекрасно!

Однако, форма-редактор все равно выскакивает.

Ещё: если вам не трудно, напишите название топика в хелпе по этому вопросу.
Автор: golkanavt
Дата сообщения: 09.12.2005 11:20
PetrovD

Цитата:
Поискал исходники более старых версий, там действительно такое property было, теперь его не стало, причем сейчас его не стало не только в этом классе, но и в родительских классах (помимо этого property там вообще много чего поменялось).


не может такого быть.

Цитата:
PetrovD
TcxCheckBox.Transparent - v5.10 точно есть



Цитата:
Может все-таки кто-нибудь знает решение, работающее на версии 5.7, а то не хочу я на понижение версии идти...


о каком понижении речь? обнови до v5.10, т.е. на более свежую

korobovmax
в примерах есть вариант с созданием наследованной формы, да и в хелпе расписано что и как
Автор: korobovmax
Дата сообщения: 09.12.2005 15:26
golkanavt, да поймите же вы меня. Мне не нужно добавлять поле "коммент" как в примере и "кустомизировать" существующий редактор. Ровно как и делать редактор на основе наследника от базового редактора.

Всё, что нужно узнать - как заставить шедулер по DblClick'у не выдавать свой родной редактор и тогда задача с подключением абсолютно своей формы будет решена. Это единственный вопрос, который меня держит.
Автор: PetrovD
Дата сообщения: 09.12.2005 15:41
korobovmax

Я тебя понимаю, и самое важное я к сожалению в первом сообщении упустил .

Есть такие property DialogEditing, DialogShowing, InplaceEditing их нужно скинуть в значение false.


golkanavt


Цитата:
о каком понижении речь? обнови до v5.10, т.е. на более свежую


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

А можно вас попросить ими поделиться ...

Автор: korobovmax
Дата сообщения: 09.12.2005 17:15
О, чёрт! Всё настолько просто, никогда себе этого не прощу!
PetrovD, огромнейшее спасибо.
Вы уже реализовали генерацию значений поля ReccurenceInfo? Или же вы только делали форму для обычных (не повторяущихся) эвентов?
Автор: PetrovD
Дата сообщения: 09.12.2005 17:37
korobovmax
У меня события не могут повторяться из логики бизнес-процесса, так что мне это было совсем не нужно.
А форму мне пришлось перекрывать так как за стандартными свойставми event'а у меня скрывались совсем другие понятия.

Автор: korobovmax
Дата сообщения: 09.12.2005 18:22
PetrovD, а какой тогда смысл в шедулере? Встроенная напоминалка, представление записей в "шедулер-виде"?
Автор: gpi
Дата сообщения: 09.12.2005 20:49
PetrovD

Цитата:
А можно вас попросить ими поделиться ...

Здесь есть в обменнике:
http://forum.ru-board.com/topic.cgi?forum=35&topic=28418
To All
Никто не знает как в TcxGridDBTableView организовать скроллинг с помощью колеса прокрутки так, как это сделано в IBExpert. Т.е. делаем текущей запись в середине отображаемого окна, и при прокрутке курсор остаётся на месте, а записи сдвигаются. При приближении к концу/началу датасета курсор сдвигается вверх/вниз.
Пробовал обрабатывать в событии onTopRecordIndexChanged - не получается реализовать перемещение курсора вверх/вниз при приближении к концу/началу датасета
Автор: PetrovD
Дата сообщения: 10.12.2005 07:01
korobovmax
Ага, именно "представление в шедулер-виде"
Автор: Alex47
Дата сообщения: 10.12.2005 16:46
gpi

Цитата:
Никто не знает как в TcxGridDBTableView организовать скроллинг с помощью колеса прокрутки

Можно использовать два обработчика View:

procedure TForm.cxGrid1DBTableView1MouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
with cxGrid1DBTableView1.Controller do
begin
if (TopRecordIndex + cxGrid1DBTableView1.ViewInfo.VisibleRecordCount) <
cxGrid1DBTableView1.ViewData.RecordCount - 1 then
FocusedRecordIndex := TopRecordIndex+cxGrid1DBTableView1.ViewInfo.VisibleRecordCount div 2 +3
else
FocusedRecordIndex := FocusedRecordIndex + 1;
end;
end;

procedure TForm.cxGrid1DBTableView1MouseWheelUp(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
with cxGrid1DBTableView1.Controller do
begin
if (TopRecordIndex - 3) > 0 then
FocusedRecordIndex := TopRecordIndex+cxGrid1DBTableView1.ViewInfo.VisibleRecordCount div 2 -3
else
if FocusedRecordIndex > 0 then
FocusedRecordIndex := FocusedRecordIndex - 1;
end;
end;
В коде фигурирует число 3 - потому, что одна прокрутка колеса передвигает TopRecordIndex на 3 строки.
Автор: gpi
Дата сообщения: 10.12.2005 18:46
Alex47

Цитата:
Можно использовать два обработчика View:

Такой вариант у меня что-то не работает Если кликаю мышкой, чтобы перейти на одну из соседних записей, то курсор возвращается на прежнюю.
Вот додумался до такого:

Код:
procedure TMainForm.MouseWheel(Sender: TObject; WheelDelta: Integer);
var DBTableView: TcxGridDBTableView;
begin
DBTableView:=TcxGridDBTableView(TcxGridSite(Sender).GridView);
with DBTableView.Controller do
begin
if WheelDelta>0 then
begin
if not IsStart then
begin
GoToPrev(True);
TopRecordIndex:=TopRecordIndex-1;
abort;
end;
end
else
begin
if not IsFinish then
begin
GoToNext(True);
TopRecordIndex:=TopRecordIndex+1;
abort;
end;
end;
end;
end;
Автор: Alex47
Дата сообщения: 10.12.2005 21:00
gpi

Цитата:
Такой вариант у меня что-то не работает

У меня работает железно. Клик мышки на обработчики View1MouseWheelDown,
View1MouseWheelUp влиять не может. Видимо срабатывают еще какие-то обработчики...
Советую походить в отладчике (или отключить все обработчики и подключать по одному).
Автор: korobovmax
Дата сообщения: 11.12.2005 19:04
Иногда, когда устанавливаю в гриде MultiSelect в True, бывает так, что при навигации с клавиатуры сначала, например следующая, запись становится "в фокусе" (то есть в обрамлении чёрно-белого прямоугольника), а уже потом становиться активной (то есть попросту говоря выделенной).

Этим процессом можно управлять?

Добавлено:
Проблему нашёл и исправил. Она оказалась связана не с MultiSelect, а с тем, что ExpressBars очень медленно обновляются/перерисовываются.
Для решения проблемы вполне хватило добавить в пару мест:
BarManager.LockUpdate := True;
и BarManager.LockUpdate := False;
Автор: AlexPetrovich
Дата сообщения: 12.12.2005 09:12
Извините за повтор, кто-нибудь может подсказать как использовать иконки размером больше 16х16 в меню и на тулбарах ? (кроме применения dxLargeButton)
При ипользовании ImageList с иконками 28х28 в меню они обрезаются
Автор: EZH
Дата сообщения: 12.12.2005 09:35
AlexPetrovich
А чем LargeButton не подходит?
Автор: korobovmax
Дата сообщения: 12.12.2005 11:09
AlexPetrovich!
EZH истину глаголит!
Автор: Bill_PHO
Дата сообщения: 12.12.2005 12:44
Не подскажет ли кто, как правильно в cxGrid выполнить позиционирование на требуемую запись, если известен ее ключ в таблице?
Автор: korobovmax
Дата сообщения: 12.12.2005 13:16
Bill_PHO,
cxGridTableView1.DataController.LocateByKey(ID);
Автор: VadimLou
Дата сообщения: 12.12.2005 13:25
>korobovmax
>ExpressBars очень медленно
Подробнее места исправления укажи плиз ...
Автор: Bill_PHO
Дата сообщения: 12.12.2005 13:29
korobovmax
Спасибо
Автор: korobovmax
Дата сообщения: 12.12.2005 15:35
VadimLou, в проекте есть несколько элементов-баров, которые доступны/недоступны в зависимости, если есть нужные данные в записи.
Наиболее удачное место, где нужно обновлять доступность баров - у cxGridTableView событие OnSelectionChanged. В начале этого события пишем BarManager.LockUpdate := True, в серединке - обновление баров вроде ActionUpdateUsername.Enabled := TablePasswords.Active, в конце - BarManager.LockUpdate := False.

Получается очень незначительное, практически незаметное снижение производительности, в отличии от случае, если нету такой обработки.
Автор: korobovmax
Дата сообщения: 12.12.2005 22:03
PetrovD, а вот когда надо по DblClick'у создавать Event'ы, как узнать, на какой час юзер захотел создать?
Вопрос два: Как-нибудь можно просто узнавать ID события в момент клика по нему кнопкой мыши? Надо сделать Action'ы для контекстного меню. Приходится писать в Scheduler OnContextPopup:
var
ID: Integer;
begin
if Scheduler.ViewDay.HitTest.HitAtEvent then
ID := Scheduler.ViewDay.HitTest.Event.ID;
if Scheduler.ViewWeek.HitTest.HitAtEvent then
ID := Scheduler.ViewWeek.HitTest.Event.ID;
if Scheduler.ViewWeeks.HitTest.HitAtEvent then
ID := Scheduler.ViewWeeks.HitTest.Event.ID;
if Scheduler.ViewYear.HitTest.HitAtEvent then
ID := Scheduler.ViewYear.HitTest.Event.ID;
if Scheduler.ViewTimeGrid.HitTest.HitAtEvent then
ID := Scheduler.ViewTimeGrid.HitTest.Event.ID;
ShowMessage(IntToStr(ID));
end;

Но это же никуда не годится. Явно есть какой-то более простой способ. Как быть?
GetHitTest'а, как у грида нету

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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