Image v Excelu   otázka

VB6/VBA

Ahoj, jsem zacatecnik ve VB a mam maly dotaz delam si graficke prostredi a tlacitka chci delat pomoci komponent Image. V Corelu jsem si udelal dva obrazky pro tlacitko "zakaznik" jeden svetly a druhy tmavy oba ve formatu jpg no a chci aby ze zacatku byl v komponente image ten tmavy a kdyz najede kurzor mysi na onen Image aby se obrazek v nem zmenil na ten svetly, kdyz kurzor mysi dany Image opusti aby se obrazek zase zmenil na tmavy. Zkousel jsem pouzit prikaz

Image1.Picture = LoadPicture("zakaznik1.jpg")u udalosti OnMouse Move. jde mi o to abych mohl pote program pouzit bez problemu na jakemkoli pc proto nechci zadavat celou cestu obrazku. Obrazek mam ve stejne slozce jako excelovsky sesit ve kterem vytvarim program ale nefunguje to prosim o radu diky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Teď nevím zda jsem to dobře pochopil. Váš program děláte v Excelu pomocí VBA nebo je to dělané ve Visual Studiu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

zdravím, dělám ho v excelu v makrech ale jako ten návrh programu tam jde prepnout do editoru jazyka visual basic

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ten program bude v excelu něco zpracovávat?

pozor na to, že excel sám o sobě neumožňuje programovat ve VB.NET, ale používá VBA(v podstatě VB6)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V excelu toto bez použití API a hookingu nenaprogramujete.

Nedokážete totiž ověřit, kdy myš opustila tlačítko.

To jak jste to řešil vy znamená pouze že pokud je myš nad tlačítkem opakovaně se při pohybu nahrává obrázek.

Jinak je lepší dát obrázek na formulář do pictureboxu tomu nastavit visible=false.

A pak přiřazovat přes

set cmdNeco.Picture = Picture1.Picture

Nemusíte potom mít obrázky uložené na disku.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

no mne de hlavne o to abych nemusel zadavat celou ecstu obrazku ale jen jeho nazev pac kdybych to poustel na jienm pc nenajde to tu cestu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

proč Vám tolik jde o obrázkový tlačítka, v první řadě byste se měl starat o funkčnost programu, a starosti jestli tlačítka budou vypadat tak nebo tak nechat na konec

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

njn ja vim ale nemuzu az to ze ve skole musime odevzdavat nejdriv vizualni navrh a pka az delat program no :-(

nahlásit spamnahlásit spam 0 odpovědětodpovědět

a nemusite mi vykat :-D

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

tos měl říct rovnou, že to děláš do školy...

a musíš to dělat v excelu, nebo to byl tvůj nápad?

VBA na tohle nebude úplně nejlepší

nahlásit spamnahlásit spam 0 odpovědětodpovědět

musim no

nahlásit spamnahlásit spam 0 odpovědětodpovědět

tak to je blbý

tak udělej návrh, do kterýho ti zapadne klasický tlačítko, protože VBA není určenej k vytváření vlastních komponent

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ja nechci vytvorit vlastni komponentu ja chci pozit image a menit v nem dva obrazky kdyz mys najede na image a kdyz odjede

nahlásit spamnahlásit spam 0 odpovědětodpovědět

no jo já tě chápu, ale k tomu bys potřeboval odchytávat události, když myš najede nad image a pak když ho opustí. Tohle ale jednoduše neuděláš, pokud to ve VBA vůbec půjde

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

no ja uz to nejak zkusim ale prosim tu celou dobu o radu aby stacilo zadat jen nazec obrazku a ne celou cestu diky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hodně odpovědí, žádná na položenou otázku, navíc kombinované s nesprávným umístěním dotazu do "Visual Basic .NET" - snad to někdo s potřebnými právy přehodí do "Visual Basic 6 a jiné verze"

K otázce: Pokud je obrázek na stejném místě jako soubor Excelu a není chyba v příkazu s LoadPicture´, pak to musí fungovat i s pouhým jménem souboru bez uvedení cesty.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Souhlasím, mohlo by to jít...

Ve vba ve formuláři je commmandbutton1,

image1 a image2 s obrázky s nastavenými

Picture v návrhu formuláře a událostmi

mousemove tlačítka a formuláře střídat

obrázky...

Option Explicit

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    CommandButton1.Picture = Image2.Picture
End Sub

Private Sub UserForm_Initialize()
    With CommandButton1
        .Picture = Image1.Picture
        .AutoSize = True
    End With
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    CommandButton1.Picture = Image1.Picture
End Sub
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

...ale nebude žádáno tlačítko v listu sešitu?

Jsou-li ovládací prvky v listu sešitu a nikoliv

ve formuláři, tak bohužel pro worksheet událost

mousemove není, pak pod tlačítko vložit třetí

o něco větší image s nastavenými borderstylenone

a backstyletransparent a v její události zachytit

opuštění myši tlačítka a vrátit výchozí obrázek.

Mnoho zdaru!

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Excel má nastavenou cestu jinam - zadejte ji tímto způsobem:

  Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\zakaznik1.jpg")
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback