Jump to content

Recommended Posts

User71

Hi All,

I'm sure this is a simple one to answer and I have searched and experimented before I asked (well enough hopefully!)

I'm trying to set a button background to be white, the font colour red, centred vertically and horizontally and multi-line. Can it be done?

Here is my example code:

#include <Constants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstantS.au3>
#include <FontConstants.au3>
#include "ColorConstants.au3"

Opt("GUIOnEventMode", 1)

$GUI = GUICreate("GUI", 250, 300)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

$Button = GUICtrlCreateButton("Button" & @CRLF & "One", 160, 185, 85, 110, BitOR($BS_MULTILINE, $BS_CENTER, $BS_VCENTER, $WS_EX_WINDOWEDGE))
GUICtrlSetBkColor(-1, $COLOR_White)
GUICtrlSetFont($Button, 14, 800, 0, "MV Boli", 5)
GUICtrlSetColor($Button, 0xFF0000)
GUICtrlSetOnEvent($Button, "_Exit")
GUISetState()

While 1
    Sleep(100)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit

With everything I have tried, this is the closest I get, button white, font red, correct font, but no centring and sometimes no multi-line (depending on button text and font size). I saw I might have to add the default button forced style back in so I did that too $WS_EX_WindowEdge.

Thanks for any help and apologies if I've missed an obvious answer to this elsewhere.

Share this post


Link to post
Share on other sites
reb

This works for me.

#include <Constants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstantS.au3>
#include <FontConstants.au3>
#include "ColorConstants.au3"

Opt("GUIOnEventMode", 1)

$GUI = GUICreate("GUI", 250, 300)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

$Button = GUICtrlCreateButton("Button" & @CRLF & "One", 160, 185, 85, 110, BitOR($SS_CENTER, $SS_CENTERIMAGE)) ; $BS_MULTILINE, $BS_CENTER, $BS_VCENTER, $WS_EX_WINDOWEDGE))
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetFont($Button, 14, 800, 0, "MV Boli", 5)
GUICtrlSetColor($Button, 0xFF0000)
GUICtrlSetOnEvent($Button, "_Exit")

GUISetState()

While 1
    Sleep(100)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit

 


MEASURE TWICE - CUT ONCE

Share this post


Link to post
Share on other sites
User71

Thanks Reb, tried your code and it centres it but no multi-line, and if I put multi-line on the end it centres it at the top instead and it ignores the @CRLF in the text. Did I do something wrong?

Share this post


Link to post
Share on other sites
reb

I guess you could always fake a button with a label.

 

include <Constants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstantS.au3>
#include <FontConstants.au3>
#include "ColorConstants.au3"

Opt("GUIOnEventMode", 1)

$GUI = GUICreate("GUI", 250, 300)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$bBm = "Button" & @CRLF & "One"
$Button = GUICtrlCreateLabel(@CRLF & $bBm, 160, 185, 85, 110, BitOR($SS_CENTER, $BS_VCENTER),$WS_EX_CLIENTEDGE) ;, $SS_CENTERIMAGE)) ; $BS_MULTILINE, $BS_CENTER, $BS_VCENTER, $WS_EX_WINDOWEDGE))
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetFont($Button, 14, 800, 0, "MV Boli", 5)
GUICtrlSetColor($Button, 0xFF0000)
GUICtrlSetOnEvent($Button, "_Exit")

GUISetState()

While 1
    Sleep(100)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit

_WinAPI_DrawText

 

Edited by reb
Removed unused #include

MEASURE TWICE - CUT ONCE

Share this post


Link to post
Share on other sites
BrewManNH

reb, you're using $ss_* styles in a button control, $ss_* styles are for static controls, labels/icons/images. There is no button control constant that has the same value as $ss_center or $ss_centerimage (although there is a constant with the same value as _centerimage, it's used in a checkbox control), so there's no telling what either of those settings might produce as a result if anything. 

I've tried every combination of button style setting and I have not been able to produce a button with multiline and vertically centered text. The best I could come up with was to add a @CRLF in front of the button text to get it to add another line above the text.

 


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
reb

@ BrewManNH

I revised my post just above yours using label constants.  I see your point.

Thank you.

#include <Constants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ColorConstantS.au3>
#include <FontConstants.au3>
#include "ColorConstants.au3"

Opt("GUIOnEventMode", 1)

$GUI = GUICreate("GUI", 250, 300)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$bBm = "Button" & @CRLF & "One"
$Button = GUICtrlCreateLabel(@CRLF & $bBm, 160, 185, 85, 110, $SS_CENTER,$WS_EX_CLIENTEDGE) ;, $SS_CENTERIMAGE)) ; $BS_MULTILINE, $BS_CENTER, $BS_VCENTER, $WS_EX_WINDOWEDGE))
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetFont($Button, 14, 800, 0, "MV Boli", 5)
GUICtrlSetColor($Button, 0xFF0000)
GUICtrlSetOnEvent($Button, "_Exit")

GUISetState()

While 1
    Sleep(100)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit

.


MEASURE TWICE - CUT ONCE

Share this post


Link to post
Share on other sites
User71

Thank you both for your answers, I didn't even think of adding a @CRLF before the text! Unless anyone else can tell me (us) where we're going wrong I guess it's just one of those things I'll have to work around. Anyone else?

Share this post


Link to post
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

  • Similar Content

    • nooneclose
      By nooneclose
      Hello again, I am in phase two of my help bot. I cannot figure out how to properly code Autoit to click on a webpage button using the I.E UDF. I want to click on the button that I have attached as an image. This button does not have a name but it has an ID. Here is the HTML code for this button that I found using chromes developer inspector.
      HTML Code: 
      <img role="button" tabindex="-1" id="toolactions_INSERT-tbb_image" src="nav_icon_insertkey.gif" alt="New Work Order CTRL+ALT+I" draggable="false"> Here is the code that I have so far:
      ;******************************************************************************* ; Opens IE and fill out a New Workorder ;******************************************************************************* ; Start IE at the ** Tracking Application in ****** $oIE = _IECreate("https:I_am_Bound_by_my_company_to_not_reveal_this_webpage") ; Wait for a browser page load to complete _IELoadWait($oIE) Sleep(6000) ; Store the field names where the important data will be sent Local $nWorkOrderB = _IEGetObjById($oIE, "toolactions_INSERT-tbb_image") _IEAction($nWorkOrderB, "click")  I want my program to click on the button that looks like a piece of paper with a blue # 
      (For those wondering, I am allowed to send images just not the URL.) 
      As always any help would be appreciated. 

    • MJ36
      By MJ36

      How to click this button ? 
      I Try 
       
      func test () $oCorrectObj = "" $tags = $oIE.document.GetElementsByTagName("button") For $tag in $tags $class_value = $tag.GetAttribute("type") If string($class_value) = "buttont" Then $oCorrectObj = $tag MsgBox(0, "Level: ", "Level found :)") Else MsgBox(16, "Failed", "Not found.") ExitLoop EndIf Next If IsObj ( $oCorrectObj ) Then _IEAction ($oCorrectObj, "click") EndIF  
      and
       
      func klik () Local $oFound = "" Local $oBtns = _IETagNameGetCollection($oIE, "span") For $oBtn In $oBtns If String($oBtn.classname) = "yt-uix-button-content" Then $oFound = $oBtn EndIf Next _IEAction ($oFound, "click") EndFunc  
      Please Help 
      Can you click it by name?
    • faustf
      By faustf
      i guys , like title anyone  have idea if is possible , and if yes if  have example to post ?  i find in forum and in google but  i dont know   how can start  to create  button with icon over toolbar near  clock or is  goog before language layout .
      sorry i not post any script but i dont know  where to start
      thankz
      at  all
    • caramen
      By caramen
      Hmmm i am sorry  i had simular problem but i cant find back post. 
       
      How to hide a gui button ? 
       
      I Want to dodge the variable non déclaréd when i make button in
      if statment 
       
      thx before 
    • Pike
      By Pike
      Hello Everyone,
      New Guy here. This is a two-part question, hopefully easy enough though. I know it's ugly coding, this is because I have only a couple hours worth of coding experience and could really use some help.
      1) When I single click the button I want one action (like playing a sound clip) and when I double click the button I want a different action (such as opening dialogue box to ask for soundclip directory address). At the bottom of the script I made a comment which one I would like single click versus double click.
      2) I can not get the FileOpenDialogue to save the file address to the config.ini file at the 'One' position on the .ini.
      #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <MsgBoxConstants.au3> #include <FileConstants.au3> #include <AutoItConstants.au3> #include <Sound.au3> Opt('MustDeclareVars', 1) Opt("GUIOnEventMode", 1) Global $OneID _Main() Func _Main() GUICreate("Form1", 156, 86, 281, 276) $OneID = GUICtrlCreateButton("Button", 15, 17, 122, 37) GUICtrlSetOnEvent($OneID, "OnOne") GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit") GUISetState() While 1 While 1 Sleep(1000) WEnd WEnd EndFunc ;---------------Functions------------- While 1 Sleep(100) WEnd Func OnOne() ; ******************Single Click for this action**************** $OneID = IniRead("config.ini", "Config", "One", $OneID) If $OneID = True Then SoundPlay($OneID, @HotKeyPressed) Else ; *******Double Click for this action*****And Help Saving File Address to config.ini 'One'*********** $OneID = FileOpenDialog("Select file", @WorkingDir, "All (*.*)") IniWrite("config.ini", "Config", "One", $OneID) $OneID = InputBox("Enter Information", "Short Name for File?", "") IniWrite("config.ini", "Config", "NameOne", $OneID) EndIf EndFunc Any help would be greatly appreciated, and if you need anymore clarity as to what exactly I'm trying to do, please do not hesitate to ask. Thanks so much!
      Pike
×