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

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

Автор: Chukotka
Дата сообщения: 10.04.2009 09:10
vladman

Цитата:
Попробуйте так:
<YourTabContainerDockSite>.ActiveChild := <YourDockPanel>

Эффект аналогичный установке DockingController.ActiveDockControl: DockPanel активизируется, но фокус на первый по TabOrder-элемент внутри панели не устанавливается. Похоже, что это именно логика работы DockLibrary
Автор: ZBEP
Дата сообщения: 10.04.2009 09:53
vladman, спс, уже разобрался.
Кинул все компоненты формы на и все стало как надо)).
Скрин щас дать не могу (не дома), попробую словами описать:
Есть форма с Ribbon (всеравно от BEV или стандартный) и на этой форме расположены GroupBox'ы (больше чем вмещает сама форма) и приходится ставить Form1 AutoScroll = True.
И при прокрутки прокручиваются не только GroupBox'ы, но и Ribbon (со всеми сис.кнопками. Т.е. Закрыть, развернуть, свернуть).
Я в делфи недавно т.ч. не много знаю, решение нашел в ScrollBox (поместил все нужные компоненты на неё) и отключил у формы Autoscroll
Автор: vladman
Дата сообщения: 10.04.2009 10:31
Chukotka

Цитата:
Эффект аналогичный установке

Давайте пример приложения. Разберемся.

ZBEP

Цитата:
решение нашел в ScrollBox

Именно так и нужно было делать.
Автор: ZBEP
Дата сообщения: 10.04.2009 10:54
И еще один вопросик, у меня Unit10.pas занимает 13378 КБ (13.0 МБ)
И при работе в коде 10 формы после 5-10 изменений делфи начинает виснуть на 5-20 сек. (приходится вырезать весь текс кроме нужной процедуры и т.д, вставлять в блокнот, писать процедуру и затем обратно вставлять в делфи вырезанный текст из блокнота).
Можете подсказать как можно решить эту проблему?
П.с.
И компелируется после изменения Unit10.pas тож долговато( Но эт из-за большего условия корее всего
Автор: Chukotka
Дата сообщения: 10.04.2009 11:12
vladman

Цитата:
Давайте пример приложения. Разберемся.

да, собственно, тот же эффект наблюдается и для стандартного примера DockingMegaDemo от DevX: достаточно "отцепить" TabContainer с ClassView\SolutionExplorer - и при активизции закладок из главного меню перестает устанавливаться фокус на внутренние элементы.
Автор: greenpc
Дата сообщения: 10.04.2009 11:25
ZBEP

Цитата:
Можете подсказать как можно решить эту проблему?

Разделить на несколько юнитов
и компелится быстрее будет
Автор: ZBEP
Дата сообщения: 10.04.2009 11:42
greenpc неподскажешь как сделать "ссылки" на эти юниты в коде 10 формы?
Или ссыль где об этом написанно.
П.с.
Сори за офф
Автор: f3ka
Дата сообщения: 10.04.2009 12:57
ZBEP
разве uses тобой никогда не использовался?
Автор: vladman
Дата сообщения: 10.04.2009 13:06
Chukotka

Цитата:
собственно, тот же эффект наблюдается и для стандартного примера DockingMegaDemo от DevX

Не совсем так. Фокус остается на "внутреннем" элементе если до переключения он находился тоже на "внутреннем" элементе. Если фокус находился до переключения, скажем на элементе управления DockPanel, Header, например, то наблюдается описанное Вами поведение. Согласен, это не совсем верно. Посему можно написать маленький метод.

Код:
procedure TDockingMegaDemoMainForm.ActivateDockPanelChildControl(ADockPanel: TdxDockPanel);
var
i: Integer;
begin
for i := 0 to ComponentCount - 1 do
if Components[i].GetParentComponent = ADockPanel then
begin
TWinControl(Components[i]).SetFocus;
Break;
end;
end;
Автор: greenpc
Дата сообщения: 10.04.2009 13:23
ZBEP

Цитата:
Или ссыль где об этом написанно.

я даже растерялся это же основы
_http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1179
_http://delphibasics.ru/Uses.php

Цитата:
в коде 10 формы
значит что были формы 1-9?
между ними возможно Вы как-то работаете
Автор: vladman
Дата сообщения: 10.04.2009 13:28
ZBEP

Цитата:
И еще один вопросик, у меня Unit10.pas занимает 13378 КБ (13.0 МБ)

Ну Вы даете. У DevExpress ВСЕ *.pas файлы ВСЕХ библиотек (906 штук) занимают 42,5 МБ. Самый большой по размеру dxBar.pas 1,63 МБ (1 718 627 байт) 53841 строка.
Просто интересно, неужели Вы смогли написать в 13/1,6 = 8,125 раз, т.е. 8,125*53841=437458 (ориентировочно конечно) строк кода??? Что Вы смогли "засунуть" в этот "бедный" Unit10.pas?
Действительно интересно. Специально нашел "Война и Мир" Толстого. Размер 4-х томов в текстовом виде - 3,04 МБ (3 197 190 байт) 47342 строки
Автор: ZBEP
Дата сообщения: 10.04.2009 14:22
f3ka. млин я тупанул, не о том подумал.
Всем спс.
vladman
Да, но там он не сложный, немного запутанный, и т.к. я еще очень мало знаю делфи то и немного большой.
90% кода - условие (делаю авто расстановку расписания всего колледжа по семестрам, включая часы работы препадов, самих препадов, дни, скок пар в неделю, пар в семестр, в день, четная нечетная неделя, кабинеты, совмесные пары, и т.д. с возможностью полной автоматики и ручного изменения).
П.с.
59988 строк
на строчке 400-500 знаков (эт там где условие, но часть условия(для удобства) переходит на 2 строчку (если все вместить, то будет примерно 35000 строк))
Автор: Felias Fogg
Дата сообщения: 10.04.2009 14:29
vladman
Showhint = true формы действительно показывает Хинты. Спасибо.
У меня 38 билд
Автор: vladman
Дата сообщения: 10.04.2009 15:02
ZBEP
Вам нужно смотреть в сторону рефакторинга, 100%. Так как 52000 строк условий - это уж слишком. Кто в этом коде кроме Вас, да и Вы тоже через пол года, сможет разобраться.
Felias Fogg

Цитата:
У меня 38 билд

Тогда остается загадкой какой баг имелся ввиду в _http://www.devexpress.com/issue=B133178 и что исправилось в 42 билде касательно этого. Ну да ладно.
Автор: ZBEP
Дата сообщения: 10.04.2009 15:51
vladman, можешь поподробнее об рефакторинге.
П.с.
Не, на самом деле код оч легкий, и скорее всего его можно написать более компактно, прост я пока не знаю как(
Автор: vladman
Дата сообщения: 10.04.2009 16:11
ZBEP

Цитата:
можешь поподробнее об рефакторинге

http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3
Автор: Aleksandr_N
Дата сообщения: 10.04.2009 16:27
vladman

Цитата:
Если я правильно понял Ваши пожелания и исходя из маски "!2-24-0000;1;_", то попробуйте так - '2-24-\d\d\d\d'

Это я понимаю, но цифры 2-24 всёравно видно. Нужно чтобы не было видно цифр и при этом не нужно вводить цифру 2 для проявления оставшейся части маски.
Автор: vladman
Дата сообщения: 10.04.2009 16:48
Aleksandr_N
Т.е. Вы хотите чтобы пользователь при желании ввести скажем значение 2-24-9876 вводил только 9876 и при этом не видел 2-24 во время ввода? Но в значении, при просмотре, отображалось 2-24-9876?
Автор: Aleksandr_N
Дата сообщения: 10.04.2009 17:18
vladman
ДА!!! При этом я не против, если ТОЛЬКО в режиме редактирования ячейки были видны 2-24, но пользователь вводил ТОЛЬКО 9876!!! В пустой ячейке должно быть ПУСТО (скрытая маска).

Добавлено:
vladman
Точно так, как это было в dxGrid.
Автор: ZBEP
Дата сообщения: 10.04.2009 18:35
Вообщем в 100 раз сзвеняюсь за то что не по теме, но надеюсь вы мне сможите помоч.
постараюсь нормально сформулировать что хочу сделать.
Есть часть условия:
if (Edit40.Text<>t1) and (Edit38.Text<>t1) and (Edit36.Text<>t1) and (Edit34.Text<>t1) and (Edit32.Text<>t1) and (Edit30.Text<>t1) and (Edit28.Text<>t1) and (Edit26.Text<>t1) and (Edit24.Text<>t1) and (Edit22.Text<>t1) and (Edit20.Text<>t1) and (Edit18.Text<>t1) and (Edit16.Text<>t1) and (Edit14.Text<>t1) and (Edit12.Text<>t1) and (Edit10.Text<>t1) and (Edit8.Text<>t1) and (Edit6.Text<>t1) and (Edit4.Text<>t1) and (edit2.Text<>t1)
____________________________________
Оно повторяется если быть точным 4200 раз.
Изменяются только "номера\имена" эдитов (только четные от 2 до 240) и "t1" (t2, t3, t4, .. ,t35).
Хотелось бы задать переменную (Например "Z") и присвоить ей это условие, но так чтобы переменные "t1, t2, t3, .. ,t35)" и "имена\номера" эдитов задавались в каждой процедуре (всего 6 процедур), где находится оставшееся часть условия.
Автор: shulum
Дата сообщения: 10.04.2009 19:04
ZBEP
Вам сюда http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=9383&start=1580#lt
Автор: Meister Floh
Дата сообщения: 10.04.2009 21:07
Господа такой вопрос.. Стандартный лайот, слева ДБ дерево (от Дев), справа грид.. Хотелось бы чтоб он тоже был с неким подобием дерева.. Идеально подходит грид от ЭхЛиб - но начиная с 5000 элементов он жутко тормозит.. Есть ли что либо в девах для шустрого отображения того, что отдает дерево слева? Конкретизирую: АбсолютДБ более 200000 записей в дереве, глубина вложений неизвестна (но не более 8.. я так думаю...).. Кликаем по дереву, а в гриде отображаем где мы.. и желательно тоже с древовидной основой.. Кроме того в любой ветви дерева-грида неплохо бы было влепить по кнопочке, по которой буду заполнять что либо в связях...

Ребята это не значит, что решения нет в том виде в котором я предложил.. Реально становясь на любой сиблинг, количество элементов будет заведомо меньше 5000 и ЭхЛиб будет обрабатывать шустро.. Но, для полноты решения это не красиво, хотелось бы, чтобы если юзверь станет на корень (200000 элементов) скорость была бы сравнимой с ДБТриВью с включенным "смарт рекордс"...
Автор: vladman
Дата сообщения: 10.04.2009 23:20
Aleksandr_N
Что-то ничего не понимаю. А я как предлагал? используйте решение с подменой редакторов как в случае со стандартной маской. Т.е. для ячеек в режиме редактирования маска '2-24-\d\d\d\d' во всех остальных случаях - '' (пустая)

Цитата:
Точно так, как это было в dxGrid.

О чем мы вообще говорим?

Добавлено:
Meister Floh
Хоть бы рисуночек (скриншотик) какой-то для ясности. Желательно с пояснениями.

Цитата:
скорость была бы сравнимой с ДБТриВью с включенным "смарт рекордс"...

Ну так и используйте ДБТриВью как и слева.
Автор: Chukotka
Дата сообщения: 11.04.2009 08:22
vladman

Цитата:
Посему можно написать маленький метод.

Спасибо, я именно так уже и сделал, только навесил обновление фокуса в обработчик DockManager.ActiveDockControlChanged (с проверкой типов конечно)
PS. Хотя поведение несколько ракообразное, надо признать. На сайте DevX народ на это тоже жаловался, но разработчики ответили, что "пока логику менять не собираемся, бо сильно затронет внутреннюю реализацию"
Автор: Aleksandr_N
Дата сообщения: 11.04.2009 11:41
vladman
Про подмену редактора я понял, подумал про использование маски без подмены, но которую не видно.

Цитата:
О чем мы вообще говорим?

А dxGrid так и было: со скрытой маской, которая появлялась при начале редактирования.
Автор: vladman
Дата сообщения: 11.04.2009 11:48
Chukotka

Цитата:
навесил обновление фокуса в обработчик DockManager.ActiveDockControlChanged (с проверкой типов конечно)

Очень даже правильно!

Цитата:
На сайте DevX народ на это тоже жаловался

Да, Docing компоненты немного специфически реализованы, и без полного построения у себя в голове механизма их функционирования (т.е. с "наскоку") с ними тяжело разобраться. Но поняв некоторые специфические нюансы можно успешно их использовать в достаточно крупных проектах. Да, есть пару моментов где их функционал не корректен, но с помощью дополнительных обработчиков можно добиться желаемого.

Добавлено:
Aleksandr_N
Нет, без подмены наверное не получится. Если я правильно понял, главная проблема при подмене редакторов - это отсутствие правильной маски в диалоге пользовательского фильтра? Если так, попробую что-то придумать, но, наверное, уже на следующей неделе.
Автор: Meister Floh
Дата сообщения: 11.04.2009 11:58
vladman
Ну выглядеть должно примерно так:

Есть еще глюки в выводе дерева, но это не принципиально.. Проблема в ДБГрид от ЭхЛиб - дерево выводит только из МеМТэйбл.. Что не желательно Почему и спросил о других гридах, типа кто чего посоветует.. А ДБТриВью Все хорошо, только как вывести не одно поле, а несколько.. Ну я думаю из картинки все ясно..

Автор: vladman
Дата сообщения: 11.04.2009 12:24
Meister Floh

Цитата:
А ДБТриВью Все хорошо, только как вывести не одно поле, а несколько

cxDBTreeList Вам поможет. Его можно использовать и слева и справа.

To All

Цитата:
думаю из картинки все ясно..

Уверен, 80% вопросов здесь возникающих были бы намного понятней при наличии поясняющих картинок
Автор: Meister Floh
Дата сообщения: 11.04.2009 13:42
vladman я конечно сори, только как в cxDBTreeList, который у меня на скриншоте слева, вывести поля, с изменяемой шириной фильтрами и т. п. так как выглядит на скриншоте справа в гриде от ЭхЛиб? Я не знаю возможно-ли это.. Потому еще раз повторюсь - какой шустрый грид с функциями дерева выбрать?
Автор: Aleksandr_N
Дата сообщения: 11.04.2009 14:17
vladman

Цитата:
отсутствие правильной маски в диалоге пользовательского фильтра

Примерно так и получается. Как описал выше.

Цитата:
на следующей неделе

Я не против подождать.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081

Предыдущая тема: Delphi: tcp клиент в потоке


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