Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Покритикуйте мой Label
 
 автор: AlexSyr   (16.12.2010 в 17:46)   личное сообщение
38 Кб.
 
 

Понадобилось немного расширить функциональность стандартного контрола Label, а именно - по нажатию на него вывести весь текст в мини-окно, с возможностью копирования из него. Чего проще! В итоге все вылилось вот в такое решение, включающее в себя следующие задачи:
- Позиционирование Вызываемой формы (здесь - по положению курсора мышки) с учетом размеров рабочей области экрана;
- Определение размеров выводимого текста вне зависимости от шрифтов;
- Изменение размеров Вызываемой формы с учетом рамок и рабочей области;
- Закрытие формы (всплывающее окно - PopUp) по клику мышки вне области Вызываемой формы;
- Использование API функций (показалось так проще);
- И до кучи - создание своей Access-библиотеки (думаю, что так удобней, чем постоянно копировать опробованные решения в различные проекты).

Прикреплен архив (7Zip) для MSA2003, включающий два файлика - тестовый и саму библиотеку (должны лежать в одной директории) ==>>

  Ответить  
 
 автор: AlexSyr   (16.12.2010 в 17:47)   личное сообщение
39 Кб.
 
 

И традиционно, для MSA2010 ==>>

  Ответить  
 
 автор: Explorer   (16.12.2010 в 18:22)   личное сообщение
 
 


The security settings do not allow this archive to pass without virus scanning


лучше zip или rar

  Ответить  
 
 автор: AlexSyr   (16.12.2010 в 18:37)   личное сообщение
 
 

Не помещается в rar'е, а тем более в zip'е в 50КБ
Залил rar на
http://zalil.ru/30156411
.mdb - для MSA2003;
.accdb - для MSA2010

А какие McAfee еще архивы понимает, чтобы получше rar сжимали?

  Ответить  
 
 автор: Lukas   (16.12.2010 в 18:41)   личное сообщение
57 Кб.
 
 

Zip (2003)

  Ответить  
 
 автор: AlexSyr   (16.12.2010 в 18:45)   личное сообщение
 
 


ну это же не 50КБ, а 57
До скольких можно РЕАЛЬНО заливать?
Собственно у меня и получились архивы по 52 и 57 КБ, но убоялся превышать указанный лимит

  Ответить  
 
 автор: osmor   (17.12.2010 в 08:16)   личное сообщение
 
 

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

  Ответить  
 
 автор: AlexSyr   (17.12.2010 в 08:55)   личное сообщение
 
 

Спасибо, буду знать!

  Ответить  
 
 автор: Силblч   (17.12.2010 в 10:58)   личное сообщение
 
 

ууу, шайтан!

  Ответить  
 
 автор: Explorer   (16.12.2010 в 20:11)   личное сообщение
 
 

thnx

  Ответить  
 
 автор: Дядя Федор   (17.12.2010 в 11:09)   личное сообщение
 
 


с возможностью копирования из него.


выделить текст и скопировать? А если при закрытии копировать сразу?
но это так - мысль.
а вообще хорошо.

  Ответить  
 
 автор: Lukas   (17.12.2010 в 22:53)   личное сообщение
13 Кб.
 
 

Вообще-то не приходилось решать подобную задачу и не могу придумать, где это может понадобиться.

Вопросы:
Нужно-ли для решения поставленной задачи:
1. позиционирование формы по курсору?
2. определение размеров выводимого текста вне зависимости от шрифтов?
3. изменение размеров Вызываемой формы?
4. закрытие формы по клику мышки вне области Вызываемой формы?

Предложенный функционал мне кажется избыточным для поставленной задачи,
а само решение скорее "академическим", чем "практическим".
Я бы сделал проще - просто резиновая формочка с одним текстовым полем. =>

Что бы сделал иначе:
Варианты:
1. В Label.Caption писал бы одно(два) ключевое слово, полный текст - в ControlTipText (до 255 символов), или в Tag, если текст длиннее.
Сделал бы процедуру/функцию в общем модуле со статической переменной класса формы.
При клике по Label - вызывал бы процедуру/функцию и передавал ей в качестве аргумента Label.
В процедуре поднимал экземпляр формы, если еще не поднят, Caption Label в Caption формы,
полный текст в текстовое поле.
... (Тут можно весь ваш расширенный функционал реализовать)
Visible=True.
Вместо закрытия - прятал бы экземпляр формы.
То есть: был бы один раз поднятый экземпляр формы на всю сессию работы.
Этакий MsgBox с возможностью копирования.

  Ответить  
 
 автор: AlexSyr   (17.12.2010 в 23:17)   личное сообщение
 
 

Спасибо за ответ. Я уж подумал, что топик загнулся

Вот это в точку


а само решение скорее "академическим", чем "практическим"


Действительно, бродя по разным форумам, постоянно встречаешь вопросы, поставленные в задаче. Просто лично для себя хотелось ответить на них сразу.
По поводу вариантов решения - безусловно их существует множество, и представленный вариант совершенно не претендует на наилучший. Просто сейчас немного начал изучать API, а где как не на реальном примере проводить обучение. Сам себе поставил именно такие задачи - сам и попытался решить.
Кроме того, неявно хотел подтолкнуть на обсуждение следующих вопросов:
1. Так как результаты работы API функций получения размеров окна различны при различных ОС, то интересно как отрабатывается позиционирование и размеры Вызываемой формы при различных сочетаниях. Сочетания WinXP-MSA2003, Win7-MSA2010 проверил. Если у кого другие сочетания - отпишитесь - интересно же.
2. Создание контекстного меню из класса. Как я понял алгоритм следующий - проверить наличие у контрола этого меню; проверить наличие в нем новых добавляемых пунктов и, соответственно добавлять или нет меню/пункт меню.
3. Использование Access-библиотеки. При первом же использовании столкнулся с проблемой использования классов из таких библиотек - решил, но какие еще подводные камни могут быть? Теоретические аспекты использования почитал, но здесь важен именно опыт. Не перегружается ли тем самым основное приложение, ведь теоретически системных ресурсов будет расходоваться больше.
... и т.п.
С наступающим!

  Ответить  
 
 автор: Lukas   (17.12.2010 в 23:50)   личное сообщение
7 Кб.
 
 

по п.2
Делать "с нуля" временное контекстное меню мне кажется проще.
Если штатные кнопки просто копируются из штатного меню, можно без подключения офисной библиотеки классов.
Если кнопки со своим функционалом - возможно потребуется офисная библиотека для подписки на события.
Кстати, интересно еще обрабатывать кнопки ToolBars и контекстного меню в сервисном классе, управлять синхронно Visible/Enable кнопок контекстного меню и кнопок ToolBars в зависимости от ситуации. =>

по п.3.
Пока "места" хватает в основном проекте - лучше огород не городить, кмк.
Практического опыта нет, только эксперименты. Нет таких огромных проектов.

зы. Спасибо! Вас так-же. Но, не рановато-ли?

  Ответить  
 
 автор: AlexSyr   (18.12.2010 в 00:33)   личное сообщение
 
 

2. Мне казалось, что Microsoft Office 14.0 Object Library всегда нужно подключать, по крайней мере в MSA2010. Буду экспериментировать.
3. Т.е. удобство от применения библиотеки - нулевое? Другими словами, каждый проект уникален на 100%? Возможно данный вопрос от того, что прикладываюсь к Access'у от случая к случаю.

До 13 дней 25:24:...

  Ответить  
 
 автор: Lukas   (18.12.2010 в 01:18)   личное сообщение
 
 

3. Я для себя еще не определился.
100% устоявшихся модулей практически нет.
Где-то приходится расширять функционал, где-то менять алгоритм,
где-то подстраиваться под конкретную задачу.
А править проще в одном месте.

А вот библиотека "времени разработки" мне думается интересна будет.
Вот только все ленюсь новую сделать, а старая морально устарела.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList