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

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
PictureButton.Checked
    #33645627
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
craftymanДа понятно, что изврат.
Я как-то пользовался такими для задания стилей текста (B,I,U). По-моему смотрелось естественно.
...
Рейтинг: 0 / 0
PictureButton.Checked
    #33645848
craftyman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Dmitry:
да, действительно работает :) спасибо.

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

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

Вот:

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
PictureButton.Checked
    #33652601
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ll_style+=BS_PUSHLIKE

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

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


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