RichTextBox & PictureBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

RichTextBox & PictureBox

Сообщение Dummiel » 29.03.2007 (Чт) 15:27

Други мои!

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

При показе окна (правое) с точечным массажом, и клике на номере точки (например, 1.11), появляется окно с топографией этой точки (левое), причем при наведении мыши на точку в левом окне курсор меняется на "палец" (подобно гиперссылке), а при клике на точке cама точка начинает мигать, а в нижней части левого окна появляется описание этой точки. При клике на другой точке мигает уже следующая "кликнутая" точка, и, соответственно, меняется описание ее внизу окна. Подчеркиваю, что клик именно на НОМЕРЕ точки, ни на каком другом участке текста, и курсор никак не меняется при наведении на точку.

Подскажите, как енту мыслю воплотить в программный код?

Вопросы следующие (в смысле алгоритма - подправьте/подскажите, если что не так):

1. В правом окне, я понимаю, RichTextBox. Как распознать, что юзер кликнул именно на номере точки? Что-то типа

Код: Выделить всё
Sub RichTextBox_Click()
    If "Что-то там" = "1.11" Or "10.17" Or ... Then
   ... КОД ...
    End if
End Sub


А "Что-то там" - это что? Здесь я в принципе не врубаюсь в процесс, как при клике на тексте распознать именно нужный мне кусок текста, т.е., набор символов. :( Честно сказать, я с RichTextBox ни разу не имелся.

2. В левом окне, "по понятиям" :), PictureBox & TextBox. С текстбоксом понятно, а как вычислить, что курсор находится на нужной мне точке пикчербокса, чтобы затем в текстбоксе выдать нужный мне текст? Я так думаю, что нужно сначала в какую-то "базу данных" или в массив переменных загнать координаты каждой точки, затем их вычислять по SetCursorPos? А юзер форму начнет передвигать по экрану, тады чаво? :(
Или поступить проще: на форму кинуть пикчербокс с рисунком, на него "маленькие" пикчеры с изображением точек, заделать их Picture.Visible = False, при Picture_MouseMove() поменять курсор, а при Picture_Click() сделать Picture.Visible = True, со всеми остальными привязками к текстбоксу? А рисунков около 20, насколько правильно будет присутствие в проекте 20 почти одинаковых форм с почти одинаковым кодом? Может, какое-то более поизящнее решение существует?

PS. Опять меня старейшины на MSDN отправят! :cry: Не могу я по аглицки соображать толком, да на примерах лучше обучаться. Где можно подобный пример с работой с RichTextBox найти? Киньте ссылочку, please!

С уважением - Dummiel
Вложения
Massag.jpg
Massag.jpg (106.33 Кб) Просмотров: 579

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Re: RichTextBox & PictureBox

Сообщение GSerg » 29.03.2007 (Чт) 16:24

Dummiel писал(а):А "Что-то там" - это что? Здесь я в принципе не врубаюсь в процесс

А не приходило ли тебе в голову, Dummiel, что при клике по тексту каретка перемещается в позицию клика? Нет? Совсем никогда не сталкивался с этим эффектом? Попробуй; перемещается. А каретка - это selstart, удивительно. И rich тут ни при чём, в обычном textbox так же.

Dummiel писал(а):А юзер форму начнет передвигать по экрану, тады чаво? :(

Т.е. даже тот факт, что координаты в любом контейнере отсчитываются от его верхнего левого угла, тебе не известен? :roll:

Dummiel писал(а):PS. Опять меня старейшины на MSDN отправят! :cry: Не могу я по аглицки соображать толком, да на примерах лучше обучаться. Где можно подобный пример с работой с RichTextBox найти?

В той части функциональности richtextbox, которая нужна тебе, он ничем не отличается от textbox.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 29.03.2007 (Чт) 16:26

1. Зачем Rich? Я так понимаю, текст редактировать не надо, почему бы не использовать WebBrowser? Номера точек можно обрамить каким-нибудь тегом с cursor:hand и обрабатывать клики по этим тегам.

2. Определенно, координаты точек где-то надо хранить. Но зачем 20 почти одинаковых, когда хватит одной? На ней пикчер для рисунка тела и массив из имаджев с рисунком точки. Прятать их не надо, при загрузке рисунка всего лишь нужно их подгрузить, установить куда надо и проставить MousePointer. Координаты мыши отслеживать не надо. В связи с этим лучше все данные хранить в Access - основная таблица с рисунками и общей инфой по рисунку, которая грузится в WebBrowser, подчиненная с координатами всех точек и подписями, если нужны.

В общем делов на пол-дня :) И в основном время уйдет на забивание координат.
Лучший способ понять что-то самому — объяснить это другому.

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 29.03.2007 (Чт) 18:23

Еще можно заюзать тег Area

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 30.03.2007 (Пт) 19:43

GSerg никак без подначек не может! Нет, дружище, не приходило! Тебе мой ник ни о чем не говорит? Не приходило ли тебе в голову, что я многого не знаю, иначе зачем бы мне сюда ходить?

Спасибо всем, будем мороковать. Если появятся еще советы, буду только рад!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.03.2007 (Пт) 20:30

Dummiel писал(а):Нет, дружище, не приходило!

Забудем о программировании.
Вспомним лишь Word, нет, WordPad, нет, просто блокнот.
Неужели никода ты не перемещал каретку щелчком мыши по тексту (что меня и удивило)?
Не верю.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 31.03.2007 (Сб) 8:17

Перемещал, конечно! Только не приходило в голову, что это именно каретка! :oops:
Просто моя основная специальность настолько далека от программирования, что многие, меня знающие, удивляются - вроде ничего общего! И занимаюсь я программированием не каждый день, а когда выпадет свободное время. Отсюда и столь "долгое" пользование VB. По времени - да, долго, по "наращиванию потенциала" - не так уж и много.

С уважением - Dummiel.

Добрее нужно быть к людям, мягче, любимее!
М.Жванецкий.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: RichTextBox & PictureBox

Сообщение Andrey Fedorov » 31.03.2007 (Сб) 22:41

Dummiel писал(а):Или поступить проще: на форму кинуть пикчербокс с рисунком


Ну почти правильно - показываешь рисунок (всего один!) с точками (сразу со всеми!). Фокус в том что цвет у точек чуть-чуть разный. Для юзера эта разница в цвете будет незаметна, а ты, распознавая цвет, участка рисунка над которым он проводит/кликает мышью можешь делать то что тебе нужно. Примитивно...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Re: RichTextBox & PictureBox

Сообщение GSerg » 01.04.2007 (Вс) 8:51

Andrey Fedorov писал(а):Примитивно...

Примитивно... и скоре всего не будет работать на всех цветовых настройках экрана...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: RichTextBox & PictureBox

Сообщение Andrey Fedorov » 01.04.2007 (Вс) 13:33

GSerg писал(а):
Andrey Fedorov писал(а):Примитивно...

Примитивно... и скоре всего не будет работать на всех цветовых настройках экрана...


А ты попробуй - я, честно говоря не пробовал и не рассчитываю на это программы. Ибо давно не видел чтобы люди использовали монохром, 16 и 256 цветов.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.04.2007 (Вс) 13:36

Разница между 16b и 32b тоже очень даже с точки зрения сравнения цветов на равенство.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 01.04.2007 (Вс) 13:53

GSerg писал(а):Разница между 16b и 32b тоже очень даже с точки зрения сравнения цветов на равенство.


Я же говорю - экспериментов не проводи. То что делал когда-то работало без проблем под 16 и 32. А больше мне было и не нужно.

Кстати, немножко другой вариант - делаем два рисунка. Первый обычный, в котором все точки одного цвета (или может быть вообще просто карта страны). На втором рисунке такого же размера только точки (или области/регионы для карты) раскрашенные в разные цвета - тут цвета могут отличаться резко ибо второй рисунок мы юзеру вообще не показываем.

Теперь имея координаты первого рисунка мы смотрим цвет точки во втором...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 03.04.2007 (Вт) 14:55

А не приходило ли тебе в голову, Dummiel, что при клике по тексту каретка перемещается в позицию клика? Нет? Совсем никогда не сталкивался с этим эффектом? Попробуй; перемещается. А каретка - это selstart, удивительно.


Я-то думал, что это какое-то "спецсредство" RichTextBox'а! Потому и вопрос был таков. Эх, вот кабы ране об ентом знать! :)
Сейчас получил отправную точку, что бы понять. И "моск" включился-то минут на 15, не боле! И получил как раз то, что хотел! Спасибо за науку!
А с пикчербоксом поморокуем, думаю - получится. Как вариант, я думаю, можно накидать на общий пикчербокс-контейнер с "фоном" тела "кругленьких" пикчербоксов одного цвета, плюс один другого цвета с .Visible = False, а при наведении (или при клике на точке) "показать" пикчербокс другого цвета с координатами "кликнутого" пикчербокса. В общем, "будет день, будет и песня".


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 65

    TopList