Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Wyjście z funkcji


Rekomendowane odpowiedzi

Opublikowano

­Zależy. Pokaż przykładowy kod, to ci powiemy.

 

Ogólnie żeby wyjść z funkcji możesz użyć Returna. Jak chcesz wyjść z jakiejśtam funkcji za pomocą buttona, to jedyne co mi przychodzi do głowy to sposób ze zmienną.

Poniższy kod może nie być w 100% prawidłowy bo od paru lat nie pisałem nic w AU3:

$breaker = True
 
;GUI
$BreakButton = GUICtrlCreateButton(...)
GUICtrlSetOnEvent($BreakButton, "StopFunction")
 
MyFunc()
 
Func MyFunc()
  while ($breaker)
    MessageBox(...)
    ;rup coś
  WEnd
EndFunc
 
Func StopFunction()
  $breaker = Not $breaker
EndFunc
 
While 1
   Sleep(100)
WEnd

 

W ten oto sposób, po kliknięciu buttona wykonywanie funkcji przerwie się, bo warunek w pętli stanie się fałszem.

846331404756772371599.jpeg
Opublikowano

­Zależy. Pokaż przykładowy kod, to ci powiemy.

 

Ogólnie żeby wyjść z funkcji możesz użyć Returna. Jak chcesz wyjść z jakiejśtam funkcji za pomocą buttona, to jedyne co mi przychodzi do głowy to sposób ze zmienną.

Poniższy kod może nie być w 100% prawidłowy bo od paru lat nie pisałem nic w AU3:

$breaker = True
 
;GUI
$BreakButton = GUICtrlCreateButton(...)
GUICtrlSetOnEvent($BreakButton, "StopFunction")
 
MyFunc()
 
Func MyFunc()
  while ($breaker)
    MessageBox(...)
    ;rup coś
  WEnd
EndFunc
 
Func StopFunction()
  $breaker = Not $breaker
EndFunc
 
While 1
   Sleep(100)
WEnd

W ten oto sposób, po kliknięciu buttona wykonywanie funkcji przerwie się, bo warunek w pętli stanie się fałszem.

 

Nie będzie działał, nie podałeś mu Opt.

Opt("GUIOnEventMode", 1)

Global $formMain = GUICreate("Forma", 200, 30)
Global $btnReturn = GUICtrlCreateButton("Zatrzymaj", 10, 5, 180, 20)

GUISetOnEvent(-3, EventClose)
GUICtrlSetOnEvent($btnReturn, EventStop)

GUISetState(@SW_SHOW, $formMain)

Global $bLoop = True
TaskLoop()

While True
	Sleep(10)
WEnd


Func EventClose()
	Exit
EndFunc   ;==>EventClose

Func EventStop()
	$bLoop = False
EndFunc   ;==>EventStop

Func TaskLoop()
	While $bLoop
		MsgBox(0, "#MPC", "JESTEM WKURZAJACYM MSGBOXEM")
	WEnd
EndFunc   ;==>TaskLoop

( ͡° ͜ʖ ͡°)

Opublikowano

 Oto kawałek mojego kodu, funkcja start jest wywolywana przyciskiem "start". Chcialem aby mozna ja bylo anulowac klikajac przycisk "Anuluj".

#include <File.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <TreeviewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiTreeView.au3>
#include <options/config.au3>

Global $FileList, $Index, $FileView, $File, $SS_CENTER
Local $FilePath, $FileTested, $FileLoaded, $Run, $Exit = 0, $NoPath = 1
Dim $TreeItem[65536]

$Form1 = GUICreate($nazwaprog, 640, 500, 192, 124, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_EX_TRANSPARENT))


$Button2 = GUICtrlCreateButton("Start", 157, 420, 75, 25)
GUICtrlSetResizing($Button2, $GUI_DOCKAUTO)
$Button3 = GUICtrlCreateButton("Anuluj", 409, 420, 75, 25)
$Button4 = GUICtrlCreateButton("Zamknij", 496, 420, 75, 25)

;GUICtrlSetState($Button3,$GUI_DISABLE)
GUICtrlSetState($Button5,$GUI_DISABLE)
GUICtrlSetState($Button6,$GUI_DISABLE)
GUICtrlSetState($Button7,$GUI_DISABLE)

$Group1 = GUICtrlCreateGroup("Postęp", 70, 330, 500, 85)
	$Progress1 = GUICtrlCreateProgress(80, 388, 478, 20, 1)
	$Label1 = GUICtrlCreateLabel("0%", 280, 391, 80, 20, 1) ; % na pasku postępu
	GUICtrlSetResizing($Label1, $GUI_DOCKAUTO)
	GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
	$Label2 = GUICtrlCreateLabel("", 82, 344, 476, 20) ; ścieżka pliku
	GUICtrlSetResizing($Label2, $GUI_DOCKAUTO)
	$Label3 = GUICtrlCreateLabel("", 82, 366, 476, 20) ; znalezione pliki
	GUICtrlSetResizing($Label3, $GUI_DOCKAUTO)



GUISetState(@SW_SHOW)
WinSetOnTop($nazwaprog,"",1)

Main()

Func Main()
	While $Exit = 0
		$nMsg = GUIGetMsg()

		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				$Exit = 1

			Case $Button2
			    Call ("Start")

			Case $Button3
			    Call ("Stop")

		EndSwitch
	WEnd
EndFunc



Func Start()
   MsgBox(262208, "", "Nie klikaj myszą ")
   GUICtrlSetState($Button2,$GUI_DISABLE)
   $FileTested = 0
   $FileLoaded = 0
   $Run = 1
   
   Sleep(400)
   $rep = GUICtrlRead($pow)

    For $Index = 1 To $FileList[0]
	   If (GUICtrlRead($TreeItem[$Index]) = $GUI_CHECKED) Then
	 	  $FileLoaded = $FileLoaded + 1
	   EndIf
    Next
	For $rt = 1 To $rep
	   For $Index = 1 To $FileList[0]
		   If (_GUICtrlTreeView_GetChecked($FileView ,$TreeItem[$Index]) = True) Then
			   $File = ($FilePath&"\"&$FileList[$Index])
			   GUICtrlSetData($Label3, "Aktualnie uruchomiony plik: " & $FileList[$Index])
			   ShellExecuteWait($File)
			   ProcessWaitClose($File)
			   $FileTested = $FileTested + 1
			   GUICtrlSetData($Progress1, $FileTested/$FileLoaded*100)
			   GUICtrlSetData($Label1, $FileTested/$FileLoaded*100 & "%")
			   GUICtrlCreateListViewItem($FileList[$Index] & "|"& ClipGet(), $ResultView)
			EndIf
	   Next
    Next

   $Run = 0
   Sleep(2000)
   GUICtrlSetData($Label3, "Aktualnie uruchomiony plik: ")
   GUICtrlSetData($Label1, "Zakończono")
   $szukanyTekst="Sukces"
   LiczListView($ResultView, $szukanyTekst)
   GUICtrlSetState($Button6,$GUI_ENABLE)
   GUICtrlSetState($Button7,$GUI_ENABLE)

EndFunc

Func Stop()
msgbox(0, "anulowano", "anulowano")
EndFunc


Opublikowano

 

 Oto kawałek mojego kodu, funkcja start jest wywolywana przyciskiem "start". Chcialem aby mozna ja bylo anulowac klikajac przycisk "Anuluj".

#include <File.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <TreeviewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GuiTreeView.au3>
#include <options/config.au3>

Global $FileList, $Index, $FileView, $File, $SS_CENTER
Local $FilePath, $FileTested, $FileLoaded, $Run, $Exit = 0, $NoPath = 1
Dim $TreeItem[65536]

$Form1 = GUICreate($nazwaprog, 640, 500, 192, 124, BitOR($WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_MINIMIZEBOX, $WS_EX_TRANSPARENT))


$Button2 = GUICtrlCreateButton("Start", 157, 420, 75, 25)
GUICtrlSetResizing($Button2, $GUI_DOCKAUTO)
$Button3 = GUICtrlCreateButton("Anuluj", 409, 420, 75, 25)
$Button4 = GUICtrlCreateButton("Zamknij", 496, 420, 75, 25)

;GUICtrlSetState($Button3,$GUI_DISABLE)
GUICtrlSetState($Button5,$GUI_DISABLE)
GUICtrlSetState($Button6,$GUI_DISABLE)
GUICtrlSetState($Button7,$GUI_DISABLE)

$Group1 = GUICtrlCreateGroup("Postęp", 70, 330, 500, 85)
	$Progress1 = GUICtrlCreateProgress(80, 388, 478, 20, 1)
	$Label1 = GUICtrlCreateLabel("0%", 280, 391, 80, 20, 1) ; % na pasku postępu
	GUICtrlSetResizing($Label1, $GUI_DOCKAUTO)
	GUICtrlSetBkColor($Label1, $GUI_BKCOLOR_TRANSPARENT)
	$Label2 = GUICtrlCreateLabel("", 82, 344, 476, 20) ; ścieżka pliku
	GUICtrlSetResizing($Label2, $GUI_DOCKAUTO)
	$Label3 = GUICtrlCreateLabel("", 82, 366, 476, 20) ; znalezione pliki
	GUICtrlSetResizing($Label3, $GUI_DOCKAUTO)



GUISetState(@SW_SHOW)
WinSetOnTop($nazwaprog,"",1)

Main()

Func Main()
	While $Exit = 0
		$nMsg = GUIGetMsg()

		Switch $nMsg
			Case $GUI_EVENT_CLOSE
				$Exit = 1

			Case $Button2
			    Call ("Start")

			Case $Button3
			    Call ("Stop")

		EndSwitch
	WEnd
EndFunc



Func Start()
   MsgBox(262208, "", "Nie klikaj myszą ")
   GUICtrlSetState($Button2,$GUI_DISABLE)
   $FileTested = 0
   $FileLoaded = 0
   $Run = 1
   
   Sleep(400)
   $rep = GUICtrlRead($pow)

    For $Index = 1 To $FileList[0]
	   If (GUICtrlRead($TreeItem[$Index]) = $GUI_CHECKED) Then
	 	  $FileLoaded = $FileLoaded + 1
	   EndIf
    Next
	For $rt = 1 To $rep
	   For $Index = 1 To $FileList[0]
		   If (_GUICtrlTreeView_GetChecked($FileView ,$TreeItem[$Index]) = True) Then
			   $File = ($FilePath&"\"&$FileList[$Index])
			   GUICtrlSetData($Label3, "Aktualnie uruchomiony plik: " & $FileList[$Index])
			   ShellExecuteWait($File)
			   ProcessWaitClose($File)
			   $FileTested = $FileTested + 1
			   GUICtrlSetData($Progress1, $FileTested/$FileLoaded*100)
			   GUICtrlSetData($Label1, $FileTested/$FileLoaded*100 & "%")
			   GUICtrlCreateListViewItem($FileList[$Index] & "|"& ClipGet(), $ResultView)
			EndIf
	   Next
    Next

   $Run = 0
   Sleep(2000)
   GUICtrlSetData($Label3, "Aktualnie uruchomiony plik: ")
   GUICtrlSetData($Label1, "Zakończono")
   $szukanyTekst="Sukces"
   LiczListView($ResultView, $szukanyTekst)
   GUICtrlSetState($Button6,$GUI_ENABLE)
   GUICtrlSetState($Button7,$GUI_ENABLE)

EndFunc

Func Stop()
msgbox(0, "anulowano", "anulowano")
EndFunc


 

Fajnie, tylko daj działający kod, bo tego nie idzie uruchomić, a nie chce mi się bawić w dodawanie funkcji, bez możliwości przetestowania.

­

( ͡° ͜ʖ ͡°)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...