Вверх ↑
Этот топик читают: Гость
Ответов: 56
Рейтинг: 9
#1: 2009-05-15 15:02:05 ЛС | профиль | цитата
Подскажите школяру как сделать что бы надпись на кнопке мигала(меняла цвет-например с черного на белый)
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#2: 2009-05-15 16:40:39 ЛС | профиль | цитата
А никак, пока...

Dilma, почему бы в Win не добавить вот это


procedure THIWin._work_doFont;
begin
if _IsFont(Data) then
with pfontrec(Data.idata)^ do begin
Control.Font.Color := Color;
SetFont(Control.Font,Style);
Control.Font.FontName := Name;
Control.Font.FontHeight := _hi_SizeFnt(Size);
Control.Font.FontCharset := CharSet;
_prop_Font := pfontrec(Data.idata)^; // а почему бы не добавить ???
end;
end;

А то в BitBtn есть вот такая фича


    if BtnState=2 then begin
Font.Color := clWindow;
inc(r.Top); inc(r.Left);
inc(r.Bottom); inc(r.Right);
DrawText(Control.Caption,r,DT_EXPANDTABS or DT_SINGLELINE or DT_CENTER or DT_VCENTER);
dec(r.Top); dec(r.Left);
dec(r.Bottom); dec(r.Right);
Font.Color := clBtnShadow;
end else Font.Color := _prop_Font.Color; // ну и кто его сейчас может изменить ?
карма: 22

0
Ответов: 56
Рейтинг: 9
#3: 2009-05-15 16:57:56 ЛС | профиль | цитата
Жаль,а если хотябы,сделать что бы надпись мигала?
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#4: 2009-05-15 17:01:00 ЛС | профиль | цитата
Sega писал(а):
а если хотябы,сделать что бы надпись мигала?

Ждемс ответа начальник транспортного цеха. У меня уже мигает, но не стандартная кнопка (для нее это не катит), а BitBtn после изменений, которые я привел
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#5: 2009-05-15 17:10:23 ЛС | профиль | цитата
nesco писал(а):
// а почему бы не добавить ???

потому что _prop_Font старый надо удалять во избежании утечки памяти.

nesco писал(а):
// ну и кто его сейчас может изменить ?

вот так делать надо

#pas
Font.Color := Control.Font.Color;
карма: 27
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#6: 2009-05-15 17:26:35 ЛС | профиль | цитата
Dilma писал(а):
вот так делать надо

Исправил.

Sega, вот испавленный компонент [svn]BitBtn.pas[/svn]

А вот схема с миганием надписи



Add(MainForm,2953706,168,217)
{
}
Add(FontManager,6528328,301,154)
{
ControlManager="BitBtn"
Point(FontCharset)
}
Add(Font,10839767,301,231)
{
Font=[MS Sans Serif,8,0,128,1]
Point(CharSet)
link(onFont,14338852:doWork2,[])
link(Size,2773481:Var2,[])
link(Name,10012655:Var2,[])
link(Style,14116883:Var2,[])
link(CharSet,15348443:Var2,[])
}
Add(Timer,117992,168,266)
{
Interval=500
Enable=1
link(onTimer,2063175:doSwitch,[])
}
Add(Font,12452400,343,273)
{
Font=[MS Sans Serif,8,0,65535,1]
Point(CharSet)
link(onFont,14338852:doWork3,[(396,279)])
link(Size,2773481:Var3,[(349,198)])
link(Name,10012655:Var3,[(363,205)])
link(Style,14116883:Var3,[(370,212)])
link(CharSet,15348443:Var3,[(377,219)])
}
Add(Switch,2063175,210,266)
{
DataOn=Integer(1)
DataOff=Integer(0)
link(onSwitch,1093669:doEvent,[])
}
Add(IndexToChanel,1093669,252,266)
{
link(onEvent1,10839767:doFont,[(292,272)(292,237)])
link(onEvent2,12452400:doFont,[])
}
Add(GetDataEx,2773481,294,189)
{
link(Data,6528328:FontSize,[])
}
Add(GetDataEx,10012655,308,196)
{
link(Data,6528328:FontName,[])
}
Add(GetDataEx,14116883,315,203)
{
link(Data,6528328:FontStyle,[])
}
Add(GetDataEx,15348443,322,210)
{
link(Data,6528328:FontCharset,[])
}
Add(HubEx,14338852,392,224)
{
Angle=3
link(onEvent,6528328:doSetFont,[(396,142)(290,142)(290,160)])
}
Add(BitBtn,7545736,126,266)
{
Left=45
Top=55
Font=[MS Sans Serif,8,1,128,1]
Name="BitBtn"
Caption="Start"
Flat=1
Point(doFont)
link(onClick,117992:doTimer,[])
}

карма: 22

3
Голосовали:Валерий, Konst, filyaxxxcom
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2009-05-15 18:28:06 ЛС | профиль | цитата
почему вместо таких извращений нельзя сделать вот так:
code_13281.txt

карма: 27
0
файлы: 1code_13281.txt [267B] [195]
Ответов: 56
Рейтинг: 9
#8: 2009-05-15 18:40:46 ЛС | профиль | цитата
nesco, Почему то не сработало!
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#9: 2009-05-15 20:09:46 ЛС | профиль | цитата
Dilma писал(а):
почему вместо таких извращений нельзя сделать вот так

Да можно и так, конечено, ну просили же конкретно
Sega писал(а):
меняла цвет-например с черного на белый


Не сунься я мигающий цвет надписи проверять, не надыбал бы этот косяк с Font.Color-ом

Sega писал(а):
Почему то не сработало!

Файл hiBitBtn.pas надо было сохранить в директорию ElementsDelphicode и все будет работать

На всякий случай дам прямую ссылку на код компонента http://hiasm.googlecode.com/svn/elements/delphi/code/hiBitBtn.pas
карма: 22

0
Ответов: 56
Рейтинг: 9
#10: 2009-05-15 21:41:00 ЛС | профиль | цитата
nesco, Кстати я так и сделал,pas-сохранил в ElementsDelphicode ,а ini на стол hiasm бросил,а вот результата-почему то ноу
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#11: 2009-05-15 22:02:26 ЛС | профиль | цитата
Sega писал(а):
а ini на стол hiasm бросил

Не надо было ini бросать на поле, надо было просто заменит *.pas файл. К тому же у меня версия b177 с полным обновлением, но моя схема должна работать и на ранних версиях после замены кода компонента. Только что проверилна на старой b174, работает под обоими компиляторами.

Интересно, а кто-нибудь еще проверял на новой версии
карма: 22

0
Ответов: 56
Рейтинг: 9
#12: 2009-05-15 22:08:38 ЛС | профиль | цитата
nesco, А расскажи пожайлуста почему не надо было "ini" на поле бросать,как это исправить?У меня 175 версия если что.И если не сложно поподробней что за файл "pas"
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#13: 2009-05-15 22:21:14 ЛС | профиль | цитата
Я ничего в *.ini не менял. А заменить надо было старый файл hiBitBtn.pas на новый. Вот и все

Проверь по Ctrl-F, в компоненте BitBtn, в 126 строке, должно быть вот это


    end else Font.Color := Control.Font.Color;
карма: 22

1
Голосовали:Sega
Ответов: 56
Рейтинг: 9
#14: 2009-05-15 22:46:41 ЛС | профиль | цитата
nesco, Спасибо,разобрался.
карма: 1

0
Ответов: 1328
Рейтинг: 69
#15: 2009-05-16 03:10:17 ЛС | профиль | цитата
nesco писал(а):
Интересно, а кто-нибудь еще проверял на новой версии

Работает. Оба компилятора.
карма: 2

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