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

[Pytanie] Cztery Pytania O Gui


Rekomendowane odpowiedzi

Opublikowano

1. W jaki sposób wycentrować pionowo tekst w Label'u?

 

2. Używając stylu $ES_NUMBER dla pola input, umożliwiam wpisywanie tylko numerów. No i fajnie, ale podczas wpisywania liter wyskakuje paskudny "tooltip" przy inpucie. Co zrobić, żeby tego "tooltipa" się pozbyć? Żeby litery po prostu się nie wpisywały, bez żadnych brzydkich-zbędnych informacji "Niedopuszczalny znak"?

 

3. Co zrobić, by cała zawartość pola input zaznaczała się po jednokrotnym kliknięciu LPM? (domyślnie tak się dzieje po dwukrotnym)

 

4. Kiedy przypisuję jakiemuś elementowi styl "GUI_DISABLED" - nie wyświetlają się "Hint'y" po najechaniu na ten element. Co zrobić, by hint'y wyświetlały się nawet przy zdisejblowanych elementach?

 

Pytam, ponieważ nie znalazłem żadnej informacji o tym w dokumentacji.

 

Równolegle rozpoczynam poszukiwania udf'ów na forum anglojęzycznym. Gdyby ktoś jednak dysponował gotową odpowiedzią (ew. linkiem do udf'a) - bardzo mi pomoże - i zostanie nagrodzony natychmiastowym plusem :]

 

@Edit:

Pytanie piąte:

Co zrobić, by Gui po naciśnięciu przycisku minimalizacji (na lewo od X w prawym górnym rogu) minimalizowało się do tray'a (nie do paska zadań)?

Ta sygnatura jest pusta.

Opublikowano

1.2.3.4. jak robisz w Kodzie to masz wszystko w opcjach do ustawienia w inspektorze obiektów , zakładki masz na dole , domyślisz się po nazwach

 

a co do informacj wszystko jest tylko za mało zagłębiasz się w opcje , poszukaj GUI Control Styles w helpie tam jest wszystko napisane co robi Koda używając danej opcji

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

robem:

no właśnie nie ma tego -.-

Wszystko co jest w Kodzie, znajduj się też w Helpie AutoIt'a. Te opcje które kazałeś mi zobaczyć są wszystkie w "GUI Control Styles Appendix" w głównym helpie. I - jak pisałem - już wszystko co tam jest przejrzałem i nie ma zupełnie tego, czego szukam... -.-

Ta sygnatura jest pusta.

Opublikowano

To jak ci tu z porządnym kodem a ty mi takie prymitywizmy szukasz :rolleyes:

@CR @CRLF @LF

 

#include <GUIConstantsEx.au3>

GUICreate("abc", 200, 200)
GUICtrlCreateLabel("A" & @CR & "u" & @CR & "t" & @CR & "o" & @CR & "i" & @CR & "t", 40, 12, 17, 97)

GUICtrlCreateLabel("T" & @LF & "A" & @LF & "K" & @LF & "I" & @LF & "E" _
	 & @CRLF & @CRLF & "C" & @CRLF & "O" & @CRLF & "S" & @CRLF & @CRLF & "?", 80, 12, 17, 157)

GUISetState(@SW_SHOW)


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

EndSwitch
WEnd

Opublikowano

Nieee :(((

 

Chcę wycentrować według osi Y (normalny, poziomy tekst).

 

Ten tekst jest wycentrowany poziomo (według osi X)

To znaczy, że odległość od prawej i lewej krawędzi jest taka sama

Ale co zrobić, żeby odległość od górnej i dolnej krawędzi była tak sama?

 

Od centrowania poziomego wewnątrz label'a jest styl "SS_Center"

Ale co zrobić żeby go wyśrodkować względem górnej i dolnej granicy "Labela"?

 

 

 

@Edit:

I mam kolejne pytanie co do gui:

Kiedy w windowsie przesuwam okno gui - działanie programu się "pauzuje".

Aktualnie tworzę program, którego niektóre zadania będą musiały być wykonywanie precyzyjnie co do milisekundy.

Jak zapobiec pauzowaniu programu podczas przemieszczaniu jego okna?

(coś bardziej błyskotliwego niż "nie przemieszczać")

Ta sygnatura jest pusta.

Opublikowano

tu mnie troche zaskoczyłeś bo nawet tego nie zauważyłem w gui , przypuszczając jest to oparte na budowie gui czyli albo uzywasz GUIOnEventMode albo przycisków z Select lub Switch ( widocznie w nich to ciągłe odświeżanie zawartości gui i sprawdzanie stanu przycisków tak wpływa na zachownaie w programie )

ja częsciej stosuje GUIOnEventMode w swoim gui i nie widze takowych problemów

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

1. i żeby mi to było przedostatni raz

wyśrodkowane na osi x/y

 

#include <GUIConstantsEx.au3>
#include <staticconstants.au3>
GUICreate("abc", 200, 200)
GUICtrlCreateLabel("abc////////", 0, 0, 200, 200, $SS_CENTER + $SS_CENTERIMAGE)

GUISetState(@SW_SHOW)

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

EndSwitch
WEnd

 

 

2. zakładając timer za pomocą dllcallback lub pochodnej funkcji zdaje sie można wymusić by "program" nawet podczas zwiechy działał... ale co do tego nie jestem do końca pewien... wiem tylko z doświadczanie ze jak mi sie funkcja wpasuje z czasem w moment kiedy wyłączam bota to wykrzacza niezłe errory, wiec powinno i bombardować podczas przesuwania okna... ale pewnie są jakieś bardziej cywilizowane metody, luknij GUIRegisterMsg() albo dopisz sleep(20) w odpowiednim miejscu jak ci wyżej piszą.... w autoit zbyt szybko = wolniej

Opublikowano

Dziób tukana:

1 - działa, dzięki, o tym, że coś do obrazków może to centrować to nie pomyślałem :]

Lecą łącznie trzy plusy.

 

robem:

Budowa gui nie ma tutaj nic do rzeczy. Podczas przemieszczania gui nawet najgłupsza pętla "for" się zatrzymuje. Jak w przykładzie:

 

GuiCreate("")
GuiSetState()
$x = 1
For $i = 1 to 3000000
$x += 1
Next
MsgBox(0,"",$x)

 

 

czy coś bliższego faktycznemu botowi:

 

#include <ff.au3>

GUICreate("")
GuiSetState()

_FFStart("http://www.www.interia.pl")
Sleep(1000)
_FFOpenUrl("http://www.onet.pl")

 

 

Dopóki przesuwasz okienko, tak długo następna linia kodu nie zostanie wykonana. Jak to obejść?

 

Co do funkcji timer'a zaproponowanego przez dziub tukana:

Przejrzałem helpa pod tym kątem i są takie funkcje już domyślnie w autoicie. Na przykład AdlibRegister. Ładne, praktycznie wykorzystanie jest w temacie _TicksToTime - rozwiązuje to pośrednio problem precyzji co do milisekundy niektórych części bota... Nadaje się to niby do odliczania czasu... ale nic bardziej zaawansowanego ://

 

Ciągle szukam odpowiedzi dla poniższych pytań

 

 

2. Używając stylu $ES_NUMBER dla pola input, umożliwiam wpisywanie tylko numerów. No i fajnie, ale podczas wpisywania liter wyskakuje paskudny "tooltip" przy inpucie. Co zrobić, żeby tego "tooltipa" się pozbyć? Żeby litery po prostu się nie wpisywały, bez żadnych brzydkich-zbędnych informacji "Niedopuszczalny znak"?

 

3. Co zrobić, by cała zawartość pola input zaznaczała się po jednokrotnym kliknięciu LPM? (domyślnie tak się dzieje po dwukrotnym)

 

4. Kiedy przypisuję jakiemuś elementowi styl "GUI_DISABLED" - nie wyświetlają się "Hint'y" po najechaniu na ten element. Co zrobić, by hint'y wyświetlały się nawet przy zdisejblowanych elementach?

 

5. Co zrobić, by Gui po naciśnięciu przycisku minimalizacji (na lewo od X w prawym górnym rogu) minimalizowało się do tray'a (nie do paska zadań)?

 

 

Nigdzie w żadnym help'ie ich nie ma...

Ta sygnatura jest pusta.

Opublikowano

Nawet ci sie szukać w helpie nie chce <_<

 

#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <Timers.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>

Opt("MustDeclareVars", 1)

Global $iMemo, $hStatusBar, $progress, $percent = 0, $direction = 1

_Example_CallBack()

Func _Example_CallBack()
Local $hGUI, $iTimerProgress, $btn_change, $iWait = 10, $btn_state
Local $aParts[3] = [75, 330, -1]

$hGUI = GUICreate("Timers Using CallBack Function(s)", 400, 320)
$iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, BitOR($WS_HSCROLL, $WS_VSCROLL))
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_state = GUICtrlCreateButton("Start Progress Bar", 70, 270, 100, 25)
$btn_change = GUICtrlCreateButton("Change", 215, 270, 90, 25)
GUICtrlSetState($btn_change, $GUI_DISABLE)
$hStatusBar = _GUICtrlStatusBar_Create($hGUI, $aParts)
_GUICtrlStatusBar_SetText($hStatusBar, "Timers")
_GUICtrlStatusBar_SetText($hStatusBar, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
$progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
GUICtrlSetColor($progress, 0xff0000)
_GUICtrlStatusBar_EmbedControl($hStatusBar, 1, GUICtrlGetHandle($progress))
GUISetState()

_Timer_SetTimer($hGUI, 1000, "_UpdateStatusBarClock") ; create timer

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $btn_state
			If GUICtrlRead($btn_state) = "Start Progress Bar" Then
				$iTimerProgress = _Timer_SetTimer($hGUI, $iWait, "_UpdateProgressBar") ; create timer
				If @error Or $iTimerProgress = 0 Then ContinueLoop
				GUICtrlSetData($btn_state, "Stop Progress Bar")
				GUICtrlSetState($btn_change, $GUI_ENABLE)
			Else
				GUICtrlSetState($btn_change, $GUI_DISABLE)
				_Timer_KillTimer($hGUI, $iTimerProgress)
				GUICtrlSetData($btn_state, "Start Progress Bar")
			EndIf

		Case $btn_change
			If $iWait = 10 Then
				$iWait = 250
			Else
				$iWait = 10
			EndIf
			MemoWrite("Timer for _UpdateProgressBar set at: " & $iWait & " milliseconds")
			$iTimerProgress = _Timer_SetTimer($hGUI, $iWait, "", $iTimerProgress) ; reuse timer with different interval
	EndSwitch
WEnd
ConsoleWrite("Killed All Timers? " & _Timer_KillAllTimers($hGUI) & @CRLF)
GUIDelete()
EndFunc   ;==>_Example_CallBack

; call back function
Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime)
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
_GUICtrlStatusBar_SetText($hStatusBar, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
EndFunc   ;==>_UpdateStatusBarClock

; call back function
Func _UpdateProgressBar($hWnd, $Msg, $iIDTimer, $dwTime)
#forceref $hWnd, $Msg, $iIDTimer, $dwTime
$percent += 5 * $direction
GUICtrlSetData($progress, $percent)
If $percent = 100 Or $percent = 0 Then $direction *= -1
If $percent = 100 Then
	GUICtrlSetColor($progress, 0xff0000)
ElseIf $percent = 0 Then
	GUICtrlSetColor($progress, 0x0000ff)
EndIf
EndFunc   ;==>_UpdateProgressBar

; Write a line to the memo control
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

 

 

Adibregister to zupełnie inna funkcja mająca inne właściwości.

Sama funkcja _Timer_SetTimer jest jak dla mnie zbyt pokręcono napisana i lepiej zamiast tego wysmarowac sobie własną, coś w stylu:

Global $Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword"), $TimerDLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 500, "ptr", DllCallbackGetPtr($Timer))
Func Timer($hWnd, $uiMsg, $idEvent, $dwTime)
If $idEvent = $TimerDLL[0] Then
	;call("cos")
endif
EndFunc 

;i kilowanie tego

DllCall("user32.dll", "int", "KillTimer", "hwnd", 0, "uint", $TimerDLL)
DllCallbackFree($Timer)

Dzieki temu masz gratis wielowątkowosc bo mozna to rejestrować jednocześnie na kopy.

Opublikowano

Dziób tukana:

To nie jest tak, że mi się nie chce. Ten help jest bardzo obszerny i wszystkiego na raz ogarnąć nie da rady ;]

Plus leci, problem pauzowania podczas przesuwania gui rozwiązany

 

Pozostają następujące cztery:

 

2. Używając stylu $ES_NUMBER dla pola input, umożliwiam wpisywanie tylko numerów. No i fajnie, ale podczas wpisywania liter wyskakuje paskudny "tooltip" przy inpucie. Co zrobić, żeby tego "tooltipa" się pozbyć? Żeby litery po prostu się nie wpisywały, bez żadnych brzydkich-zbędnych informacji "Niedopuszczalny znak"?

 

3. Co zrobić, by cała zawartość pola input zaznaczała się po jednokrotnym kliknięciu LPM? (domyślnie tak się dzieje po dwukrotnym)

 

4. Kiedy przypisuję jakiemuś elementowi styl "GUI_DISABLED" - nie wyświetlają się "Hint'y" po najechaniu na ten element. Co zrobić, by hint'y wyświetlały się nawet przy zdisejblowanych elementach?

 

5. Co zrobić, by Gui po naciśnięciu przycisku minimalizacji (na lewo od X w prawym górnym rogu) minimalizowało się do tray'a (nie do paska zadań)?

 

 

Pomożecie?

Ta sygnatura jest pusta.

Opublikowano

niemożliwością jest dokładność co do milisekundy zawsze jest jakiś błąd pomiaru

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

Błąd pomiaru? A co ty niby mierzysz?

 

Komputer nic nie mierzy. On sobie odlicza. Oczywiście żaden zegar nie jest doskonały, ale gdyby na bieżąco aktualizować informacje o czasie z odpowiedniego serwera, można uzyskać dokładność rzędu milisekundy na 300 lat.

 

Wciąż ponawiam cztery pytania o gui:

 

2. Używając stylu $ES_NUMBER dla pola input, umożliwiam wpisywanie tylko numerów. No i fajnie, ale podczas wpisywania liter wyskakuje paskudny "tooltip" przy inpucie. Co zrobić, żeby tego "tooltipa" się pozbyć? Żeby litery po prostu się nie wpisywały, bez żadnych brzydkich-zbędnych informacji "Niedopuszczalny znak"?

 

3. Co zrobić, by cała zawartość pola input zaznaczała się po jednokrotnym kliknięciu LPM? (domyślnie tak się dzieje po dwukrotnym)

 

4. Kiedy przypisuję jakiemuś elementowi styl "GUI_DISABLED" - nie wyświetlają się "Hint'y" po najechaniu na ten element. Co zrobić, by hint'y wyświetlały się nawet przy zdisejblowanych elementach?

 

5. Co zrobić, by Gui po naciśnięciu przycisku minimalizacji (na lewo od X w prawym górnym rogu) minimalizowało się do tray'a (nie do paska zadań)?

 

Ta sygnatura jest pusta.

Opublikowano

robem:

 

Ile raz mam ci powtarzać, że to nie są banalne pytania, które są w help'ie?

Widzę, że uparłeś się na to "poszukaj w helpie, w helpie jest wszystko".

Właśnie tego nie ma :/

I przecież piszę wyraźnie, że GuiCtrlSetTip (odpowiedzialny w KODZie za "Hint") nie działa przy opcji DISABLED.

To działa tylko z elementami "enabled"

CO zrobić, by wyświetlało Tip/Hint nat elementami z opcją stylu "disabled"?

Ta sygnatura jest pusta.

Opublikowano

bo większość o co pytasz to są jakieś nieprzydane bzdety

nie wiem na kij komu te toltip-y zablokowanych elementów

jak sie upierasz to masz:

#include <GuiConstantsEx.au3>

$hGUI = GUICreate("MyGUI", 300, 300)
$ctrlButton1 = GUICtrlCreateButton("Button1", 100, 150, 100, 30)
$ctrlButton2 = GUICtrlCreateButton("Button2", 100, 250, 100, 30)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

While 1
   Switch GUIGetMsg()
       Case $GUI_EVENT_CLOSE
           Exit
       Case $ctrlButton1
           ToolTip ("button 1 pressed")
           Sleep (500)
       Case $ctrlButton2
           ToolTip ("button 2 pressed")
           Sleep (500)
       EndSwitch

   $a = GUIGetCursorInfo()
   if IsArray($a) Then
   If $a[4] = $ctrlButton1 Then
       ToolTip ("button1 is selected")
   ElseIf $a[4] = $ctrlButton2 Then
       ToolTip ("button2 is selected")
   Else
       ToolTip ("")
   EndIf
   EndIf

WEnd

 

źródło :

http://www.autoitscript.com/forum/index.php?showtopic=108138

Opublikowano

BÓG ZAPŁAĆ!

Lecą dla ciebie cztery plusy!

 

Pozostały dwa pytania i osiem plusów do zgarnięcia.

 

 

2. Używając stylu $ES_NUMBER dla pola input, umożliwiam wpisywanie tylko numerów. No i fajnie, ale podczas wpisywania liter wyskakuje paskudny "tooltip" przy inpucie. Co zrobić, żeby tego "tooltipa" się pozbyć? Żeby litery po prostu się nie wpisywały, bez żadnych brzydkich-zbędnych informacji "Niedopuszczalny znak"?

 

3. Co zrobić, by cała zawartość pola input zaznaczała się po jednokrotnym kliknięciu LPM? (domyślnie tak się dzieje po dwukrotnym)

 

 

 

(na piąte zdążyłem znaleźć sobie odpowiedź, ale mam wrażenie, że trochę na około, więc gdyby ktoś miał może coś błyskotliwego w sprawie minimalizacji do tray'a po naciśnięciu "_" to również plusiki dam :]

Ta sygnatura jest pusta.

Opublikowano

co znaczy na około?

1 link w google i jest ukrywanie w tray

#NoTrayIcon
#include <GuiConstants.au3>
#include <Constants.au3>

Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)

TraySetOnEvent($TRAY_EVENT_PRIMARYUP,"SpecialEvent")
;TraySetState(2) ; hide --> not needed

GuiCreate("MyGUI", 392, 316)
GuiSetState()

While 1
   $msg = GuiGetMsg()

   Select
       Case $msg = $GUI_EVENT_MINIMIZE
           GuiSetState(@SW_HIDE)
           TraySetState(1) ; show
           TraySetToolTip ("My app - click here to restore")

       Case $msg = $GUI_EVENT_CLOSE
           ExitLoop
   EndSelect
WEnd

Func SpecialEvent()
   GuiSetState(@SW_Show)
   TraySetState(2) ; hide
EndFunc

http://www.autoitscript.com/forum/index.php?showtopic=26581&st=0&p=239968

Opublikowano

Błąd pomiaru :

 

 

$begin = TimerInit()

sleep(3000)

$dif = TimerDiff($begin)

MsgBox(0,"Time Difference",$dif)

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

dziób tukana:

Cztery plusy poleciały (za minimalizowanie do tray'a)

 

Wciąż pozostały dwa pytanka :]

 

I teraz tak mi przyszło do głowy (ale jeszcze wgłębię się bardziej w opcje helpa to może znajdę odpowiedź, bo wiem, że głupie pytanie):

W jaki sposób ustawić obrazek na tło gui? Jeśli rozmiary gui to 600x300, a obrazek ma rozmiary 60x30, muszę go wkleić 100 razy, czy może jest jakiś sposób, by go "zapętlić", jak tapetę na pulpicie przy opcji "sąsiadująco"? ;)

Ta sygnatura jest pusta.

Opublikowano

pętlą for

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

to ze ma 30x60 nic nie znaczy, na gui można wymusić ze będzie miał dowolną wielkość.

albo wkleić 100 razy ten sam obrazek obok siebie.

 

są też metody łączenia wielu obrazków w jeden, powiększania, przycinania, wklejania fragmentów ect... w praktyce da sie zrobić wszytko to co w edytorze grafiki np: takim IrfanView

Opublikowano

zamiast ręcznie wkleić użyć pętli for!

 

 

Pseudo kod :

 

Wklej obrazek na kordach x i y

wklej na kordach x+20 y

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano

o każde powtórzenie zajmuje pamięć i dodatkowe obiązenie procka

lepiej zrobic jeden obrazek o wymaganych rozmiarach jak to pisze dziób tukana

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Okej, pogłębię się z tym obrazkiem w helpie. GDIPlus ma od zarąbania tych funkcji... trochę będzie zabawy ;]

Lecą dla was dwa plusy.

 

A cóż z pozostałymi dwoma pytaniami:?

 

2. Używając stylu $ES_NUMBER dla pola input, umożliwiam wpisywanie tylko numerów. No i fajnie, ale podczas wpisywania liter wyskakuje paskudny "tooltip" przy inpucie. Co zrobić, żeby tego "tooltipa" się pozbyć? Żeby litery po prostu się nie wpisywały, bez żadnych brzydkich-zbędnych informacji "Niedopuszczalny znak"?

 

3. Co zrobić, by cała zawartość pola input zaznaczała się po jednokrotnym kliknięciu LPM? (domyślnie tak się dzieje po dwukrotnym)

Ta sygnatura jest pusta.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...