
Visual Foxpro - modeless formulare - problem s blokovanim ostatnych formularov
Zdravim,
neviem, ci sa tu najdu nejaky fox programatori, lebo potrebujem poradit v nasl.
viem vytvorit viacero nezavislych modeless formularov (on top) a da sa medzi nimi nezavisle robit, ale az do okamziku, ked niektory z tych formularov zacne nieco pocitat - napri.caka 20 sekund cyklus.
Vtedy aj ostatne modaless formulare su nedostupne, a cakaju, ked skonci ten jeden s pocitanim v metode.
otazka: ako dosiahnut nezavislost formularovych vlakien, aby ked aj v jednom vlakne (formulari modaless sa pocita) to neovplyvnovalo ostatne formulare (aby sa dalo aj v inych nieco robit)
dufam, ze som to napisal akotak zrozumitelne a z sa najde niekto, kto ma nasmeruje na riesenie.
vopred diky
P.S. ide VFP90 demo
Ahoj. VFP neznám, používají se vlákna.
Mělo by stačit danou operaci (nastartovanou z formuláře) založit v novém, separátním vlákně.
diky za ochotu a radu, len prave to neviem este ako s tymi vlaknami, tiez nie som vo vfp moc zbehly, ale toto potrebujem vyriesit pre jeden konkretny program.
dik.
Jsem neprogramátor, VFP neznám.
Obecný postup při tvorbě vlákna je ten, že se odvodí třída pro nové vlákno od obecné třídy pro tvorbu vláken.
Této odvozené třídě potom nastavíš funkci (tedy co se má v rámci tvého vlákna vykonat) a zavoláš nějakou metodu té tvé třídy vlákna, která zahájí práci.
Vlákno je možno kdykoliv ukončit, a lze nějakým způsobem i předávat informace z něj jiným vláknům.
Doporučuji manuál či Google a hledat něco jako new thread VFP.
dik za tip,
dobre, este musim zistit, ci foxka vobec ma obecnu triedu pre tvorbu vlakien ( mozno ani nie (: )
zatial som nasiel nejake pomocne dlls na nasl. linku a truchu to studujem:
http://www.geocities.com/rremus/multithreaded_vfp.h tm#HowItWorks
VFP je na tohle hloupé. Je to dobrý jazyk na práci s databází, pokud máš jeden formulář. Ale jakmile jej chceš použít na něco trochu jiného, dělá se to hrozně blbě. To byl také důvod, proč jsme od VFP odešli, když jsme přecházeli z DOSu na Windows.
mate pravdu,
tie pomocne dlls (ako skrabanie sa pravou rukou za lavym uchom), ale mozno to pojde :)
inak vfp vie robit multith.. dlls apod. este to musim nastudovat (build dlls)
Jeden formulář a pak blbě? Můj táta udělal celej soft pro fabriku ISO, naprosto v pohodě, ve VFP. A tam je hafo formulářů a pěkně mu to jelo... Řádek po řádku.
Tazatel psal o něčem jiném. Jemu běží dotazy současně v několika formulářích - v jednom např. spustí dotaz a chce mezi tím pracovat v jiném. To, co popisuješ ty, je klasická aplikace, na kterou je VFP projektované a bude to běžet naprosto bez problému se stovkami formulářů.
Nevím jak to máš navržené, a jak to pracuje ale řešením je Datasession a nezávislé cursory tvořené např. dotazy - hledej v nápovědě.
Prostředí VFP je klasická MDI aplikace, která se dá "zlomit" tak, aby neukazovala hlavní form na pozadí, ale základ stále zůstává. Tkaže obsahuje pouze jedno vlákno a jakmile provádíš nějaký dotaz, aplikace prostě "čeká", až dotaz skončí
medzitym sa mi to nejako podarilo cez volanie druhej vfp.exe aplikacie
cez RUN /n apl2.eze (t.j. necaka na ukoncenie apl2, len vytvori novy nezavisly EXE proces, co som chcel)
len bohuzial neviem jednoducho manipulovat z premennymi z jednej aktivnej VFP aplikacie EXE do druhej aktivnej VFP EXE palikacie, tak som to vyriesil trapne cez zapis do suboru a citanie zo suboru.
robil som aj COM servre, lenze tie pristupy k premennym su na neaktivne premenne servera, nie na aktivny VFP EXE proces aplikacie2, takze to neslo tak prenasat,
mozno mi niekto poradi, ako sa dostat do aktivneho procesu k premennym z jednej akt. VFP.EXE apl do druhej VFP EZE apl. to by bolo super, len dufam, ze to nebude treba cez c++ :)
vopred diky.
Přímý přístup bych moc nedoporučoval. Ve Windows se tohle řeší formou zpráv, data se dají přadávat pomocí zprávy WM_COPYDATA
Můžeš to udělat i složeně - vytvoříš soubor a pomocí jednoduché zprávy aplikaci oznámíš, že má soubor nebo záznam v DB nebo zápis v registrech zpracovat.
diky za super tip,
idem googlit WM_COPYDATA