Вверх ↑
Этот топик читают: Гость
Ответов: 689
Рейтинг: 20
#1: 2006-07-17 21:30:18 ЛС | профиль | цитата
Возникла идея следующего плана по интерфейсу:

  • поставил пользователь курсор в поле - появилось кнопка, по нажатию на которой - меню.
  • убрал пользователь курсор с поля - кнопка пропала
Ясно дело это не будет работаеть, по той причине, что как только пользователь тянется к кнопке, что-бы ее нажать - срабатывает KillFocus.

Поэтому два вопроса:

  • Есть ли другой способ это реализовать?
  • Как поместить кнопку (другой объект = картинку) внутрь поля, что бы при получении фокуса внешний вид походил на Excel'овский комментарий (треугольник в правом верхнем углу). Ну и понятно работало меню (не важно или при нажатии на треугольник, или висело постоянно - пока есть фокус).

код:
Add(MainForm,4260993,21,105)
{
Left=20
Top=105
}
Add(Edit,4262680,84,105)
{
Left=15
Top=10
Width=165
Point(onSetFocus)
Point(onKillFocus)
link(onSetFocus,13657626:doData,[(145,125)(145,111)])
link(onKillFocus,221826:doData,[(145,132)(145,153)])
}
Add(Button,14898893,343,105)
{
Left=180
Top=10
Width=10
Height=10
Visible=1
Caption=""
Point(doVisible)
link(onClick,7338254:doPopupHere,[])
}
Add(Hub,6731561,266,105)
{
InCount=2
OutCount=1
link(onEvent1,14898893:doVisible,[])
}
Add(DoData,13657626,175,105)
{
Data=Integer(1)
link(onEventData,6731561:doEvent1,[])
}
Add(DoData,221826,175,147)
{
Data=Integer(0)
link(onEventData,6731561:doEvent2,[(236,153)(236,118)])
}
Add(PopupMenu,7338254,413,98)
{
Menu=#6:Item 1|6:Item 2|
}
Add(Edit,4361613,84,175)
{
Left=15
Top=40
Width=165
}
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#2: 2006-07-17 22:40:47 ЛС | профиль | цитата
oldTV, Вот так code_110
карма: 0

0
Ответов: 3655
Рейтинг: 69
#3: 2006-07-17 22:56:59 ЛС | профиль | цитата
oldTV,
что бы при получении фокуса внешний вид походил на Excel'овский комментарий
Внеший вид чего
карма: 0

0
Ответов: 689
Рейтинг: 20
#4: 2006-07-17 23:27:51 ЛС | профиль | цитата
Это то что необходимо Спасибо, Вячеслав. Я немного модифицировал* твой код (с точки зрения демонстрации треугольника и минимизации используемых компонентов), что бы ты увидел, что я имел ввиду говоря, о треугольнике, который походил бы на Excel'овский комментарий.
Вот он.
code_111
* - нет предела совершенству
карма: 0

0
файлы: 1code_111.txt [1.6KB] [530]
Ответов: 9906
Рейтинг: 351
#5: 2006-07-18 00:45:58 ЛС | профиль | цитата
с точки зрения демонстрации треугольника и минимизации используемых компонентов
с точки зрения минимизации, данная функциональность требует шести элементов, а не 13
карма: 9

0
Ответов: 16884
Рейтинг: 1239
#6: 2006-07-18 09:22:31 ЛС | профиль | цитата
Galkov, меньше не смог
code_113
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_113.txt [1.3KB] [567]
Ответов: 689
Рейтинг: 20
#7: 2006-07-18 09:33:16 ЛС | профиль | цитата
Вот так:?
code_114

[size=-2]------ Добавлено в 09:33
c кодом Tad'a еще меньше:
code_115

* - нет предела совершенству
карма: 0

0
файлы: 2code_114.txt [861B] [573], code_115.txt [848B] [605]
Ответов: 9906
Рейтинг: 351
#8: 2006-07-18 09:48:35 ЛС | профиль | цитата
Функциональная эквивалентность предполагала проверку по "не нажатию" мышачьих кнопок: code_116

Если не считать того, что в 114 onMouseMove может в потоке и 0 содержать...
И откуда вы знаете сколько раз сработает doSwitch по onMouseMove - не ясно...
карма: 9

0
файлы: 1code_116.txt [875B] [647]
Ответов: 689
Рейтинг: 20
#9: 2006-07-18 16:29:02 ЛС | профиль | цитата
Остановился вот на таком:
code_117
Только теперь хочу использовать не doPopupHere, а doPopup в меню. Но честно сказать с координатами запутался. Хочу вывести меню не в месте курсора, а сразу за TextBox'ом.

Вопрос: как определить X и Y, чтобы передать их в виде Y*65536+X в doPopup
карма: 0

0
файлы: 1code_117.txt [2.9KB] [559]
Ответов: 376
Рейтинг: 1
#10: 2006-07-18 17:05:28 ЛС | профиль | цитата
как определить X и Y, чтобы передать их в виде Y*65536+X в doPopup

Эти компоненты тебе в помощь:
Add(PointXY,6102980,140,231)
{
link(X,3916928:CurrentLeft,[])
link(Y,3916928:CurrentTop,[])
}
Add(PosWindow,3916928,140,182)
{
}
карма: 1

0
Ответов: 689
Рейтинг: 20
#11: 2006-07-21 12:28:42 ЛС | профиль | цитата
Botan, спасибо. Все сделал.
Сделал то сделал, то опять с "чистым" кодом все ок, а переношу в проект - фиг. Я думаю у меня что-то явно в моем проект не так сделано, какие-то лишние элементы стоят, что даже такая простота не работает должным образом.

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

Поэтому что я сделал:

  • убрал все транспаренты на лабел - не помогло
  • перед всеми циклами поставил таймеры - тоже
  • убрал вякие навороты с формами, типа другого цвета чем стандартнай серый

Вопрос: что еще может влиять?

[size=-2]------ Добавлено в 17:25
попробовал использовать разные компиляторы:

  • fpc c настройками: %fname% -Sd -Mdelphi -FE%opath% -FU%upath%units -FDtools -CX -dF_P
  • delphi4 c настройками "%fname%" -M "-UC:KOL" "-UC:KOL" "-E%opath%

есть между ними разница (речь идет о проекте, а не о "чистом" коде
если я использую fpc - Картинка в поле не видна - но меню работает.
использую делфи - картинка видна - но меню, для моусемове картинки не работает.

может у меня с настройками компилятора какие-то неточности?

[size=-2]------ Добавлено в 17:35
"чистый код" работает только с компилятором fpc
code_124
если сдвинуть правый край поля влево, то картинка пашет. Внутри поля - нет.

[size=-2]------ Добавлено в 12:28
по последнему вопросу и по настройкам компилятора ничего не подскажете?
карма: 0

0
файлы: 1code_124.txt [4.6KB] [545]
Ответов: 3655
Рейтинг: 69
#12: 2006-07-21 15:52:16 ЛС | профиль | цитата
При компиляции в делфи работает только так - с панелью
Я тебе и свой пример так делал ты наверное думал это я так от нечего
делать приделал панель. code_133
карма: 0

0
файлы: 1code_133.txt [4.9KB] [498]
Ответов: 689
Рейтинг: 20
#13: 2006-07-21 16:37:28 ЛС | профиль | цитата
Вячеслав, видимо придется следовать твоему совету и полностью лопатить весь код проекта. Теперь меню отображается, но картинка не видна. Дело не в этой реализации. Разница между используемыми компиляторами ясна. Не ясно почему не видна панель. Выношу панель вне текстового поля в коде проекта - все работает. Ужас. Тему, если она не будет развиваться в направлении разъяснения причин этого непонятного мне явления, можно прикрыть. Всем спасибо за предложенную помощь.
карма: 0

0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)