Jump to content

How to use Label as button


 Share

Recommended Posts

  • Developers

add the correct style to the label control: $SS_NOTIFY

Jos

Edited by Jos

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

  • 2 weeks later...

Jos, isn't SS_NOTIFY a default for the control unless you've specified other styles, where you could use either SS_NOTIFY or GUI_SS_DEFAULT_LABEL?

@Slaughter, just do the same as you do for buttons, handle the event in your message loop or using OnEvent... It really ain't that hard.

Cheers,

Brett

Link to comment
Share on other sites

I am in a good mood

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 633, 447, 193, 125)
$Label1 = GUICtrlCreateLabel("Click Me", 208, 136, 97, 33)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $Label1
            MsgBox(0,"", "You pushed the Button")
    EndSwitch
WEnd


Time you enjoyed wasting is not wasted time ......T.S. Elliot
Suspense is worse than disappointment................Robert Burns
God help the man who won't help himself, because no-one else will...........My Grandmother

Link to comment
Share on other sites

  • Developers

Jos, isn't SS_NOTIFY a default for the control unless you've specified other styles, where you could use either SS_NOTIFY or GUI_SS_DEFAULT_LABEL?

I am sure JP must have changed that on me a while ago, but you are right. :D

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource   Forum etiquette  Forum Rules 
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Link to comment
Share on other sites

yea having the same problem, i wanted to add a background pic to a button , thought it would be easy just use GUICtrlSetImage but nooo dont work so i had a look around and it seems that most peeps are saying to use something else like a Label or a Pic and yea it does work but the control is nowhere near as responsive as a button, it misses presses and acts rather odd ? iv set up a demo of this , try clicking the Label several times it does not register all the clicks where as a button does.

#include <GUIConstantsEx.au3>
$Form1 = GUICreate("Form1", 633, 447, 193, 125)
$but = GUICtrlCreateButton("Click Me", 208, 266, 197, 33)
$Label1 = GUICtrlCreateLabel("Click Me", 208, 166, 197, 33)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")

GUISetState(@SW_SHOW)
$Ltimes = 0
$btimes = 0
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Label1
            GUICtrlSetData($Label1, "Click me .." & $Ltimes)
            $Ltimes += 1
        Case $but
            GUICtrlSetData($but, "Click me .." & $btimes)
            $btimes += 1
    EndSwitch
WEnd

so whats the answer to a background .jpg or .bmp to a button?

i have posted asking this question already but noticed this thread after.

cheers chaps.

Thx all,Jack Dinn.

 

JD's Auto Internet Speed Tester

JD's Clip Catch (With Screen Shot Helper)

Projects :- AutoIt - My projects

My software never has bugs. It just develops random features. :-D

Link to comment
Share on other sites

  • Moderators

JackDinn,

Putting a .bmp on a button is easy. Create the button with the $BS_BITMAP style and use GUICtrlSetImage. Job done!

However, if you want text on top of the bitmap life becomes a bit more complicated and I suggest you look at rover's script here.

I am not sure that you can put a .jpg on a button. Using GUICtrlSetImage will not work - and this is unsurprising given that the available styles for buttons are for BITMAP and ICON and I know that .bmps and .jpgs are regarded as different resource types (BITMAP and RCDATA). Perhaps someone more experienced can us give chapter and verse later.

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

yea me making assumptions again , thx for pointing that out .jpg is not a .bmp :D . However still wondering why even changing the colour of the text on a button makes it act in this strange way ?

Edited by JackDinn

Thx all,Jack Dinn.

 

JD's Auto Internet Speed Tester

JD's Clip Catch (With Screen Shot Helper)

Projects :- AutoIt - My projects

My software never has bugs. It just develops random features. :-D

Link to comment
Share on other sites

  • Moderators

JackDinn,

There are many threads about problems with buttons when they are coloured or have images. I know there is a longstanding bug in Trac concerning coloured buttons trapping the Enter key - and there was another thread a while back about slow response from buttons with coloured text.

So I try to have my buttons just as they come - I do change the font sometimes, but I have not had any problems so far (touch wood!).

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

well thx for your responses , looks like im also guna be keeping my buttons just as god(JB) meant them to be, anything else looks like to much hassle for what it gains. have looked at some other UDF skins and buttons etc but its all a lot of grief so thx again in helping me make my finial decision in this case :D

Thx all,Jack Dinn.

 

JD's Auto Internet Speed Tester

JD's Clip Catch (With Screen Shot Helper)

Projects :- AutoIt - My projects

My software never has bugs. It just develops random features. :-D

Link to comment
Share on other sites

JackDinn

re, your post in the above thread mentioned by Melba23

you are limited to using the BMP format used by Microsoft

with the behind the scenes API's used to make GuiCtrlSetImage()

and set a common controls image unless you convert the jpg image to BMP

buttons with images set that way don't have visual styles theme appearance (Windows classic only)

because they are ownerdrawn (more code required to set images for all states)

if you use an imagelist you get themed buttons and transparency and its not much extra code

you can also make the button and image the same size and have a button that blends in with the background image of the gui

and buttons response time is normal, no lag

JPG or PNG on a themed button

an example using available transparent PNG images on Windows XP

works nicely with hi-res transparent PNGs

Minimum Operating Systems: Windows XP.

#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiImageList.au3>
#Include <GDIPlus.au3>

Opt("MustDeclareVars", 1)

_Main()

Func _Main()

    Local $sJPGImage1 = @WindowsDir & "\system32\DirectX\Dinput\SV-262e1.png"
    Local $sJPGImage2 = @WindowsDir & "\system32\DirectX\Dinput\gr4001_g.png"
    
    Local $btn1,$btn2,$msg, $iW1, $iH1, $iW2, $iH2
    Local $hImagebtn1,$hImagebtn2,$hBitmap1,$hBitmap2,$hImage1,$hImage2

    ;Caveat: Minimum Operating Systems: Windows XP.

    Local $hGUI = GUICreate("Button Imagelists - Minimum OS: Windows XP",520,600)

    ; Initialize GDI+ library
    _GDIPlus_Startup ()
    ; convert jpg to bitmap
    
    $hImage1 = _GDIPlus_ImageLoadFromFile($sJPGImage1)
    $hImage2 = _GDIPlus_ImageLoadFromFile($sJPGImage2)
    $hBitmap1 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage1)
    $hBitmap2 = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage2)
    
    ;Button 1
    ;single state image Bitmap with overlayed text
    $btn1 = GUICtrlCreateButton("Test This", 10, 10, 500, 280)
    GUICtrlSetTip(-1, "Single bitmap imagelist")
    GUICtrlSetFont(-1, 16, 800, -1, "Comic Sans MS")
    ;Button imagelist
    ; get image W/H dimensions to set imagelist to size of image
    $iW1 = _GDIPlus_ImageGetWidth($hImage1)
    $iH1 = _GDIPlus_ImageGetHeight($hImage1)
    $hImagebtn1 = _GUIImageList_Create($iW1, $iH1, 5, 3)
    _GUIImageList_Add($hImagebtn1,$hBitmap1)
    _GUICtrlButton_SetImageList($btn1, $hImagebtn1, 0) ; last parameter sets centering of image on button

    ;Button 2
    ;single state image Bitmap with overlayed text
    $btn2 = GUICtrlCreateButton("And This", 10, 310, 500, 280)
    GUICtrlSetTip(-1, "Single bitmap imagelist with overlayed text")
    GUICtrlSetFont(-1, 16, 800, -1, "Comic Sans MS")
    
    ;button imagelist
    ; get image W/H dimensions to set imagelist to size of image
    $iW2 = _GDIPlus_ImageGetWidth($hImage2)
    $iH2 = _GDIPlus_ImageGetHeight($hImage2)
    $hImagebtn2 = _GUIImageList_Create($iW2, $iH2, 5, 3)
    _GUIImageList_Add($hImagebtn2,$hBitmap2)
    _GUICtrlButton_SetImageList($btn2, $hImagebtn2, 0) ; last parameter sets centering of image on button

    ; Clean up resources after adding bitmaps to button imagelists
    _GDIPlus_ImageDispose($hImage1)
    _GDIPlus_ImageDispose($hImage2)
    _WinAPI_DeleteObject($hBitmap1)
    _WinAPI_DeleteObject($hBitmap2)

    ; Shut down GDI+ library
    _GDIPlus_ShutDown ()
    GUISetState()

    While 1
        $msg = GUIGetMsg()
        Switch $msg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $btn1
                Beep(1000,5)
            Case $btn2
                Beep(1000,5)
        EndSwitch
    WEnd
EndFunc   ;==>_Main

I see fascists...

Link to comment
Share on other sites

nice reply, thx, oddly enough i was just looking into ImageLists (just to learn, i'll prob just use normal buttons for now) but your example script will help out.

thx.

Thx all,Jack Dinn.

 

JD's Auto Internet Speed Tester

JD's Clip Catch (With Screen Shot Helper)

Projects :- AutoIt - My projects

My software never has bugs. It just develops random features. :-D

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...