How can I use "Radio" to control two pictures display

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
Kevin_yeh2020
Posts: 106
Joined: 11 Apr 2020, 00:54

How can I use "Radio" to control two pictures display

Post by Kevin_yeh2020 » 17 Jun 2021, 02:55

Hello,

How can I use "Radio" to control two pictures display? When I select Group_1 or Group_2, picture_A is displayed and hidden picture_B.
When I select Group_3 or Group_4, hidden picture_A and displayed picture_B.

Code: Select all

#NoTrayIcon
#SingleInstance, force
SetBatchLines, -1
Gui, Show, x0 y0 h700 w800, Testing
Gui, Font, Norm S11 W600 cBlack , Tahoma
Gui, Add, Radio, x30 y40 w60 h30 Checked vGroup_1, A
Gui, Add, Radio, x30 y70 w60 h30 vGroup_2, B
Gui, Add, Radio, x30 y100 w80 h30 vGroup_3, A
Gui, Add, Radio, x30 y130 w60 h30 vGroup_4, C
Gui, Add, GroupBox, x210 y10 w500 h500, Group
Gui, Add, Picture, x250 y250 w200 h-1 vPicture_A, C:\Users\User\Desktop\A.PNG
Gui, Add, Picture, x250 y250 w200 h-1 vPicture_B, C:\Users\User\Desktop\B.PNG
return

#Persistent
WinGet, a_ID, ID, A
SetTimer, aa, 500
return

aa:
WinGet, a1_ID, ID, A
If ( a_ID != a1_ID )
k_ID = %a1_ID%
Return


Gui, Submit, NoHide
If (Group_1 =1)
Loop,1
{ 
GuiControl, hide, Picture_B
}
return

GuiClose:
ExitApp

User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: How can I use "Radio" to control two pictures display

Post by Hellbent » 17 Jun 2021, 03:54

I'm not sure if you have other code that you didn't post or not (you have other issues going on in your code) but as for your question .

You can add a button like this

Code: Select all

Gui, Add, Button, gSwitchPics, Change Pictures
And when you press that button it can run this to switch the pictures.

Code: Select all

SwitchPics:
	Gui, Submit, NoHide
	If(Group_1 = 1 || Gorup_2 = 1){
		GuiControl, hide, Picture_B
		GuiControl, show, Picture_A
	}else If(Group_3 = 1 || Gorup_4 = 1){
		GuiControl, hide, Picture_A
		GuiControl, show, Picture_B
	}
	return

Kevin_yeh2020
Posts: 106
Joined: 11 Apr 2020, 00:54

Re: How can I use "Radio" to control two pictures display

Post by Kevin_yeh2020 » 17 Jun 2021, 04:15

Hellbent wrote:
17 Jun 2021, 03:54
I'm not sure if you have other code that you didn't post or not (you have other issues going on in your code) but as for your question .

You can add a button like this

Code: Select all

Gui, Add, Button, gSwitchPics, Change Pictures
And when you press that button it can run this to switch the pictures.

Code: Select all

SwitchPics:
	Gui, Submit, NoHide
	If(Group_1 = 1 || Gorup_2 = 1){
		GuiControl, hide, Picture_B
		GuiControl, show, Picture_A
	}else If(Group_3 = 1 || Gorup_4 = 1){
		GuiControl, hide, Picture_A
		GuiControl, show, Picture_B
	}
	return
Hi Hellbent,
Thank you for your reply. Can I just use the "Radio" to control?

User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: How can I use "Radio" to control two pictures display

Post by Hellbent » 17 Jun 2021, 04:18

Yes you can.

Take this from that button and add it to the options for each of the radios.

Code: Select all

gSwitchPics

User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: How can I use "Radio" to control two pictures display

Post by Hellbent » 17 Jun 2021, 04:27

I just noticed that both pictures are occupying the same space.

In that case you don't need to use two picture controls you can just use one and then when you want to switch them you just need to update the picture control with the other picture.

Like this:

Code: Select all

SwitchPics:
	Gui, Submit, NoHide
	If(Group_1 = 1 || Gorup_2 = 1){
		GuiControl,, Picture_A, C:\Users\User\Desktop\A.PNG
	}else If(Group_3 = 1 || Gorup_4 = 1){
		GuiControl,, Picture_A, C:\Users\User\Desktop\B.PNG
	}
	return
*Edit
If they have a different height, use the taller one first so the gui is tall enough to fit both.

Kevin_yeh2020
Posts: 106
Joined: 11 Apr 2020, 00:54

Re: How can I use "Radio" to control two pictures display

Post by Kevin_yeh2020 » 17 Jun 2021, 23:01

Hellbent wrote:
17 Jun 2021, 04:27
I just noticed that both pictures are occupying the same space.

In that case you don't need to use two picture controls you can just use one and then when you want to switch them you just need to update the picture control with the other picture.

Like this:

Code: Select all

SwitchPics:
	Gui, Submit, NoHide
	If(Group_1 = 1 || Gorup_2 = 1){
		GuiControl,, Picture_A, C:\Users\User\Desktop\A.PNG
	}else If(Group_3 = 1 || Gorup_4 = 1){
		GuiControl,, Picture_A, C:\Users\User\Desktop\B.PNG
	}
	return
*Edit
If they have a different height, use the taller one first so the gui is tall enough to fit both.
Hi Hellbent,

Thanks for your reply. When I select Group_4 and change to Group_1, how to display the Picture_A?

Code: Select all

#NoTrayIcon
#SingleInstance, force
SetBatchLines, -1
Gui, Show, x0 y0 h700 w800, Testing
Gui, Font, Norm S11 W600 cBlack , Tahoma
Gui, Add, Radio, x30 y40 w60 h30 gSwitchPics Checked vGroup_1, A
Gui, Add, Radio, x30 y70 w60 h30 gSwitchPics vGroup_2, B
Gui, Add, Radio, x30 y100 w80 h30 gSwitchPics vGroup_3, A
Gui, Add, Radio, x30 y130 w60 h30 gSwitchPics vGroup_4, C
Gui, Add, GroupBox, x210 y10 w500 h500, Group
Gui, Add, Picture, x250 y250 w200 h-1 vPicture_A, C:\Users\User\Desktop\A.PNG
Gui, Add, Picture, x250 y250 w200 h-1 vPicture_B, C:\Users\User\Desktop\B.PNG
return

#Persistent
WinGet, a_ID, ID, A
SetTimer, aa, 500
return

aa:
WinGet, a1_ID, ID, A
If ( a_ID != a1_ID )
k_ID = %a1_ID%
Return

SwitchPics:
	Gui, Submit, NoHide
	If(Group_1 = 1 || Gorup_2 = 1)
    {
		GuiControl,, Picture_A, C:\Users\User\Desktop\A.PNG
	}
    else If(Group_3 = 1 || Gorup_4 = 1)
    {
		GuiControl,, Picture_B, C:\Users\User\Desktop\B.PNG
	}
	return

GuiClose:
ExitApp

User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: How can I use "Radio" to control two pictures display

Post by Hellbent » 17 Jun 2021, 23:51

Code: Select all

#SingleInstance, Force
Loop, 4 
   Gui, 1:Add, Radio, %  " xm gSwitchPics vGroup_" A_Index , % Chr( 64 + A_Index)
Gui, 1:Add, Picture, x+30 ym w50 h50 vPicture_A, % "HBitmap:" Pic(1)
Gui, 1:Show,w200,Swap Pics
return
GuiClose:
   ExitApp

SwitchPics:
   Gui, Submit, NoHide
   If(Group_1||Group_2){
      GuiControl,, Picture_A, % "HBitmap:" Pic(1)
   }else If(Group_3||Group_4){
      GuiControl,, Picture_A, % "HBitmap:" Pic(2)
   }
   return

;For the Demo Only  
;********************************************************************************************************************************************************************************************
;********************************************************************************************************************************************************************************************
;********************************************************************************************************************************************************************************************
; ##################################################################################
; # This #Include file was generated by Image2Include.ahk, you must not change it! #
; ##################################################################################
Pic( picin ) {
   static hGdip
Ptr := A_PtrSize ? "Ptr" : "UInt"
UPtr := A_PtrSize ? "UPtr" : "UInt"

if(picin = 1){
   VarSetCapacity(B64, 2104 << !!A_IsUnicode)
   B64 := "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"
}else{
   VarSetCapacity(B64, 2112 << !!A_IsUnicode)
   B64 := "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"
}
If !DllCall("Crypt32.dll\CryptStringToBinary" (A_IsUnicode ? "W" : "A"), Ptr, &B64, "UInt", 0, "UInt", 0x01, Ptr, 0, "UIntP", DecLen, Ptr, 0, Ptr, 0)
   Return False
VarSetCapacity(Dec, DecLen, 0)
If !DllCall("Crypt32.dll\CryptStringToBinary" (A_IsUnicode ? "W" : "A"), Ptr, &B64, "UInt", 0, "UInt", 0x01, Ptr, &Dec, "UIntP", DecLen, Ptr, 0, Ptr, 0)
   Return False
   ; Bitmap creation adopted from "How to convert Image data (JPEG/PNG/GIF) to hBITMAP?" by SKAN
   ; -> http://www.autohotkey.com/board/topic/21213-how-to-convert-image-data-jpegpnggif-to-hbitmap/?p=139257
   hData := DllCall("Kernel32.dll\GlobalAlloc", "UInt", 2, UPtr, DecLen, UPtr)
   pData := DllCall("Kernel32.dll\GlobalLock", Ptr, hData, UPtr)
   DllCall("Kernel32.dll\RtlMoveMemory", Ptr, pData, Ptr, &Dec, UPtr, DecLen)
   DllCall("Kernel32.dll\GlobalUnlock", Ptr, hData)
   DllCall("Ole32.dll\CreateStreamOnHGlobal", Ptr, hData, "Int", True, Ptr "P", pStream)
   (!hGdip)?(hGdip := DllCall("Kernel32.dll\LoadLibrary", "Str", "Gdiplus.dll", UPtr))
   VarSetCapacity(SI, 16, 0), NumPut(1, SI, 0, "UChar")
   DllCall("Gdiplus.dll\GdiplusStartup", Ptr "P", pToken, Ptr, &SI, Ptr, 0)
   DllCall("Gdiplus.dll\GdipCreateBitmapFromStream",  Ptr, pStream, Ptr "P", pBitmap)
   DllCall("Gdiplus.dll\GdipCreateHBITMAPFromBitmap", Ptr, pBitmap, Ptr "P", hBitmap, "UInt", 0)
   DllCall("Gdiplus.dll\GdipDisposeImage", Ptr, pBitmap)
   PtrSize := A_PtrSize ? A_PtrSize : 4
   DllCall(NumGet(NumGet(pStream + 0, 0, UPtr) + (PtrSize * 2), 0, UPtr), Ptr, pStream)
   Return hBitmap
}

Kevin_yeh2020
Posts: 106
Joined: 11 Apr 2020, 00:54

Re: How can I use "Radio" to control two pictures display

Post by Kevin_yeh2020 » 18 Jun 2021, 00:59

Hellbent wrote:
17 Jun 2021, 23:51

Code: Select all

#SingleInstance, Force
Loop, 4 
   Gui, 1:Add, Radio, %  " xm gSwitchPics vGroup_" A_Index , % Chr( 64 + A_Index)
Gui, 1:Add, Picture, x+30 ym w50 h50 vPicture_A, % "HBitmap:" Pic(1)
Gui, 1:Show,w200,Swap Pics
return
GuiClose:
   ExitApp

SwitchPics:
   Gui, Submit, NoHide
   If(Group_1||Group_2){
      GuiControl,, Picture_A, % "HBitmap:" Pic(1)
   }else If(Group_3||Group_4){
      GuiControl,, Picture_A, % "HBitmap:" Pic(2)
   }
   return

;For the Demo Only  
;********************************************************************************************************************************************************************************************
;********************************************************************************************************************************************************************************************
;********************************************************************************************************************************************************************************************
; ##################################################################################
; # This #Include file was generated by Image2Include.ahk, you must not change it! #
; ##################################################################################
Pic( picin ) {
   static hGdip
Ptr := A_PtrSize ? "Ptr" : "UInt"
UPtr := A_PtrSize ? "UPtr" : "UInt"

if(picin = 1){
   VarSetCapacity(B64, 2104 << !!A_IsUnicode)
   B64 := "iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAW/SURBVGhD1VlJSCVHGC59LuP63J47aHQUorjdxHHU5CKEmBySQYQRhYAHD4KHnDSggaAHQXJxuelBcDkIcSEewnjxIiIowTEqqOCaPMUXHeJe+f561Z2ejNHuZ/cz74Oi/qqu/qu+rvrr/6uLWYWoqKjXNpvtGiIPDAz8y13rY4iNjf3Gz89PkPD3979MTU197X7iQ4iPj3+BwSskThwOx6fuJz6GkJCQN8h4QEDAZWJi4gt3rQ8CS2oPGQ8NDf3ZXeMd+MvcNIDABuU3NzfFCQkJcaLSFwEbqULGKWG3WkpJSflIPPBFhIeHDyITZGArR0lJSS/FA18DZsIWGRnZA3sRZOBPTrKzs9PcT30QcIpfYwsWZKKjo79311oDm8xNQVlZ2TMY+Se3t7dfYUnVQf788vJSzARmJz4sLCw1IiIiKTk52XV8fOwSL/2fAKf3EoMck6GImIGHEvzNb3a7/bv8/PwElJ8WMOLnIPCLYgvahC/PQVAtk3xXO9jPOxDqqKioCEXZ+4C/qMTy+ROiGBAI8fr6ej4+Ps4PDg44ob+/Xx3w3t4ePz095bOzs7y1tZXD+NVnlKDr17S0tGzI3gOCwM8oGIRI8RRvamriTqdTEOjt7eU1NTW8sbHxAyJawI745OQkz83NVdtA1x5m2TtksrKy4vD1/oBI61wMhgjU1dXRV1UHVVVVdS8RBRcXF4K00i44OHilvLz8GWRrgbXfhUx0OjAwwNfW1ji8tzoQJeklokBLBn18i9w6tLS02PDFjiDykpISfnV1xXNyctQBaJNRIufn5zwzM1O0DQoK2kJuCIaCxrGxsVwshRiSa2tr2fDwMFtZWRHPHgt8INbQ0CBk8j0fA6KgE4aIwBbUMAP7PxsdHZUlc4BZlhJj+/v7z6WoC4aIaMNybLdsfn5elswBbENKwskaOgIYIrK9vX0sRYYlxg4PD2XJHMBhSomxjY0NpxR1wRARrN1bKTKXy9pQCfYvJX0wRATOK0mKlsNoX4aIaEE2YjaMzoIWhoisr6+rRoFTIKuurqajrax5PLQ2gm19X4q64LGNTE1Nsb6+PmHwq6urbHBwkDU3N7PKykqxNWdkZMiW+kA6RkZGVDKPmZ0HgXVLHkt4X0o4f3CE37ytrY1PT0/zzc1NjsMUOWqBuzw7Pcfux2dmZnhXVxfHrHIctNR2SpJ9WYN/E7krIbzg6enpvLCwUA05KFEog6hZBJZ3nUsoaestJYJBfolMdNTT0yPCd0QS/zkwPSkxMVHEZd3d3Rwhj1oPnfRbSTf+sS59IOU/kbC8vMzy8vJIZEdHR2xxcVHEXVhebHd3l52dnYkEu6IPIDaH6OhohoEzHKAYDlbifcyS0EEgnQUFBbLEvkCacIsmQ7u0lpaWxJo3E6RT0W90aXnsR6wAuEjJODz2I8o2aSa0Or3mR6yG0dkxRATrVo1/HrMM9EDblx4YIgJndiNFy2G0L0NEsLX+LkWG87qUzANt1Qq2trbUvvTAEBH4gBMpsp2dHSmZB61OnEbVvvTAEBEEgm/9/d2vLCwsiNxMKDqpD4Q3b0XBKsBLLyHjiHDJh5kK0km6ZR/Wwm630z2H6HBubk4O4fEgXYpe2Ye1QHyUZrPZxH/f0tLS98J2T0H/gUkX6UR0fInI2Tu3W5GRkT8iEx13dHTI4XiOzs5OdTakbu8A542I4OBg+q1J9xt8aGhIDsk46F3l5zfpLC4utotOvIWoqKhCkBD3I3S10N7ezq+vr+XwHga1pXfoXdJBukinUO5tYIusRKBH+70YTFFREZ+YmLiXED2jNtRWeQ9kTkgXZI/x6BDW4XDku1yuMXhl9YKGDkv0EwJGS9dzog5ndobzBsNZ/T3Hh612DXbxyul0LsuqpwPd/8XFxXVgUO9QVL/0fYna4sT4w5PdHd4HHGHtsbGxTWFhYW9guB/c8FIdPYuJiWmitqgzCYz9DSZxG9YnpFN7AAAAAElFTkSuQmCC"
}else{
   VarSetCapacity(B64, 2112 << !!A_IsUnicode)
   B64 := "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"
}
If !DllCall("Crypt32.dll\CryptStringToBinary" (A_IsUnicode ? "W" : "A"), Ptr, &B64, "UInt", 0, "UInt", 0x01, Ptr, 0, "UIntP", DecLen, Ptr, 0, Ptr, 0)
   Return False
VarSetCapacity(Dec, DecLen, 0)
If !DllCall("Crypt32.dll\CryptStringToBinary" (A_IsUnicode ? "W" : "A"), Ptr, &B64, "UInt", 0, "UInt", 0x01, Ptr, &Dec, "UIntP", DecLen, Ptr, 0, Ptr, 0)
   Return False
   ; Bitmap creation adopted from "How to convert Image data (JPEG/PNG/GIF) to hBITMAP?" by SKAN
   ; -> http://www.autohotkey.com/board/topic/21213-how-to-convert-image-data-jpegpnggif-to-hbitmap/?p=139257
   hData := DllCall("Kernel32.dll\GlobalAlloc", "UInt", 2, UPtr, DecLen, UPtr)
   pData := DllCall("Kernel32.dll\GlobalLock", Ptr, hData, UPtr)
   DllCall("Kernel32.dll\RtlMoveMemory", Ptr, pData, Ptr, &Dec, UPtr, DecLen)
   DllCall("Kernel32.dll\GlobalUnlock", Ptr, hData)
   DllCall("Ole32.dll\CreateStreamOnHGlobal", Ptr, hData, "Int", True, Ptr "P", pStream)
   (!hGdip)?(hGdip := DllCall("Kernel32.dll\LoadLibrary", "Str", "Gdiplus.dll", UPtr))
   VarSetCapacity(SI, 16, 0), NumPut(1, SI, 0, "UChar")
   DllCall("Gdiplus.dll\GdiplusStartup", Ptr "P", pToken, Ptr, &SI, Ptr, 0)
   DllCall("Gdiplus.dll\GdipCreateBitmapFromStream",  Ptr, pStream, Ptr "P", pBitmap)
   DllCall("Gdiplus.dll\GdipCreateHBITMAPFromBitmap", Ptr, pBitmap, Ptr "P", hBitmap, "UInt", 0)
   DllCall("Gdiplus.dll\GdipDisposeImage", Ptr, pBitmap)
   PtrSize := A_PtrSize ? A_PtrSize : 4
   DllCall(NumGet(NumGet(pStream + 0, 0, UPtr) + (PtrSize * 2), 0, UPtr), Ptr, pStream)
   Return hBitmap
}
Hi Hellbent,

Thanks for your example. Before seeing the example, I didn’t think about this effect. It looks very interesting, but I still don’t know how to modify my code..... :headwall:

User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: How can I use "Radio" to control two pictures display

Post by Hellbent » 18 Jun 2021, 01:04

Code: Select all


Gui, Add, Radio, x30 y40 w60 h30 Checked gSwitchPics  vGroup_1, A
Gui, Add, Radio, x30 y70 w60 h30 gSwitchPics  vGroup_2, B
Gui, Add, Radio, x30 y100 w80 h30 gSwitchPics  vGroup_3, A
Gui, Add, Radio, x30 y130 w60 h30 gSwitchPics vGroup_4, C
Gui, Add, Picture, x250 y250 w200 h-1 vPicture_A, C:\Users\User\Desktop\A.PNG
Gui, Show
return


SwitchPics:
   Gui, Submit, NoHide
   If(Group_1||Group_2){
      GuiControl,, Picture_A, C:\Users\User\Desktop\A.PNG
   }else If(Group_3||Group_4){
      GuiControl,, Picture_A, C:\Users\User\Desktop\B.PNG
   }
   return

GuiClose:
ExitApp
*Edited
Last edited by Hellbent on 18 Jun 2021, 01:13, edited 1 time in total.

Kevin_yeh2020
Posts: 106
Joined: 11 Apr 2020, 00:54

Re: How can I use "Radio" to control two pictures display

Post by Kevin_yeh2020 » 18 Jun 2021, 01:09

Hellbent wrote:
18 Jun 2021, 01:04

Code: Select all


Gui, Add, Radio, x30 y40 w60 h30 Checked vGroup_1, A
Gui, Add, Radio, x30 y70 w60 h30 vGroup_2, B
Gui, Add, Radio, x30 y100 w80 h30 vGroup_3, A
Gui, Add, Radio, x30 y130 w60 h30 vGroup_4, C
Gui, Add, Picture, x250 y250 w200 h-1 vPicture_A, C:\Users\User\Desktop\A.PNG

return


SwitchPics:
   Gui, Submit, NoHide
   If(Group_1||Group_2){
      GuiControl,, Picture_A, C:\Users\User\Desktop\A.PNG
   }else If(Group_3||Group_4){
      GuiControl,, Picture_A, C:\Users\User\Desktop\B.PNG
   }
   return

GuiClose:
ExitApp
Hr Hr...... I didn't see it. Thank you so much :superhappy:

User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: How can I use "Radio" to control two pictures display

Post by Hellbent » 18 Jun 2021, 01:20

:thumbup:
GL with your project

Kevin_yeh2020
Posts: 106
Joined: 11 Apr 2020, 00:54

Re: How can I use "Radio" to control two pictures display

Post by Kevin_yeh2020 » 18 Jun 2021, 01:26

Hellbent wrote:
18 Jun 2021, 01:20
:thumbup:
GL with your project
Hi Hellbent,
I tried Code_A and Code_B are not the same, why?

Code_A:

Code: Select all

SwitchPics:
   Gui, Submit, NoHide
   If(Group_1||Group_2){
      GuiControl,, Picture_A, C:\Users\User\Desktop\A.PNG
   }else If(Group_3||Group_4){
      GuiControl,, Picture_A, C:\Users\User\Desktop\B.PNG
   }
   return
Code_B

Code: Select all

SwitchPics:
   Gui, Submit, NoHide
   If(Group_1||Group_2)
   {
      GuiControl,, Picture_A, C:\Users\User\Desktop\A.PNG
   }
   else If(Group_3||Group_4)
   {
      GuiControl,, Picture_A, C:\Users\User\Desktop\B.PNG
   }
   return

User avatar
Hellbent
Posts: 2102
Joined: 23 Sep 2017, 13:34

Re: How can I use "Radio" to control two pictures display

Post by Hellbent » 18 Jun 2021, 01:32

Unless I am missing something because I'm tired. It just looks like it is only a coding style difference.

Code: Select all


if(SomeValue){

}
is the same as

Code: Select all

if(SomeValue)
{

}
I like the first one but some people like the second one.


*Edit* One more example

Code: Select all

if(something){

}else if(something else){

}else{

}
is the same as

Code: Select all

if(something)
{

}
else if(something else)
{

}
else
{

}

Kevin_yeh2020
Posts: 106
Joined: 11 Apr 2020, 00:54

Re: How can I use "Radio" to control two pictures display

Post by Kevin_yeh2020 » 18 Jun 2021, 02:28

Hellbent wrote:
18 Jun 2021, 01:32
Unless I am missing something because I'm tired. It just looks like it is only a coding style difference.

Code: Select all


if(SomeValue){

}
is the same as

Code: Select all

if(SomeValue)
{

}
I like the first one but some people like the second one.


*Edit* One more example

Code: Select all

if(something){

}else if(something else){

}else{

}
is the same as

Code: Select all

if(something)
{

}
else if(something else)
{

}
else
{

}
Thanks.

Post Reply

Return to “Ask for Help (v1)”