Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Problema activare Xbox live gold ...

Fluierat Astra H 1.9 CDTI

Excel - Intrebare referitoare la ...
 Caut dentist care sa pune plombe ...

Grinzi suspendate

BluRay Player 4k

Calorifer
 Dovada talon

Denumire Club de Noapte

Știri legate de Stația ...

Sfat achizitie componente
 Locul unde se salveaza jocurile

Analizator antena Ringexpert

Spionul - The Spy (2019)

Versuri melodie
 

Event-uri Cross form - VB.net

- - - - -
  • Please log in to reply
11 replies to this topic

#1
SVAndrei

SVAndrei

    Junior Member

  • Grup: Members
  • Posts: 77
  • Înscris: 02.03.2007
Salut.

Am urmatoarea dilema.

Am o aplicatie formata din 2 form-uri. Un form principal, si unul secundar. Formul principal ruleaza intotdeauna, cel secundar doar la cerere. (apasare de buton).

In formul principal, exista un obiect, care la un moment dat ridica un event. Exista vreo posibilitate ca acest event sa fie detectat de form-ul secundar, atunci cand acesta este deschis? Mentionez ca natura aplicatiei cere ca acest lucru sa se intample DOAR la ridicarea eventului, deci un timer care sa caute periodic schimbarea aceasta nu este viabil.

Am vazut multe tutoriale care arata cum se detecteaza un event lansat de formul secundar si prins de cel principal, dar eu am nevoie de situatia inversa. Din nou, natura aplicatiei face acest comportament necesar, deci nu exista posibilitatea modificarii modului de functionare pentru a evita aceasta problema.

Multumesc.

#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 28,237
  • Înscris: 10.08.2005
ai acces la codul sursa?

#3
SVAndrei

SVAndrei

    Junior Member

  • Grup: Members
  • Posts: 77
  • Înscris: 02.03.2007
Da. De fapt aplicatia e mult mai masiva, dar problema particulara se poate reduce la cea prezentata.

#4
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006

 SVAndrei, on 9th May 2012, 08:29, said:

Am vazut multe tutoriale care arata cum se detecteaza un event lansat de formul secundar si prins de cel principal, dar eu am nevoie de situatia inversa.

Ce inseamna (din punct de vedere al programarii, al logicii) principal si secundar?
Cum identifici principalul si secundarul?

#5
SVAndrei

SVAndrei

    Junior Member

  • Grup: Members
  • Posts: 77
  • Înscris: 02.03.2007
Formul principal, in viziunea mea este formul care este tot timpul deschis, ecranul main al aplicatiei, sa zicem asa. Este formul care se apeleaza la deschiderea aplicatiei, si se inchide doar la inchiderea aplicatiei.

Cel secundar este un form care poate fi apelat la cerere, de exemplu printr-un buton. De exemplu, formul secundar poate fi un form care permite accesul la setarile aplicatiei.

#6
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006
Nu ai raspuns la ce te-am intrebat eu (de fapt scopul intrebarii, odata raspunsul dat, era sa te ajute in a intelege ce ai de facut).
In ce mi-ai raspuns form-ul principal e principal pentru ca asa il consideri tu*.
La fel de bine, pentru mine, din punct de vedere al logicii aplicatiei (de exemplu) pot sa consider primul form deschis drept secundar, resepctiv cel deschis plecand din el, principalul.
Sau pot sa nu am nici un form deschis implicit.
Intrebare ramane: ce-l califica sa fie principal respectiv secundar? Daca vrei, mai corect spus parinte <-> copil (si retine cum am desemnat relatia!).

Si atunci, cata vreme stii sa "parcurgi drumul" parinte > copil ce te impiedica sa faci calea intoarsa, copil > parinte?

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 28,237
  • Înscris: 10.08.2005
http://msdn.microsof.....v=vs.71).aspx

#8
SVAndrei

SVAndrei

    Junior Member

  • Grup: Members
  • Posts: 77
  • Înscris: 02.03.2007
Presupun ca formul secundar este secundar deoarece este apelat din formul main. Adica in timpul functionarii normale a aplicatiei, cel secundar nu va putea exista fara ca cel principal sa existe.

De aceea handlingul pentru eventul din respectivul obiect se face in formul principal, deoarece acesta este deschis tot timpul.

Singura problema cu acest aranjament este ca nu pot prinde respectivul event generat de obiectul din main pe cel secundar. Obiectul in sine implementeaza o clasa la care nu am acces, singurul element de interfata fiind acel event. Obiectul e declarat Public WithEvents, iar pe formularul principal, unde obiectul este creat eventul se prinde fara nici o problema.

#9
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 28,237
  • Înscris: 10.08.2005
Private Sub chestie_Event()
REM scdForm call
End Sub

Edited by MarianG, 09 May 2012 - 09:00.


#10
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,255
  • Înscris: 24.02.2007
http://msdn.microsof.....v=vs.71).aspx

Cand creezi form'ul secundar bagi AddHandler spre o functie din formul secundar, cand inchizi form'ul secundar dai RemoveHandler fiindca nu mai trebuie tratat event'ul de form'ul secundar.

Edited by dani.user, 09 May 2012 - 12:29.


#11
bgMiKe

bgMiKe

    Junior Member

  • Grup: Members
  • Posts: 149
  • Înscris: 28.01.2006
Las la o parte faptul ca nu vrei sa te gandesti la ce te-am intrebat.
Se pare ca oricum nu e (foarte) relevant pentru cazul tau sau nu te intereseaza.
Revin la ce-ai spus in post-ul original:

Quote

Am vazut multe tutoriale care arata cum se detecteaza un event lansat de formul secundar si prins de cel principal, dar eu am nevoie de situatia inversa.
Cu scuzele de rigoare .. ai vazut multe dar n-ai inteles (mai) nimic.
Nu exsita situatie inversa sau directa.
Simplu si la obiect: ai un eveniment declansat de un obiect apartinand unui form (unui modul) pe care vrei sa-l tratezi (???) intr-un alt modul (form).

(in form1)
on_event (params) {
	if (form2) {
		// do whaever you need 
	}
}
Nu-i ok/suficient? ... atunci ar trebui sa dai mai multe detalii.


In fine... nu cred ca are rost s-o mai lungim.
Cum esti la inceput (si nu cred ca ma insel), iti recomand sa-ti arunci un ochi, din cand in cand, pe asta: Programming with MS VB6
Uite si un fragment ...

Quote

This mechanism is also known as event multicasting. This term means that an object can raise events in all the client modules containing a WithEvents variable that points to that object. This might seem to be a negligible detail until you see how far-reaching its consequences are.

As you all know, a form module is always able to trap events from its own controls. Before multicasting, trapping controls' events in the parent form's module was the best thing a programmer could do. Well, it probably is still the best thing that you can do with events, but surely it isn't the only one. In fact, you can declare an explicit object variable, let it point to a particular control, and use it to trap that control's events. The multicasting mechanism ensures that the variable receives the event notification wherever it is declared! This means that you can move the variable to another module in the program (or to another form, or class, or actually anything but a standard BAS module) and still react to all the events raised by the control


#12
SVAndrei

SVAndrei

    Junior Member

  • Grup: Members
  • Posts: 77
  • Înscris: 02.03.2007
Multumesc pentru ajutor. Intr-adevar, sunt la inceput, si presat de timp.

De asemena multumesc si pentru articol, il voi salva in folderul de referinte.

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate