< návrat zpět

MS Excel


Téma: blikání label(ů) na UserForm rss

Zaslal/a 20.11.2013 21:59

Dobrý večer. Mám vytvořen formulář a na něm několik ovládacích prvků typu "label". Pomocí událostní procedury "MouseMovie" se mění jejich barva při najetí kurzorem tak, aby bylo vidět, co je vybráno. Pokud šipka sjede z ovl. prvku, vrátí se barva na původní, stejnou procedurou podkladového formuláře. Oč mi jde...? Jak jsem tak stále přidával další a další "labely", postupně se stalo, že při pohybu nad formulářem, (podkladem), zřejmě nestíhá PC překreslovat jejich barvy na původní tak, aby při tom neblikaly všechny "zúčastněné" labely. A ptám se tedy, jak navrátit "labelům" jejich původní barvu při "sjetí z nich kurzorem" jinak, nežli procedurou "MouseMovie" formuláře.(podkladu) ..třeba s využitím modulu třídy, vlastnosti determinate, napadá mě, ale nevím, nevím. Dík Roman

Zaslat odpověď >

#016458
Opičák
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim ctl As Control
For Each ctl In UserForm1.Controls
ctl.BackColor = &H8000000F
Next
End Sub

není to jinak, ale píšeš, že vracíš barvu stejnou procedurou, takže vracíš barvu řádek po řádku všem prvkům nebo takto jak je to výše?citovat
icon #016459
eLCHa
Mám na listu rozbalovací menu, ve kterém toto dělám ;)
Kód vám tu nedám, ale princip prozradit můžu ;)

Ano je lepší využít modul třídy, protože jinak byste musel vytvářet událost pro každý label.
Abyste nemusel cyklem projíždět všechny labely pokaždé, když pohnete myší, uložte si někde název labelu, kterému jste barvu změnil (na kterém zrovna jste) - nestačí totiž např říci, že když jedu z jednoho labelu na druhý, tak jsou to vždy ty vedle sebe, při rychlém pohybu můžete nějaký přeskočit - vyzkoušeno ;)
mno a potom je to jednoduché - zjistíte, na kterém labelu jste, ten obarvíte a tomu starému vrátíte původní barvu ;)citovat
icon #016460
eLCHa
Nahrál jsem krátké video ;)

http://www.youtube.com/watch?v=fEN-aZPjdmU&feature=youtu.becitovat
#016483
avatar
Děkuji oběma. Pro opičáka: Nepoužíval jsem cyklus, jako ve Vaší ukázce, prostě jsem jen postupně přidával jednotlivé procedury. Asi máte pravdu, že by to takto mohlo být rychlejší, ale stejně bych se nevyhnul neustálému překreslování při pohybu nad formulářem. Takže nápad eLCHa se mi zdá v této chvíli elegantnější, neboť se při něm, pokud jsem jej doufám správně pochopil, účastní dění vždy jen dva labely. A hlavně odpadá účast podkladu a při pohybu nad ním již k ničemu nedochází ...a o to mi šlo. Díky, Romancitovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje