Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PictureButton.Checked / 10 сообщений из 10, страница 1 из 1
04.04.2006, 19:18
    #33644585
craftyman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
Всем привет!
Такой вопрос:
можно ли у PictureButton как-нибудь выставить свойство Checked, которого нет? :)
На самом деле, хочу сделать переключатель, т.е. при первом нажатии на кнопку, она вдавливается, а при следующем - обретает свое первоначальное состояние. По аналогии с toolbar`ом, где у пункта меню есть свойство checked.
Конечно, можно нарисовать пользовательский объект, где самому прорисовывать кнопку, но не верю, что нет более простого решения.
...
Рейтинг: 0 / 0
04.04.2006, 19:25
    #33644599
craftyman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
ну, блин, как обычно тупим... наверное обойдусь обыкновенной Picture, у которой буду менять Border. Но все-таки, можно ли как-нить просто добиться того же эффекта у простой кнопки.
...
Рейтинг: 0 / 0
04.04.2006, 19:40
    #33644615
savosin_sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
такие странные кнопки, которые ведут себя как радиокнопки, я видел только в аксессе. это ж изврат!
...
Рейтинг: 0 / 0
04.04.2006, 19:45
    #33644624
craftyman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
Да понятно, что изврат.
Просто начальство видит в этом огромный эстетический изыск!
Ну эстеты кругом, что поделаешь :)
...
Рейтинг: 0 / 0
05.04.2006, 10:57
    #33645471
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
не уверен что проще
но:

declare local external functions
Код: plaintext
1.
2.
private function long GetWindowLong(  long h,long nIndex) library "user32.dll" alias for "GetWindowLongA"
private function long SetWindowLong(  long h,long nIndex, long i) library "user32.dll" alias for "SetWindowLongA"

Код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
//#define BS_PUSHLIKE         0x00001000L
//#define BS_MULTILINE        0x00002000L
//#define BS_NOTIFY           0x00004000L
//#define BS_FLAT             0x00008000L

long BS_PUSHLIKE= 4096  //0x00001000L
long GWL_STYLE=- 16 
long ll_style

ll_style=GetWindowLong( handle(cbx_1), GWL_STYLE)
ll_style+=BS_PUSHLIKE
ll_style=SetWindowLong( handle(cbx_1), GWL_STYLE, ll_style)
cbx_1.setredraw(true)
...
Рейтинг: 0 / 0
05.04.2006, 11:36
    #33645627
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
craftymanДа понятно, что изврат.
Я как-то пользовался такими для задания стилей текста (B,I,U). По-моему смотрелось естественно.
...
Рейтинг: 0 / 0
05.04.2006, 12:25
    #33645848
craftyman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
to Dmitry:
да, действительно работает :) спасибо.

to Локшин Марк:
и правда смотрится классно...
...
Рейтинг: 0 / 0
07.04.2006, 13:03
    #33651878
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
>> да, действительно работает :)

А у меня - нет :(
Мож чего не так делаю ...

Вот:

forward
global type u_picturebutton from picturebutton
end type
end forward

global type u_picturebutton from picturebutton
integer width = 343
integer height = 196
integer textsize = -8
integer weight = 400
fontcharset fontcharset = russiancharset!
fontpitch fontpitch = variable!
fontfamily fontfamily = swiss!
string facename = "Arial CYR"
string text = "none"
boolean originalsize = true
alignment htextalign = left!
end type
global u_picturebutton u_picturebutton

type prototypes
private function long GetWindowLong( long h,long nIndex) library "user32.dll" alias for "GetWindowLongA"
private function long SetWindowLong( long h,long nIndex, long i) library "user32.dll" alias for "SetWindowLongA"


end prototypes
type variables
//#define BS_PUSHLIKE 0x00001000L
//#define BS_MULTILINE 0x00002000L
//#define BS_NOTIFY 0x00004000L
//#define BS_FLAT 0x00008000L

long BS_PUSHLIKE=4096 //0x00001000L
long GWL_STYLE=-16

end variables
event clicked;long ll_style

ll_style=GetWindowLong( handle(this), GWL_STYLE)
ll_style+=BS_PUSHLIKE
ll_style=SetWindowLong( handle(this), GWL_STYLE, ll_style)
this.setredraw(true)
return 0

end event

on u_picturebutton.create
end on

on u_picturebutton.destroy
end on
...
Рейтинг: 0 / 0
07.04.2006, 15:52
    #33652601
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
ll_style+=BS_PUSHLIKE

надо делать всего один раз (это на самом деле не + а установка определенного бита)

и не на клике а где-нибудь в конструкторе
...
Рейтинг: 0 / 0
07.04.2006, 16:51
    #33652867
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PictureButton.Checked
и кроме того контрол должен быть не picturebutton а checkbox или radiobutton
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PictureButton.Checked / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]