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] Bezpośrednie Odpalenie Linku Po Wybraniu Z Rozwijalnej Listy


Rekomendowane odpowiedzi

Opublikowano

Witam, otóż sytuacja wygląda tak: jestem tutaj nowy i jestem początkującym "skrypterem" i chciałbym napisać skrypta by automatycznie po wybraniu z listy rozwijalnej odpalała się strona.

Mój skrypt wygląda tak:

 

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

Opt('MustDeclareVars', 1)

placeq ()

Func placeq ()
Local $msg

#Region ### START Koda GUI section ### Form=
GUICreate("placeq", 200, 200, 200, 200, $WS_VSCROLL)
GUICtrlCreatePic ( "C:\Documents and Settings\Rosiu\Pulpit\dksswns10112011.bmp", 5, 34, 47, 20)
GUICtrlCreateCombo("1t", 52, 30, 90, 90)
GUICtrlSetData(-1, "2|3|4|5|6|7")
GUISetState()
#EndRegion ### END Koda GUI section ###

EndFunc

Lecz nie wiem co dalej :/ Proszę o pomoc. Z góry dziękuję :)

Opublikowano

kolejne dziecko koda'y , przeczytaj najpierw tut , myślisz że namalujesz gui i my Ci reszte dopiszemy?

liczylem na barce lecz ona niemogla wygrac.

Przez kibicow ktorzy przy rzutach roznych wolnych swiecili w messiego laserami

Opublikowano
if guictrlread($combo)="1" then
func()
elseif guictrlread($combo)="2" then
func2()
itd...
endif

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano
kolejne dziecko koda'y , przeczytaj najpierw tut , myślisz że namalujesz gui i my Ci reszte dopiszemy?

 

To, że Ty zakumałeś tutka od razu nie znaczy, że wszyscy inni też zakumają.

 

@4ggr35510n, @jackraymund, @lokuxd Dzięki, plusiki lecą.

Opublikowano

poprawie

if guictrlread($combo)="1" then
func()
if guictrlread($combo)="2" then
func2()
if ..
itd...
elseif 
coś tam jak błąd ale nie musi
endif

 

i jeszce jedno :

GUICtrlCreateCombo("", 52, 30, 90, 90)
GUICtrlSetData(-1, "1|2|3|4|5|6|7", "1")

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Sorki, że tak offtopem, ale dlaczego w GUICtrlSetData jako control id jest -1?

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano

No ja też dziękuję, właściwie posługuję się tą drugą opcją (czyli np $cmobo a nie -1) ale tak z ciekawości zapytałem :) O, a jeśli by to było -2 to przyjmowałoby to wartość funkcji napisanej 2 linijki wyżej? (przedostatni stworzony element)

 

Edit

@UP

Dajesz do petli sprawdzanie tego, jaki element jest wybrany, np:

 

$combo1 = GUICtrlCreateCombo("", 52, 30, 90, 90)
GUICtrlSetData(-1, "1|2|3|4|5|6|7", "1")


Func spr()
    While 1
         GUICtrlRead($combo1)
         If $combo1 = "3" Then _FFStart("twoja strona")
    WEnd
EndFunc

 

lub

 

 

$combo1 = GUICtrlCreateCombo("", 52, 30, 90, 90)
GUICtrlSetData(-1, "1|2|3|4|5|6|7", "1")


Func spr()
    While 1
         GUICtrlRead($combo1)
         If $combo1 = "3" Then 
              _FFStart("twoja strona")
              ExitLoop
         ElseIf $combo1 = "2" Then
              _FFStart("inna strona")
              ExitLoop
         EndIf 
    WEnd
EndFunc

I tak przypisujesz każdej wartości inną stronę. Z tym, że drugi przykład ma działanie "jednorazowe"

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano

@UP: To nie wyjdzie z pętli - dałeś while przecież i nie ma działania jednorazowego :)

Na oneventach chyba też można i w funkcję wstawić sensownego ifa tak jak Fli dał, tylko oczywiście wywalić tego while.

Dzięki wielkie, pomogło . Tylko mam pytanie - czy da się zrobić tak, aby link wyświetlał się od razu po wybraniu z listy, czy trzeba robić buttona?

Opt("GUIOnEventMode", 1);to wstaw przed gui
...
$combo = GUICtrlCreateCombo("1t", 52, 30, 90, 90);chyba wiesz co zamienić
...
GuiCtrlSetOnEvent($combo, "spr");najlepiej wstaw po elementach combo
...
Func spr()
Switch GuiCtrlRead($combo)
  case "1"
     _IECreate("adres Twojej strony");dodaj swoje casy
...
EndSwitch
EndFunc; a tą funkcje wstaw byle gdzie
;pisane od ręki

Z tym że na dole kodu programu dodaj coś takiego:

While 1
Sleep(100)
WEnd

roomy.png

Wczoraj do ciebie nie należy. Jutro niepewne... Tylko dziś jest twoje.

Opublikowano

wystarczy użyć case , select albo switch jak pasuje

 

select

case $combo = 1

fun()

case $combo = 2

funfun()

(...)

endselect

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

@Fli_PL zrobiłem tak jak radziłeś, tak wygląda skrypt:

 

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiComboBox.au3>

Opt('GUIOnEventMode', 1)

placeq ()

Func placeq ()
Local $combo, $msg

GUICreate("placeq", 200, 200, 200, 200, $WS_VSCROLL)
GUICtrlCreatePic ( "C:\Documents and Settings\Rosiu\Pulpit\dksswns10112011.bmp", 5, 34, 47, 20)
$combo = GUICtrlCreateCombo("", 52, 30, 90, 90)
   GUICtrlSetData($combo, "1|2|3|4|5|6|7", "1")
GUISetState()

    While 1
         GUICtrlRead($combo)
         If $combo = "1" Then 
              _FFStart("http://bit.ly/")
              ExitLoop
         ElseIf $combo = "2" Then
              _FFStart("http://bit.ly/ecaKD6")
              ExitLoop
         EndIf 
    WEnd
EndFunc

 

Jednak po wybraniu na liście nic się nie dzieje, wiesz może co robię źle?

 

@edit

 

@robem, w takim sensie?:

 

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiComboBox.au3>

Opt('GUIOnEventMode', 1)

placeq ()

Func placeq ()
Local $combo, $msg

GUICreate("placeq", 200, 200, 200, 200, $WS_VSCROLL)
GUICtrlCreatePic ( "C:\Documents and Settings\Rosiu\Pulpit\dksswns10112011.bmp", 5, 34, 47, 20)
$combo = GUICtrlCreateCombo("", 52, 30, 90, 90)
   GUICtrlSetData($combo, "1|2|3|4|5|6|7", "1")
GUISetState()

Select
         GUICtrlRead($combo)
  Case $combo = "1" 
	  _FFStart("http://bit.ly/")
  Case $combo = "2" 
	  _FFStart("http://bit.ly/ecaKD6")
	  Endselect
EndFunc

 

Program wyłącza się tuż o włączeniu.

Opublikowano

No rzeczywiście, mój sposób jest zły. Sorki.

 

@tk - chodziło mi o to, ze po pierwszej zmianie w combo pętla się zatrzyma.

 

EDIT

 

ale to działa:


#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 186, 57, 192, 124)
$Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 145, 25)
GUICtrlSetData(-1, "1|2|3|4|5|6|7")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
spr()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
	Case $GUI_EVENT_CLOSE
		Exit

EndSwitch
WEnd

Func spr()
While 1
	$x = guictrlread($combo1)
	If $x = "1" Then
		TrayTip("bot", "1", 1)
	ElseIf $x = "3" Then
		TrayTip("bot", "3", 1)
	ElseIf $x = "2" Then
		TrayTip("bot", "2", 1)
	ElseIf $x = "4" Then
		TrayTip("bot", "4", 1)
	ElseIf $x = "5" Then
		TrayTip("bot", "5", 1)
	EndIF
	WEnd
EndFunc

 

Nawet nie klikne, ktora opcje ma wybrac a juz traytip pokazuje na czy myszka jest ;)

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano

@Fli_PL dzięki wielkie, działa jak należy, plusik leci. (rozkminić co zrobić aby wczytywało dopiero po kliknięciu spróbuję sam, może dam radę :D)

@tk371 też się przydało, dzięki :P plusik poleci jutro, bo dzisiaj wykorzystałem limit :/

 

 

@edit

@Fli_PL użyłem, użyłem tylko muszę jeszcze kilka rzeczy rozkminić, a tak to git, dzięki wielkie jeszcze raz :)

 

@edit 2

Hmmm, macie może jakąś podpowiedź jak zrobić, aby link otwierał się dopiero po kliknięciu? nie radzę sobie :/

Opublikowano

No jeśli już użyłeś mojego mongolskiego sposobu to nie zapomnij o ExitLoop bo będziesz musiał wyłączać program np przez Managera Zadań :P

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano

@Fli: Fajna sygna :)

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
Opt("GuiOnEventMode", 1)
Global $strona1 = "about:blank"
Global $strona2 = "about:blank"
Global $strona3 = "about:blank"
Global $strona4 = "about:blank"
Global $strona5 = "about:blank"
Global $strona6 = "about:blank"
Global $strona7 = "about:blank"
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 186, 57, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Terminate")
$Combo1 = GUICtrlCreateCombo("", 8, 8, 145, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetOnEvent(-1, "spr")
GUICtrlSetData(-1, "1|2|3|4|5|6|7")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func spr()
Switch GUICtrlRead($Combo1)
	Case "1"
		_IECreate($strona1)
	Case "2"
		_IECreate($strona2)
	Case "3"
		_IECreate($strona3)
	Case "4"
		_IECreate($strona4)
	Case "5"
		_IECreate($strona5)
	Case "6"
		_IECreate($strona6)
	Case "7"
		_IECreate($strona7)
	Case Else
		MsgBox(64, "Błąd", "Błąd z odczytem danych z combo", 0, $Form1)
EndSwitch
EndFunc
Func Terminate()
Exit
EndFunc
While 1
Sleep(100)
WEnd

Też działa - i nawet otwiera strony :)

Otwiera się dopiero po wybraniu z listy - no chyba, że chodziło Ci o buttona wtedy trzeba zmienić tego oneventa otwierającego funkcję send, aby był podpięty pod buttona.

Oczywiście tam gdzie masz te about:blank podmieniasz na adres strony

roomy.png

Wczoraj do ciebie nie należy. Jutro niepewne... Tylko dziś jest twoje.

Opublikowano

code tk371 powinno dać ci satysfakcjonujące wyniki

 

P.S.: Dzięki :P

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano

Sory za oftop ale założycielowi proponowałbym przeczytać kurs "Jak nazywać poszczególne elementy GUI"tongue.gif

stop1.png

pierdl szysko, fotographój tap madl!

Opublikowano

@tk371 Zaje**ste, o to dokładnie mi chodziło, plusik poleci od razu jak tylko będę mógł dać (wykorzystałem dzisiejszy limit :( ).

Dzięki wielkie wszystkim za pomoc :).

 

@wojtekch przeczytam jak tylko znajdę czas :).

 

Temat do zamknięcia.

Opublikowano
a jeśli by to było -2 to przyjmowałoby to wartość funkcji napisanej 2 linijki wyżej?

 

Nie.

-1 (lub keyword Default) jest specjalnym przypadkiem.

 

czy da się zrobić tak, aby link wyświetlał się od razu po wybraniu z listy (...)

Hmmm, macie może jakąś podpowiedź jak zrobić, aby link otwierał się dopiero po kliknięciu? nie radzę sobie :/

 

_GuiCtrlListView_Create() i GuIRegisterMsg() na WM_NOTIFY. Dalsza obróbka WM_NOTIFY pokazana w help'owym przykładzie _GuiCtrlListView_Create. Bardzo łatwo wyłuskać kliknięcie użytkwonika na element ListView i pobrać ID konkretnej, klikniętej komórki.

 

Jednak po wybraniu na liście nic się nie dzieje, wiesz może co robię źle?

 

Apeluję - nauczcie się debugować własne programy!

 

Dodanie dwóch linijek kodu do pętli While nie zabiłoby Cię, a pozwoliłoby się zorientować, co robisz źle i gdzie tkwi błąd.

 

ConsoleWrite prawdę Ci powie.

 

    While 1
         GUICtrlRead($combo)
         If $combo = "1" Then 
              ConsoleWrite('+ Wybrano pierwszy element, przystępuję do tworzenia obiektu Firefoxa'); 
              _FFStart("http://bit.ly/")
              ExitLoop
         ElseIf $combo = "2" Then
              ConsoleWrite('+ Wybrano drugi element, przystępuję do tworzenia obiektu Firefoxa'); 
              _FFStart("http://bit.ly/ecaKD6")
              ExitLoop
         EndIf 
    WEnd

 

 

ale to działa:

 

Ale nie działa dobrze.

Dwie pętlę nieskończone, bez możliwości przerwania pierwszej. Bajzel w kodzie i brak reakcji na próbę wyjścia z programu przez użytkownika ([X]).

Ta sygnatura jest pusta.

Opublikowano

Ale nie działa dobrze.

Dwie pętlę nieskończone, bez możliwości przerwania pierwszej. Bajzel w kodzie i brak reakcji na próbę wyjścia z programu przez użytkownika ([X]).

 

No jeśli już użyłeś mojego mongolskiego sposobu to nie zapomnij o ExitLoop bo będziesz musiał wyłączać program np przez Managera Zadań

czwartkowy posmak w ustach przypomina
że nie ma sensu owijać w bawełnę
zmarzniętego truchła

przez latarnię ktoś przerzucił sznur
cumuje statek w bezpieczną przystań

czuję jak na skroniach zasycha sól
...

Opublikowano

jak się komuś nie podoba używanie consoli zawsze może użyć deburgera do AutoIt

http://www.thefoolonthehill.net/drupal/AutoIt%20Debugger

 

z ciekawszych opcji widać krok po kroku jak wykonywany jest skrypt, jak zmieniają się dane w zdefiniowanych zmiennych itp , więc dla początkujących się przyda

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...