Visual Basic - Szoftverfejlesztés fórum

üzenetek

hozzászólások


Victorius
(tag)

Sajnos kipróbálni még nem tudtam, de azt javaslom, hogy azt az a változót pedig próbáld meg modulszinten globálisnak deklarálni:

public a as boolean

Ezt úgy írd be, hogy a form kódszerkesztő ablaka fölötti választóban válaszd ki a (General)-t. (Ekkor a jobbra elhelyezkedő választóban a (Declarations) jelenik meg.)

Sik sikert!


Victorius
(tag)

Ja, még a goto-hoz: ha csak számot adsz meg címkének (a la Commodore basic), akkor nem kell utána kettőspont.


Victorius
(tag)

Ja, még a goto-hoz: ha csak számot adsz meg címkének (a la Commodore basic), akkor nem kell utána kettőspont.


ollie
(MODERÁTOR)
Blog

A gomb on Click eseményébe kell beletenni a kódrészt (ha a form sezrkesztőben rákkattintasz 2x a gombra, akkor automatikusan oda tesz a kódban), bár úgy tűnik, hogy ott is van az általad bemásolt kóda lapján. Viszont honnan tudod, hogy nem fut? Ránézésre semmit sem jelez ki program, szóval akár futhat is a nélkül, hogy tudnád. Tegyél be a végére egy msgbox függvényt, hogy lásd, hogy lefutott e.


sonar
(addikt)
Blog

Helló!

Nos kicsit előbbre jutottam miközben a könyvet lapozgattam.
Rájöttem, hogy a Do Loop ciklus helyett a While --wend páros nekem a megfelelőbb. És arra is rájöttem, hogy miért nem reagált semmire se a start se a stop gomb. A megoldás egyszerű: létre kell hozni egy eljárást (add procedure) és a start/stop rutin végére oda kell bigyeszteni ennek az eljárásnak a nevét és akkor már frankó lesz. De még mindig van egy kis gondom: hogy ugye nekem a start lenyomása után a stopra már nem reagál, mert bent ragad a while wend ciklusban. Szerintem a gomb vmelyik tulajdonságának megváltoztatásával lehetne ezt orvosolni v nem?
Így néz ki a progi:
(Értelmet ne keressetek benne, csak otthon tanulok programozni!)

Dim X As Double, Y As Double, z As Double, ala As Boolean

Private Sub Command1_Click()

ala = True
Szamol

End Sub

Private Sub Command2_Click()

ala = False
Szamol

End Sub

Public Sub Szamol()

While ala = True
For X = 1 To 793479731 Step 0.1
Y = X * X
z = 2 * X - Y * 1.5
Next
Wend

End Sub

Azt kérdem még, hogy a következő Button tulajdonságok pontosan mit is jelentenek:
Cancel :True/False
CausesValidation
TabIndex
Tabstop
Tag
Előre is köszönök újfent minden hasznos információt.
>>>I wish you a Merry Christmas!<<<


sonar
(addikt)
Blog

Az nem jó ha a klikk részbe teszem! Mert ez folyamatosan megy és akkor nem reagál a másik gombra. És az esély sincs meg rá hogy reagáljon, mert nem lép ki abból a sub ból. Vagy rosszul gondolom?


Victorius
(tag)

Hát, az az igazság, hogy rábukkantam valamire, de jó szokásomhoz híven kipróbálni nem tudtam. Szóval lehet, hogy erre van szükséged:

DoEvents()

''Az utasításként használt függvény egy esemény feldolgozásának idejére átadja a vezérlést az operációs rendszernek. Használata esetén a program ugyan lassabban működik, de a formok fogadják a beavatkozásainkat.''

A súgó (többek között) ezt írja:

''DoEvents is most useful for simple things like a l l o w i n g a u s e r to c a n c e l a p r o c e s s a f t e r i t h a s s t a r t e d, for example a search for a file.''

A használatához nézd meg a példát a súgóban (vagy kérdezz meg egy nálam okosabbat...:)).

Remélem, tudtam segíteni.


sonar
(addikt)
Blog

Ezt kicsit kifejtenéd? (kicsit hülye vagyok még )


Victorius
(tag)

Az a helyzet, hogy én is az voltam eddig :)

Kipróbáltam ezt itt alant, és a stop gombra megállt!

Szóval:

Private Sub Indit_Click()
Dim a As Long
Dim b As Long
Dim c As Long
Dim openforms

Do
a = 0: b = 0: c = 0
If megall = True Then Exit Do
Do
b = 0: c = 0
a = a + 1
If a = 1000000000 Then Exit Do
If megall = True Then Exit Do
sz1.Caption = Str(a)
Do
c = 0
b = b + 1
If megall = True Then Exit Do
If b = 1000000000 Then Exit Do
sz2.Caption = Str(b)
Do
c = c + 1
If c = 1000000000 Then Exit Do
If megall = True Then Exit Do
sz3.Caption = Str(c)
If c Mod 1000 = 0 Then openforms = DoEvents()
Loop
Loop
Loop
Loop

vege:
End Sub


Hmm, hát ha azt mondod, kicsit eltúloztam a ciklusok számát, nyilván igazad van... (meg biztosan nem is túl szép a kód).

Tehát ez volt az indítógomb eljárása. A megállító csak annyit tartalmaz, mint a tiéd (átállítja igazra a megall változót).

Apropó megall változó. Hiányolhatod, hogy hol deklaráltam. Létrehoztam egy külön modult csak ennek a kedvéért:

Public megall as boolean

Ez azért van így, mert csak itt lehet globálisan deklarálni egy változót. Persze elképzelhető, hogy nem kell ennyire túlbonyolítani, de nálam csak így akaródzott menni.

Szóval ez a bizonyos DoEvents() utasításként is alkalmazható, de függvény formájában kell meghívni (és jelen esetben tökmindegy, mivel tér vissza).

Jó munkát!


Victorius
(tag)

Elnézést, az elején a Dim-ek alól kimaradt egy értékadás:

megall=false

(Volt ott még egy msgbox, meg egy goto is (azért van a rutin végén cimke), és kitöröltem azokkal együtt.)


sonar
(addikt)
Blog

Köszi! Majd kipróbálom


PWR
(aktív tag)

SEGICCSEEEG!!! :)

haat szivok! Problem: access 200-ben csinaltam egy query form-ot. mikor a luzer a Query gombra kattint, szerentem leellenörizni, hogy legalabb egy search criteria meg lett-e adva. Ezt ugy neznem meg, hogy if fieldname.value = 0 then stb. De nem müxik, valahogy a VB mashogy ertelmezi az üres mezöt mint en! Alapertelmezett erteknek megadtam a fieldbe ''emty string''-et, Null-t, nem megy! ugyse, hogy if fieldname.value is null. Pliiz HELP!


PWR
(aktív tag)

UP


PWR
(aktív tag)

odaig jutottam el, hogy van egy clear gomb, ami minden fieldet kitöröl, azaz empty stringet helyez a fieldbe es a form betöltödesekor is vegig ''empty stringeli'' a fieldeket. ez viszont felvetett egy ujabb problemat: ha kitörlöm egy field tartalmat nem a clear gombbal, akkor annak tartalma nem empty string lesz es igy befolyasolja a keresest is. a megoldas valami olyan lenne, ha lehetne ellenörizni, hogy a fieldben most empty string van-e vagy abszolut semmi (is null). A gaz az, hogy az (if fieldname.value is null) ''object required'' hibaüzivel leall... van erre valami megoldas? csak kell lennie...


Goose-T
(veterán)
Blog

Hali! Nem tudja valaki, mi annak a controlnak a neve, amivel file-t lehet megnyitni? Arra a formra lenne szükségem, ami bármelyik programban megjelenik, amikor rányomok a File menüben az Open pontra! Vagy ez valamelyik objektumnak a metódusa? Nem akarom a DirListBox-ot meg a társait használni, mert kőgagyik...


Lambda
(tag)

Microsoft Common Dialog Control 6.0 componentben van és CommonDialog a neve :) használatáról nézz msdn-t de nem nagy dolog.


sonar
(addikt)
Blog

Helló Victorius

Nos mostanság nem igazán voltam a VB-vel elfoglalva.
Kipróbáltam, de vmi miatt nekem nem akart menni.
Ezeknél a soroknál mindig megállt: sz1.Caption = Str(a)
sz2.Caption = Str(b); sz3.Caption = Str(c)
Mit jelentenek ezek a sorok? Esetleg nem tudnád elküldeni egy rar-ban
ami neked működik.

üdv sonar


Goose-T
(veterán)
Blog

Köszi, közben rájöttem én is, feltúrtam az MSDN-t. :) Tényleg nem nagy cucc! Csak furán van megoldva.


Victorius
(tag)

Sonarr: Azok a sorok, illetve az str függvény használata, lehet, hogy fölösleges...

Elvieg arra jó, hogy a számból füzért (stringet -> str) csináljon, és azt rakja bele a label vezérlő Caption tulajdonságába (vagyis kiírja a képernyőre).

Lehet, hogy a Visaul Basic automatikusan megcsinál egy csomó típuskonverziót, köztük ezt is. Viszont a tudós könyvem azt írja, hogy ezeknek a konverzióknak nem mindig az az eredménye, amire mi gondolunk, amit mi szeretnénk, és így ravasz hibákat eredményezhetnek. Jelen esetben lehet, hogy nem lehet többféleképpen értelmezni és oknvertálni) ezt a kifejezést, de én azért az egyértelmű ''megfogalmazást'' szeretném megszokni.

A forrást küldöm!


Victorius
(tag)

Nekem is lenne egy kérdésem.

Meg szeretném nézni egy Word dokumentumban a VB rutinokat, de a projekttallózóban nem is engedi megnyitni magát a projetktet sem arra hivatkozva, hogy ''zárolva van''.

Jelszóval védettel már találkoztam, az OK. De ez ellen lehet valamit tenni?

üzenetek