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

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

Автор: brookson
Дата сообщения: 02.04.2010 21:39
И всё-таки это не работает. Помогите пожалуйста!

Код вот такой:

Код:
IBQueryNoStock.first;
tvNorm.BeginUpdate;
tvNorm.DataController.ClearSorting(true);
tvNormColumnID.SortOrder:=soAscending;
i:=tvnorm.DataController.GetFocusedRecordIndex;
n:=tvnorm.DataController.RecordCount;
while i<=n do begin
if tvrnom.DataController.Values[i,4]=IBQueryNoStock.FieldByName('id').AsInteger then begin
tvrnom.DataController.Values[i,3]:=true;
inc(cnt);
IBQueryNoStock.Next;
end;
tvnorm.DataController.GotoNext;
i:=tvnorm.DataController.GetFocusedRecordIndex;
if IBQueryNoStock.Eof then break;
end;
tvnorm.EndUpdate;
Автор: linker_2009
Дата сообщения: 02.04.2010 22:24
brookson
а точно

Цитата:
inc(cnt);

?
Автор: brookson
Дата сообщения: 02.04.2010 23:57
ну да, увеличивает на 1. там всё проверил, i изменяется правильно. а вот сам индекс таблицы - не идёт по возрастанию, как хотелось бы
Автор: vladman
Дата сообщения: 03.04.2010 11:32
brookson

Цитата:
И всё-таки это не работает. Помогите пожалуйста!

Правильно ли я понимаю что IBQueryNoStock - это НЕ источник данных для tvNorm?
И, собственно, какую задачу вы пытаетесь решить этим кодом?
Автор: brookson
Дата сообщения: 03.04.2010 13:29
vladman
Я пытаюсь отметить галочкой (tvrnom.DataController.Values[i,3]:=true) строки, значения ключа в которых (столбец 4) есть среди записей IBQueryNoStock.
Чтоб было быстрее, сортирую оба набора данных и сравниваю, начиная с начала.
Квери сортируется нормально, а с сортировкой данных в гриде загвоздка вот такая... Саму таблицу посортировать не проблема, но как тогдапометить столбец? он не привязан к таблице. А если идти по Datacontroller, то проблема с сортировкой.
Автор: vladman
Дата сообщения: 03.04.2010 19:44
brookson
Попробуйте выполнить пересортировку
tvNorm.DataController.ClearSorting(true);
tvNormColumnID.SortOrder:=soAscending;
за пределами BeginUpdate/EndUpdate

Добавлено:
brookson
Если я правильно понял, выборка IBQueryNoStock содержит подмножество записей присутствующих в tvNorm, и tvNorm тоже опирается на некий датасет, который получает данные из той же базы данных что и IBQueryNoStock. Если так, то не проще ли сформировать запрос (выборку) для tvNorm, которая уже будет содержать признак наличия или отсутствия записи в IBQueryNoStock.
Автор: brookson
Дата сообщения: 03.04.2010 21:22
Переставил, вот так

Код:
tvNorm.DataController.ClearSorting(true);
tvNormColumnID.SortOrder:=soAscending;
tvNorm.BeginUpdate;
Автор: X11
Дата сообщения: 04.04.2010 12:14
У cxVericalGrid есть строка типа TcxLookupComboBox. Как заставить принудительно выпасть cxLookupComboBox при открытии или показе окна?

Этот код поставил в OnShow формы. Но толку нет. Хотя ошибок и исключений тоже нет.
colOperation - это та самая строка типа TcxLookupComboBox
vgClientsAdd - это TcxVericalGrid


Код: (colOperation.Properties.EditProperties as TcxLookupComboBoxProperties).ImmediatePopup := true;
vgClientsAdd.SetFocus;
vgClientsAdd.FocusRow(fmClientAdd.colOperation, 0);
Автор: vladman
Дата сообщения: 05.04.2010 16:20
X11

Цитата:
У cxVericalGrid есть строка типа TcxLookupComboBox. Как заставить принудительно выпасть cxLookupComboBox при открытии или показе окна?

Попробуйте вот этот код

Код: type
TcxCustomEditAccess = class(TcxCustomEdit);
....
var
vEdit: TcxCustomEditAccess;
vKey: Word;
begin
vKey := VK_DOWN;
<YourcxDBVerticalGrid>.FocusRow(<YourcxDBVerticalGridColumn>, 0);
<YourcxDBVerticalGrid>.ShowEdit;
vEdit := TcxCustomEditAccess(<YourcxDBVerticalGrid>.InplaceEditor);
if Assigned(vEdit) then vEdit.DoEditKeyDown(vKey, [ssAlt]);
end;
Автор: X11
Дата сообщения: 05.04.2010 18:22
Фокусируется следующая строка.
Автор: vladman
Дата сообщения: 05.04.2010 18:27
X11

Цитата:
Фокусируется следующая строка.

Не должно. Проверено. Давайте пример вашего кода.

Добавлено:
Попробуйте в приложении на этой (с lookup) строке вашего vgClientsAdd нажать Alt+Down когда редактор находится в состоянии Edit. Что происходит при этом?
Автор: X11
Дата сообщения: 05.04.2010 18:32
Стоп, я понял. По электронке в письме мне пришло вот так
f Assigned(vEdit) then vEdit.DoEditKeyDown(vKey, );

Добавлено:
Всё равно не выпадает. Вот код.


Код: procedure TfmClientAdd.DropDownComboBox(Col: TcxEditorRow; vg: TcxVerticalGrid);
var
vEdit: TcxCustomEditAccess;
vKey: Word;
begin
(col.Properties.EditProperties as TcxLookupComboBoxProperties).ImmediateDropDown := true;
vKey := VK_DOWN;
vg.FocusRow(col);
vg.ShowEdit;
vEdit := TcxCustomEditAccess(vg.InplaceEditor);
if Assigned(vEdit) then vEdit.DoEditKeyDown(vKey, [ssAlt]);
end;


procedure TfmClientAdd.FormShow(Sender: TObject);
begin
DropDownComboBox(colOperation, vgClientsAdd);
end;
Автор: vladman
Дата сообщения: 05.04.2010 22:19
X11

Цитата:
Не уверен, что это сможет отработать на onShow

Не зря сомневался. Как быть? Замените его обработкой OnActivate, и все заработает.
Для справки Understanding the Birth, Life and Death of a Delphi Form

Цитата:
Birth
OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint ...

Автор: X11
Дата сообщения: 05.04.2010 22:29
vladman, да так работает. Спасибо.

Добавлено:
К сожалению событие OnPaint срабатывает каждый раз, как форму активирует пользователь. Придётся при показе формы запускать таймер, и в нём через секунду открывать список
Ну почему в дельфи до сих пор не придумали событие AfterShow
Автор: vladman
Дата сообщения: 06.04.2010 00:21
X11

Цитата:
К сожалению событие OnPaint срабатывает каждый раз, как форму активирует пользователь.

А чем не угодило
Цитата:
Замените его обработкой OnActivate, и все заработает.

Автор: X11
Дата сообщения: 06.04.2010 01:03
Я перепутал. Я имел ввиду именно OnActivate.
Автор: CAD_tester
Дата сообщения: 06.04.2010 07:02
Добрый день!
Появилась необходимость на форме использовать повёрнутый текст на 90 градусов, но вот ведь не задача: У компонента label вроде есть свойство Angle, но при введении туда любого угла, поворота текста не происходит , а у компонента Textedit вообще нет такого свойства как угол поворота текста

Может подскажет кто-нибудь как можно выйти из положения?

PS: Поиском прошёл предыдущие страницы похожего ничего не нашел.
Девки 4.9.
Автор: linker_2009
Дата сообщения: 06.04.2010 07:44
CAD_tester
cxLabel так поварачивается
Автор: CAD_tester
Дата сообщения: 06.04.2010 09:22
linker_2009
Ссори я cxLabel и имел ввиду

Цитата:
CAD_tester
cxLabel так поварачивается

Так это как? Я менял свойство Angle.

И ещё, а схTextEdit можно повернуть?
Автор: linker_2009
Дата сообщения: 06.04.2010 10:00
CAD_tester
создаешь новый проект, кидешь cxLabel на форму, у него в Properties.Angel ставишь 90
должен сразу повернуться на 90 градусов

в схTextEdit нельзя, да и не зачем, как ты будешь редактировать значение
Автор: vladman
Дата сообщения: 06.04.2010 10:45
X11

Цитата:
Я перепутал. Я имел ввиду именно OnActivate.

Если ваша форма с VerticalGrid отображается модально, то OnActivate сработает только один раз, если не модально, то, вы правы, OnActivate будет срабатывать каждый раз как форма будет получать фокус ввода. Это легко обработать введя счетчик срабатываний OnActivate, т.е. вызывайте вашу процедуру DropDownComboBox только при значении этого счетчика равным нулю.
Автор: CAD_tester
Дата сообщения: 06.04.2010 13:20
Удалил! Так как повторил вопрос ниже.
Автор: vladman
Дата сообщения: 06.04.2010 13:53
CAD_tester

Цитата:
Может в версии 4.9 такой баг появился?

Нет в версии 6.49 такого бага. Давайте пример где не поворачивается посмотрим.
Автор: Man_Without_Face
Дата сообщения: 06.04.2010 16:56
Поставил DevExpress v48. Все ровна стало, только скинов не вижу, кроме одного - UserSkin. Project -> Modify Skin Options тоже ничего нету. Подскажите пож что делать?
Автор: volser
Дата сообщения: 06.04.2010 17:34
Man_Without_Face
Не установил пакеты со скинами.
Автор: linker_2009
Дата сообщения: 06.04.2010 17:35
CAD_tester
я проверил, а потом отписал. У меня 2009 delphi, а у тебя по скрину кажется семерка - возможно баг только в 7-ой версий.
Автор: Granmer
Дата сообщения: 06.04.2010 21:19
У tcxMaskEdit (6.48) пытаюсь задать маску (regular expr) "[а-я]+" - русские буквы вводить в поле не даёт, впрочем английские и цифры тоже . А если пишу "[a-z]+" - то английские нормально вводятся. Можно ли сделать шаблон только для русских букв?
Автор: vladman
Дата сообщения: 06.04.2010 23:40
Granmer

Цитата:
У tcxMaskEdit (6.48) пытаюсь задать маску (regular expr) "[а-я]+" - русские буквы вводить в поле не даёт

Уже обсуждалось - http://forum.ru-board.com/topic.cgi?forum=33&topic=10884&start=340#6 и http://forum.ru-board.com/topic.cgi?forum=33&topic=10884&start=340#9
Автор: Granmer
Дата сообщения: 07.04.2010 08:59
vladman
понял, спасибо!
Автор: CAD_tester
Дата сообщения: 07.04.2010 13:13
Извиняюсь что повторюсь, но может у кого нибудь на Delphi 6 или 7
работает функция поворота текста cxLabel? Если да то скажите с какой версией Девок?

У меня установлена версия 6.49.

Делаю следующее....
Создаю новый проект, кидаю cxLabel на форму, у него в Properties.Angel ставлю 90градусов, текст должен сразу повернуться на 90 градусов, см. картинку ниже

Выполняю эти действия, но текст у меня не поворачивается !

Заранее благодарен сочувствующим

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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