Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Czy można zatrzymać pętlę D0 ... LOOP klawiszem.
anonim




Typ: Nie zarejestrowany
Czy można zatrzymać pętlę D0 ... LOOP klawiszem.

Co można wpisać w pętlę:
Do
...
...
Loop
żeby możnaby ją zatrzymać np. przez naciśnięcie klawisza lub kontrolki.

01-09-2003 10:59
  
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

jasne jest na top wiele sposobow

01-09-2003 11:21
Pokaż profil kicaj  Wyślij email do kicaj        3914568
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

Ten chyba jest najprostszy:
wstaw sobie CommandButton'a

Dim jest As Boolean

Private Sub Command1_Click()
jest = False
Do
a = DoEvents() ' oddanie sterowania do systemu
If jest = True Then Exit Do
Loop
Beep 'tak zebys wiedzial ze juz wyszedles z petli
End Sub

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 17 And Shift = 2 Then jest = True
'jesli nacisniesz lewy Ctrl to wyjdzie z petli, wstaw sobie cos innego.
End Sub

Uwazaj bo DoEvents() jest troche niebezpieczne, bo nigdy nie wiesz czy petla nie jest czasem wykonywana kilka razy. Ale to tez da sie naprawic

01-09-2003 11:51
Pokaż profil kicaj  Wyślij email do kicaj        3914568
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

Ten inney sposob przez API nie wiem czy dziala ale moze byc lepszy
zamiast if jest= true then
wstaw if GetKeyState( jakis kod) = 1 then
pobaw sie to napewno do czegos dojdziesz

znadziesz go w API32_PL

01-09-2003 11:55
Pokaż profil kicaj  Wyślij email do kicaj        3914568
napadlek
Ciapek



Typ: neutral
Postów: 117
Zarejestrowany: Feb 2003
Ach te zmiany...

Bylbym napisal stary sprawdzony sposob z QBasic, ale niestety zdazylem go sprawdzic:
DO
LOOP UNTIL INKEY$<>""

Az sie lza w oku zakreci ...
Ale sadze ze funkcja API bedzie potrafic zastapic stary dobry inkey:

Do

Loop Until GetKeyState(nr)<>0

Sprawdz to nie sprawdzalem ale moze jeszcze sprawdze


_____________________________________________
www.napadlek.prv.pl ruszyla od nowa zapraszam

02-09-2003 19:41
Pokaż profil napadlek  Wyślij email do napadlek   Odwiedź stronę napadlek       3392810
anonim




Typ: Nie zarejestrowany

U mnie  GetKeyState() działa dopiero po wyjściu z pętli.
DoEvents()  byłaby dobra, ale trochę spowalnia program i na ekranie widać co robi pętla, a to wygląda trochę nieciekawie.
Ale dzięki.

03-09-2003 07:58
  
kicaj




Typ: neutral
Postów: 271
Zarejestrowany: Aug 2003

powiem tylko jedno "personne n'est pafait"

03-09-2003 11:24
Pokaż profil kicaj  Wyślij email do kicaj        3914568
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002

anonimie dobra rada: nie dawaj czegoś w stylu:

do while
...
doevents
...
loop

tylko

do while
a=a+1
if a=1 then
a=1
doevents
end if
loop

wywoływanie doevents co 10/100/1000 przebiegów pętli jest dobrym pomysłem a i progs nie będzie się wlekł


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

03-09-2003 16:13
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
Abi




Typ: neutral
Postów: 18
Zarejestrowany: Mar 2003

Dlatego anonim, bo dzieciaki tak grzbią w kąpie, że nie mogę się zalogować.
Co do pętli to właśnie tak zrobiłem, a że obsługuje ona Dbgrid to dane po prostu skaczą.
(SQL tego nie załatwi - wydłubywanie pojedyńczych słów z pól memo i ich zliczanie)

03-09-2003 22:57
Pokaż profil Abi  Wyślij email do Abi   
Abi




Typ: neutral
Postów: 18
Zarejestrowany: Mar 2003

Koniec problemów. Wystarczyło przekazać Focus innej kontrolce.

04-09-2003 13:34
Pokaż profil Abi  Wyślij email do Abi   
Wszystkich odpowiedzi: 9 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1