< návrat zpět

MS Excel


Téma: FormControls MouseMove rss

Zaslal/a 22.9.2014 13:35

Ahoj lidi! Ve Formu mám nějaké Controls(TextBoxy) a k nim přiřazeny EventPrc(Mouse_Move). Z těchto EventPrc. volám další proceduru, které musím předat info o který Control(Object) se jedná. Jak získat v té událostní proceduře daný infoObject?

Zaslat odpověď >

Strana:  1 2   další »
#021620
avatar
ja by som to riesil invidualne a kazdy objekt by som si zvlast namapoval tj.

napr:
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
aInfo("Label1")
End Sub

Private Sub Label2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
aInfo("Label2")
End Sub
citovat
#021621
avatar
To jo, to je jasné. Jen jsem chtěl vědět, jestli neexistuje něco na způsob "Call Prc (ActiveControl)". Tady ten ActiveControl je samozřejmě nesmysl. Našel jsem na GG řešení, ale připadá mi zbytečně složité, přes Event v Modulu Třídy. Asi zůstanu u původního, je stejné jak uvádiš.citovat
#021623
avatar
To na co se asi ptáš (nevím to jistě, ten těsnopis se docela špatně luští), jsi zřejmě našel: vytvoříš třídu se zapouzdřeným textboxem a v ní potřebnou obsluhu události.

Nic složitého na tom není, naopak.

Problém může být jen mentální.

Někde, obvykle při inicializaci musíš vytvořit objekty se svou třídou a do ní zapouzdřit ty textboxy. Pokud textboxy vhodně pojmenuješ, lze to udělat cyklem. Deklarace jednotlivých objektů se dá nahradit deklarací pole nebo collection, do kterých vytvořené objekty vložíš (kvůli úklidu).

Obvykle jde jen o pář řádků kódu a získáš univerzální jednotnou obluhu potřebných událostí na jednom místě.citovat
#021625
avatar
Teď si mě Lubo mo-mentálně naprd. Schválně to zkusím. Dík.citovat
#021626
avatar
Lubo díky za vyhecování. Máš pravdu, je to parádní.citovat
#021635
avatar

lubo napsal/a:

Obvykle jde jen o pář řádků kódu a získáš univerzální jednotnou obluhu potřebných událostí na jednom místě.

Zapojím se do tématu. Takové řešení by mě docela zajímalo, ale tajenku od luba jsem nevyluštil, nemám na to potřebný level.
Uvítal bych, jestli je to možné, těch pár řádků kódu jako příklad.
Příloha: zip21635_priklad1.zip (27kB, staženo 21x)
citovat
icon #021637
eLCHa
UserForm2:Dim txt1 As New Class1, txt2 As New Class1, txt3 As New Class1, txt4 As New Class1

Private Sub UserForm_Initialize()
Set txt1.txtUni = TextBox1
Set txt2.txtUni = TextBox2
Set txt3.txtUni = TextBox3
Set txt4.txtUni = TextBox4
End Sub

Private Sub CommandButton1_Click()
Set txt1 = Nothing
Set txt2 = Nothing
Set txt3 = Nothing
Set txt4 = Nothing

Unload UserForm2
End Sub

Class1:Public WithEvents txtUni As msforms.TextBox

Private Sub txtUni_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
UserForm2.Label1.Caption = txtUni.Name
End Sub


Další události pro jednotlivé textboxy už definujete přímo v modulu třídy a nemusíte to dělat x-krát v mudulu formuláře

edit:
pokud je těch textboxů více - 10, 20 atd - je už v podstatě nereálné dělat to bez modulu třídy
v tom případě ani nedefinujeme 10, 20 atd proměnných, ale samozřejmě pole o 10, 20 atd prvcích typu Class1citovat
icon #021639
eLCHa
Mno a protože mám trochu času, tak v cyklu by to vypadalo takto - UserForm2Dim txtS() As Class1

Private Sub UserForm_Initialize()
ReDim txtS(1 To 4)

Dim I As Byte
For I = 1 To 4
Set txtS(I) = New Class1
Set txtS(I).txtUni = Me.Controls("TextBox" & I)
Next I
End Sub

Private Sub CommandButton1_Click()
ReDim txtS(0)

Unload Me
End Sub
S tímto kódem už je Vám skoro jedno, kolik těch textboxů tam máte ;)citovat
#021640
avatar
Děkuji. Objevily se přede mnou nové obzory, ale jsou hooodně daleko.
Nějak jsem to rozchodil, ale otázek by bylo... chtěl bych si ujasnit:
Set txt1.txtUni = TextBox1txt1 je název nově vytvořeného objektu?
txtUni je název nově vytvořené události v modulu class? nebo co tento název představuje?
Znám zápis: Set proměnná=objekt , proměnná.něco se vztahuje jen k tomu modulu Class nebo se dá použít vždycky, a na co?
Příloha: zip21640_priklad2.zip (31kB, staženo 22x)
citovat
#021649
avatar
Nevěděl by někdo, proč při tomto řešení Events je "Private Sub objTXT_Enter()" nefunkční? Zkusil jsem ty TXT i v Kolekci i v Poli a nic. Ostatní Události OK ?!citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse