Вверх ↑
Этот топик читают: Гость
Ответов: 1429
Рейтинг: 50
#1: 2010-10-06 23:09:41 ЛС | профиль | цитата
Когда лейбл не активен, у него пропадает яркость шрифта, как можно изменить цвет текста в этом состоянии?

code_20930.txt
карма: 0

0
файлы: 1code_20930.txt [258B] [122]
Ответов: 4641
Рейтинг: 334
#2: 2010-10-06 23:15:10 ЛС | профиль | цитата
login писал(а):
как можно изменить цвет текста в этом состоянии?

не использовать компонент Label или устанавливать цвет в состоянии активном.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1429
Рейтинг: 50
#3: 2010-10-06 23:18:57 ЛС | профиль | цитата
Ravilr, Если установить в активное состояние, компонент начинает мешать захватывать обьекты которые надо передвигать под надписями.
Нужна неактивная надпись. Но со всеми остальными возможностями..
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2010-10-06 23:37:32 ЛС | профиль | цитата
нужно ли говорить, что не нужно передвигать объекты по форме и тем более под надписями
карма: 27
0
Ответов: 16884
Рейтинг: 1239
#5: 2010-10-06 23:39:02 ЛС | профиль | цитата
login писал(а):
компонент начинает мешать захватывать обьекты которые надо передвигать под надписями.
На неактивную Label под которой расположена кнопка. Надави на кнопку.
Вопрос: Как будешь "захватывать объекты, которые надо передвигать под надписями"
Поделись опытом.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1429
Рейтинг: 50
#6: 2010-10-06 23:52:18 ЛС | профиль | цитата
Вот фрагмент интерфейса:

code_20931.txt
Тянем за квадратик
------------ Дoбавленo в 23.52:
Проблема в том, что если надпись над квадратиком активна, и юзер попадет на нее мышкой, она не даст тянуть квадратик.
карма: 0

0
файлы: 1code_20931.txt [13KB] [144]
Ответов: 131
Рейтинг: 15
#7: 2010-10-07 01:00:33 ЛС | профиль | цитата
login, примени вместо квадратика тот же Label, раскрашивай его всяко и пиши в нём же.
карма: 0

0
Ответов: 1429
Рейтинг: 50
#8: 2010-10-07 01:16:59 ЛС | профиль | цитата
pardon, идея, конечно, хорошая, но вот при больших числах сетки, надпись уже не видно:

code_20932.txt
------------ Дoбавленo в 01.16:
Решил проблему! Вывел onMouseDown/Up из лейбла.
Теперь форма знает, что юзер туда жмет.
карма: 0

0
файлы: 1code_20932.txt [11.8KB] [152]
Ответов: 131
Рейтинг: 15
#9: 2010-10-07 01:56:16 ЛС | профиль | цитата
login, а с хинтом не хочешь попробовать?
code_20933.txt
карма: 0

1
файлы: 1code_20933.txt [13.1KB] [154]
Голосовали:login
Администрация
Ответов: 15295
Рейтинг: 1519
#10: 2010-10-07 02:12:14 ЛС | профиль | цитата
login, мой вам совет (из серии "что б потом не говорил, что не предупреждали") - вашу задачу нужно решать с помощью элемента PaintBox(предпочтительнее), либо DocumentTemplate. Большое количество GUI элементов рано или поздно приведет если не к прямым проблемам, то к глюкам пользовательского интерфейса точно.
------------ Дoбавленo в 02.12:
посмотрел непонятно для чего нужный аналог хаба на 4 выхода:

#pas
_hi_OnEvent(out1, Data);
_hi_OnEvent(out2, Data);
_hi_OnEvent(out3, Data);
_hi_OnEvent(out4, Data);
этот код не верный: метод _hi_OnEvent не гарантирует сохранность данных второго аргумента после вызова. При таком использовании нужно вызывать _hi_OnEvent_, который запоминает значение второго параметра и восстанавливает его после вызова события.
карма: 27
0
Ответов: 1429
Рейтинг: 50
#11: 2010-10-07 05:21:57 ЛС | профиль | цитата
Dilma, спасибо, сейчас буду разбираться.

Первый вопрос, который пришел в голову, а что если в моей программе рабочее поле размером аж на два экрана, PaintBox разве не будет трудно его прорисовывать? (юзер таскает квадратики по сетке - произвольно) Если это просто форма, то панельке все-равно где оказаться. А PaintBox-у прийдется перерисовывать колосальную площадь. Или надо много маленьких PaintBox в панельках сделать, и таскать панельки? Но тогда все-равно много Gui элементов.

Хаб я урезал для скорости, (без цикла и кеширования) там нужен был только "факт события" а его значение, все-равно, берется из верхних точек.

------------ Дoбавленo в 03.28:
[offtop]Хочу подчеркнуть, я понимаю, что данную схему можно просто взять, и записать в IC. (чтобы работало быстро)
Но я, всетаки, хочу работать именно в HIAsm а не в Delphi. Если скорость будет низкой, то на финальной стадии, перед выпуском продукта, - переведу части на IC.
Это должно быть необходимостью, поскольку это запутает проэкт и усложнит дальнейшее его понимание, для совершенствования и добавления новых функций. [/offtop]
------------ Дoбавленo в 05.21:
Немного разобрался, то-есть Вы предлагаете сделать множество элементов ImgRectangle, но чтобы все они, в итоге, сделали свой вывод на одно поле - PaintBox

Примерно так:
Add(MainForm,13868957,105,140)
{
Width=1179
Height=817
}
Add(PaintBox,16464149,252,147)
{
Width=1170
Height=780
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
link(onMouseMove,13535283:doEvent1,[(294,160)(294,124)(193,124)(193,153)])
}
Add(Img_Rectangle,7686781,252,287)
{
Point2=6553700
Point2AsOffset=0
Color=16777215
BgColor=8404992
Style=1
Point(Point1)
Point(Point2)
link(Bitmap,7933522:Var2,[])
link(Point1,13678798:Point,[])
}
Add(PointXY,13678798,266,224)
{
link(Y,7903298:Var2,[(279,211)(272,211)])
}
Add(Hub,13535283,203,147)
{
OutCount=6
link(onEvent1,16464149:doRefresh,[])
link(onEvent2,16464149:doClear,[])
link(onEvent3,7686781:doDraw,[(235,167)(235,293)])
link(onEvent4,6235805:doDraw,[(320,174)(320,293)])
link(onEvent5,2353478:doDraw,[(416,181)(416,293)])
link(onEvent6,13448775:doDraw,[(492,188)(492,293)])
}
Add(Img_Rectangle,6235805,336,287)
{
Point2=6553700
Point2AsOffset=0
Color=16777215
BgColor=8404992
Style=1
Point(Point1)
Point(Point2)
link(Bitmap,11015829:Var2,[])
link(Point1,770178:Point,[(356,271)(342,271)])
}
Add(PointXY,770178,336,224)
{
link(X,7903298:Var3,[(342,194)])
}
Add(GetDataEx,7903298,266,189)
{
link(Data,16464149:MouseY,[])
}
Add(GetDataEx,7933522,252,273)
{
link(Data,16464149:Bitmap,[])
}
Add(Img_Rectangle,2353478,427,287)
{
Point2=6553700
Point2AsOffset=0
Color=16777215
BgColor=8404992
Style=1
Point(Point1)
Point(Point2)
link(Bitmap,1672859:Var2,[])
link(Point1,6913855:Point,[(447,271)(433,271)])
}
Add(PointXY,6913855,427,224)
{
link(X,882416:Var2,[])
}
Add(GetDataEx,11015829,336,273)
{
Angle=3
link(Data,7933522:Var3,[])
}
Add(Img_Rectangle,13448775,511,287)
{
Point2=6553700
Point2AsOffset=0
Color=16777215
BgColor=8404992
Style=1
Point(Point1)
Point(Point2)
link(Bitmap,1672859:Var3,[(517,278)])
link(Point1,5599924:Point,[(531,271)(517,271)])
}
Add(PointXY,5599924,511,224)
{
link(Y,882416:Var3,[(524,202)])
}
Add(GetDataEx,1672859,427,273)
{
Angle=3
link(Data,11015829:Var3,[])
}
Add(GetDataEx,882416,427,197)
{
Angle=3
link(Data,16464149:MouseX,[(265,202)])
}



карма: 0

0
Ответов: 301
Рейтинг: 11
#12: 2010-10-07 11:15:23 ЛС | профиль | цитата
login писал(а):
Немного разобрался, то-есть Вы предлагаете сделать множество элементов ImgRectangle, но чтобы все они, в итоге, сделали свой вывод на одно поле - PaintBox

Зачем? Один маленький paintbox - и его гонять по форме и раскрашивать.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2010-10-07 12:22:44 ЛС | профиль | цитата
login писал(а):
что если в моей программе рабочее поле размером аж на два экрана, PaintBox разве не будет трудно его прорисовывать?

login, разверните окно HiAsm на два экрана и потаскайте элементы на его рабочем столе. Тормозит?

login писал(а):
Хаб я урезал для скорости, (без цикла и кеширования) там нужен был только "факт события"

в такое случае второй аргумент можно воообще убрать

login писал(а):
то-есть Вы предлагаете сделать множество элементов ImgRectangle, но чтобы все они, в итоге, сделали свой вывод на одно поле - PaintBox

Примерно так:

именно так.
карма: 27
1
Голосовали:login
Ответов: 1429
Рейтинг: 50
#14: 2010-10-07 20:02:40 ЛС | профиль | цитата
Теперь я не знаю как определять, какой квадратик выбрал юзер. Потому, что это уже не обьект а картинка.
Я видел "определятор" пересечения линий, но у меня не линия а плоскость, и мышка. Просто вычислять математикой, но опять тут плоскось, я ниразу не сталкивался определением попадания в плоскость, и математике, наверное, будет трудно когда обьектов станет 500 штук. (некоторые могу частично быть друг под другом)
Какой есть способ это делать у программистов?

Add(MainForm,13868957,252,105)
{
Width=383
Height=353
link(onCreate,13535283:doEvent1,[])
}
Add(PaintBox,16464149,357,119)
{
Width=375
Height=320
Point(MouseX)
Point(MouseY)
Point(onMouseMove)
}
Add(Img_Rectangle,7686781,357,266)
{
Point2=6553700
Point2AsOffset=0
Color=16777215
BgColor=8404992
Style=1
Point(Point1)
Point(Point2)
link(Bitmap,16464149:Bitmap,[])
link(Point1,13678798:Point,[])
}
Add(PointXY,13678798,371,196)
{
X=100
Y=100
}
Add(Hub,13535283,308,119)
{
OutCount=3
link(onEvent1,16464149:doRefresh,[])
link(onEvent2,16464149:doClear,[])
link(onEvent3,7686781:doDraw,[(340,139)(340,272)])
}



карма: 0

0
Ответов: 301
Рейтинг: 11
#15: 2010-10-07 20:17:44 ЛС | профиль | цитата
xm - координата мыши относительно окна по х
x - координата квадрата по х относительно окна.
h - ширина квадрата.
x<=xm<=x+h
аналогично по у. искать самый верхний квадрат, удовлетворяющий условиям.
карма: 0

1
Голосовали:login
Сообщение
...
Прикрепленные файлы
(файлы не залиты)