|
38 Кб. |
|
| Понадобилось немного расширить функциональность стандартного контрола Label, а именно - по нажатию на него вывести весь текст в мини-окно, с возможностью копирования из него. Чего проще! В итоге все вылилось вот в такое решение, включающее в себя следующие задачи:
- Позиционирование Вызываемой формы (здесь - по положению курсора мышки) с учетом размеров рабочей области экрана;
- Определение размеров выводимого текста вне зависимости от шрифтов;
- Изменение размеров Вызываемой формы с учетом рамок и рабочей области;
- Закрытие формы (всплывающее окно - PopUp) по клику мышки вне области Вызываемой формы;
- Использование API функций (показалось так проще);
- И до кучи - создание своей Access-библиотеки (думаю, что так удобней, чем постоянно копировать опробованные решения в различные проекты).
Прикреплен архив (7Zip) для MSA2003, включающий два файлика - тестовый и саму библиотеку (должны лежать в одной директории) ==>> | |
|
| |
|
39 Кб. |
|
| И традиционно, для MSA2010 ==>> | |
|
| |
|
|
|
|
The security settings do not allow this archive to pass without virus scanning
|
лучше zip или rar | |
|
| |
|
|
|
| Не помещается в rar'е, а тем более в zip'е в 50КБ
Залил rar на
http://zalil.ru/30156411
.mdb - для MSA2003;
.accdb - для MSA2010
А какие McAfee еще архивы понимает, чтобы получше rar сжимали? | |
|
| |
|
57 Кб. |
|
| Zip (2003) | |
|
| |
|
|
|
|
ну это же не 50КБ, а 57
До скольких можно РЕАЛЬНО заливать?
Собственно у меня и получились архивы по 52 и 57 КБ, но убоялся превышать указанный лимит | |
|
| |
|
|
|
| лимит поднял до 200, где-то пол года назад, забыл поправить предупреждение | |
|
| |
|
|
|
| Спасибо, буду знать! | |
|
| |
|
|
|
| ууу, шайтан! | |
|
| |
|
|
|
|
|
с возможностью копирования из него.
|
выделить текст и скопировать? А если при закрытии копировать сразу?
но это так - мысль.
а вообще хорошо. | |
|
| |
|
13 Кб. |
|
| Вообще-то не приходилось решать подобную задачу и не могу придумать, где это может понадобиться.
Вопросы:
Нужно-ли для решения поставленной задачи:
1. позиционирование формы по курсору?
2. определение размеров выводимого текста вне зависимости от шрифтов?
3. изменение размеров Вызываемой формы?
4. закрытие формы по клику мышки вне области Вызываемой формы?
Предложенный функционал мне кажется избыточным для поставленной задачи,
а само решение скорее "академическим", чем "практическим".
Я бы сделал проще - просто резиновая формочка с одним текстовым полем. =>
Что бы сделал иначе:
Варианты:
1. В Label.Caption писал бы одно(два) ключевое слово, полный текст - в ControlTipText (до 255 символов), или в Tag, если текст длиннее.
Сделал бы процедуру/функцию в общем модуле со статической переменной класса формы.
При клике по Label - вызывал бы процедуру/функцию и передавал ей в качестве аргумента Label.
В процедуре поднимал экземпляр формы, если еще не поднят, Caption Label в Caption формы,
полный текст в текстовое поле.
... (Тут можно весь ваш расширенный функционал реализовать)
Visible=True.
Вместо закрытия - прятал бы экземпляр формы.
То есть: был бы один раз поднятый экземпляр формы на всю сессию работы.
Этакий MsgBox с возможностью копирования. | |
|
| |
|
|
|
| Спасибо за ответ. Я уж подумал, что топик загнулся
Вот это в точку
а само решение скорее "академическим", чем "практическим"
|
Действительно, бродя по разным форумам, постоянно встречаешь вопросы, поставленные в задаче. Просто лично для себя хотелось ответить на них сразу.
По поводу вариантов решения - безусловно их существует множество, и представленный вариант совершенно не претендует на наилучший. Просто сейчас немного начал изучать API, а где как не на реальном примере проводить обучение. Сам себе поставил именно такие задачи - сам и попытался решить.
Кроме того, неявно хотел подтолкнуть на обсуждение следующих вопросов:
1. Так как результаты работы API функций получения размеров окна различны при различных ОС, то интересно как отрабатывается позиционирование и размеры Вызываемой формы при различных сочетаниях. Сочетания WinXP-MSA2003, Win7-MSA2010 проверил. Если у кого другие сочетания - отпишитесь - интересно же.
2. Создание контекстного меню из класса. Как я понял алгоритм следующий - проверить наличие у контрола этого меню; проверить наличие в нем новых добавляемых пунктов и, соответственно добавлять или нет меню/пункт меню.
3. Использование Access-библиотеки. При первом же использовании столкнулся с проблемой использования классов из таких библиотек - решил, но какие еще подводные камни могут быть? Теоретические аспекты использования почитал, но здесь важен именно опыт. Не перегружается ли тем самым основное приложение, ведь теоретически системных ресурсов будет расходоваться больше.
... и т.п.
С наступающим! | |
|
| |
|
7 Кб. |
|
| по п.2
Делать "с нуля" временное контекстное меню мне кажется проще.
Если штатные кнопки просто копируются из штатного меню, можно без подключения офисной библиотеки классов.
Если кнопки со своим функционалом - возможно потребуется офисная библиотека для подписки на события.
Кстати, интересно еще обрабатывать кнопки ToolBars и контекстного меню в сервисном классе, управлять синхронно Visible/Enable кнопок контекстного меню и кнопок ToolBars в зависимости от ситуации. =>
по п.3.
Пока "места" хватает в основном проекте - лучше огород не городить, кмк.
Практического опыта нет, только эксперименты. Нет таких огромных проектов.
зы. Спасибо! Вас так-же. Но, не рановато-ли? | |
|
| |
|
|
|
| 2. Мне казалось, что Microsoft Office 14.0 Object Library всегда нужно подключать, по крайней мере в MSA2010. Буду экспериментировать.
3. Т.е. удобство от применения библиотеки - нулевое? Другими словами, каждый проект уникален на 100%? Возможно данный вопрос от того, что прикладываюсь к Access'у от случая к случаю.
До 13 дней 25:24:... | |
|
| |
|
|
|
| 3. Я для себя еще не определился.
100% устоявшихся модулей практически нет.
Где-то приходится расширять функционал, где-то менять алгоритм,
где-то подстраиваться под конкретную задачу.
А править проще в одном месте.
А вот библиотека "времени разработки" мне думается интересна будет.
Вот только все ленюсь новую сделать, а старая морально устарела. | |
|
| |