Ajattelin,että en tee tälle uutta aihetta,mutta teimpäs kummiskin. Eli kysyisin nyt tälläkertaa,että miten saan ohjelmastani ikkunan reunat pois? Eli siis,että ohjelmassa näkyisi vain ja ainoastaan minun piirtämäni pyöreä kuva?
VB Classicissa reunat saa pois asettamella Formin BorderStyle 0 - Noneksi.
Pyöreän ikkunan tekeminen onkin sitten astetta hankalampaa, ks. esim. seuraava keskustelu: https://www.ohjelmointiputka.net/keskustelu/3310-pyöreä-formi
Joo,kiitos...Huomasin,että nytten ohjelmaa ei voi liikutaa ollenkaan..Joten miten voin tehä niin,että jos pidetään hiiren nappia pohjassa, niin kuvaan x ja y:tä voi liikuttaa?
Eikös se mene jotenkin niin,että:
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.Left = //Tähän tulee hiiren x(" en tiedä miten sen tähän saa..) Me.Top = //Tähän tulee hiiren y(" en tiedä miten sen tähän saa..) End Sub
Täältä löydät formin liikutuksen kaikkialta formilta
https://www.ohjelmointiputka.net/koodivinkit/
P.S. Eikös VB:eellä kommentit merkitä heittokerkillä ;-)
Juu kiitos...Yritin epätoivosesti saada muunnettua koodia niin,että kun kuvaa painaa niin koko formi liikkuu ,mutta eipä onnistunut..Voisko joku taas neuvoa minua epätoivosta?
(Tossahan formi liikkuu vain jos formia painaa....)
Kirjoitappa formin koodiin
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Korvaa siis "Picture1" kuvasi nimellä Liikkuu Me End Sub
Lol, ei se voinut olla noin helppoa :D...Ajattelin,että se muokkaus pitäisi tehdä moduuliin ,mutta se olikin noin helppo,että se piti muokata vain liikutettavaa kohdetta...
Kiitos paljon....!!!!!!!!!!!!!!!
Kysyisin nytten,että miten print comento toimii?
Eli siis miten saan printattu kuvan päälle tekstin vaikka moi?
meneekö se näin?
kuva.Print "Moi"
kayttaja-3842 kirjoitti:
meneekö se näin?
kuva.Print "Moi"
Ei tullu mieleen kokeilla?
Seuraavaks kuitenki kysyt, että miten sen paikan saa määrätä, niin se tapahtuu CurrentX ja CurrentY-ominaisuuksia muuttamalla.
:D....Kuhan varmisin nopeesti :D, mutta.
Voiko joku muo parempi (eli siis kaikki täällä) auttaa muo viimesen kerran (tältä päivältä?)
Eli siis tämä pitäisi saada sovellettua tohon toiseen koodiin.
Option Explicit Private Type TagInfo Tag As String * 3 Songname As String * 30 artist As String * 30 album As String * 30 year As String * 4 comment As String * 30 genre As String * 1 End Type Dim FileName As String Dim CurrentTag As TagInfo Private Sub Form_Load() Dim temp As String On Error Resume Next FileName = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & _ "myMP3.mp3" Open FileName For Binary As #1 With CurrentTag Get #1, FileLen(FileName) - 127, .Tag If Not .Tag = "TAG" Then Label8.Caption = "No Tag" Close #1 Exit Sub End If Get #1, , .Songname Get #1, , .artist Get #1, , .album Get #1, , .year Get #1, , .comment Get #1, , .genre Close #1 txtTitle = RTrim(.Songname) txtArtist = RTrim(.artist) txtAlbum = RTrim(.album) txtYear = RTrim(.year) txtComment = RTrim(.comment) temp = RTrim(.genre) txtGenreCode = Asc(temp) Combo1.ListIndex = CInt(txtGenreCode) - 1 End With Close #1 End Sub
Tähä------------
Private Sub avaa_Click() CommonDialog.Filter = "Kaikki (*.*)|*.*|MP3 (*.mp3)|*.mp3" CommonDialog.FilterIndex = 2 CommonDialog.Action = 1 txtAvaus = CommonDialog.FileName End Sub
Tuo ilmeisesti lukee MP3:sten id3 tagejä?
Suosittelisin että teet tuosta functionin
Public Function HaeID3Tag(Kappale as String) Dim temp As String On Error Resume Next Open kappale For Binary As #1 With CurrentTag Get #1, FileLen(FileName) - 127, .Tag If Not .Tag = "TAG" Then Label8.Caption = "No Tag" Close #1 Exit Sub End If Get #1, , .Songname Get #1, , .artist Get #1, , .album Get #1, , .year Get #1, , .comment Get #1, , .genre Close #1 txtTitle = RTrim(.Songname) txtArtist = RTrim(.artist) txtAlbum = RTrim(.album) txtYear = RTrim(.year) txtComment = RTrim(.comment) temp = RTrim(.genre) txtGenreCode = Asc(temp) Combo1.ListIndex = CInt(txtGenreCode) - 1 End With Close #1
Ja käyttö:
Private Sub avaa_Click() CommonDialog.Filter = "Kaikki (*.*)|*.*|MP3 (*.mp3)|*.mp3" CommonDialog.FilterIndex = 2 CommonDialog.Action = 1 if commondialog.filename <> "" then txtAvaus = CommonDialog.FileName MsgBox HaeID3Tag(commondialog1.filename) end if End Sub
Eli tuo on ihan hatusta kirjoiteltu (en testannut mutta pitäisi toimia) ja täällähän EI ole tapana jaella valmiita koodinpätkiä, mutta jaoin nyt kuitenkin ;)
Miten saan tehtyä sellaseen järjestelmän,että jos painetaan nappia alas aukeaa isompi valikko ja jos painetaan nappia uudestaan valikko menee kiinni.
Itse kokeilin tällä tavalla, mutta ei onnistu,koska valikon auetessa ohjelma menee tilettiin. Mikä avuksi?
Minun tiletti versioni:
Private Sub Command1_Click() var = 0 Do If var = 0 Then var = 1 Form1.Height = 3720 End If If var = 1 Then Form1.Height = 2220 var = 0 End If Loop End Sub
Ohjelma kaatuu, koska looppisi ei lopu koskaan. Mihin edes tarvitset looppia? Käytä If...ElseIf...End if-rakennetta noiden kahden erillisen If...Then...End If-tarkastelun sijaan. Nykyisessä koodissasi ensimmäinen tarkistus avaa valikon ja toinen lyö sen kiinni ja tätä jatketaan koneen hyytymiseen asti.
Jos laitan sen näin
var = 0 If var = 0 Then var = 1 Form1.Height = 3720 ElseIf var = 1 Then Form1.Height = 2220 var = 0 End If
..niin se ei toimi!
if-elseif-endif rakenne ei sovi tuohon, sillä se tekee saman kuin kaksi kertaa if-endif rakenne. Johtuu siitä, että var:n arvo vaihdetaan...
Käytä select casea.
Gaxx kirjoitti:
if-elseif-endif rakenne ei sovi tuohon, sillä se tekee saman kuin kaksi kertaa if-endif rakenne. Johtuu siitä, että var:n arvo vaihdetaan...
Käytä select casea.
Täh?, ei se voi olla case....
Kato nyt.
Näin se nyt viimetteeksi toimii:
Vai teinkö jotain väärin?
var = 0 Select Case var Case 0 Form1.Height = 2220 Case 1 Form1.Height = 3720 End Select
kayttaja-3842 kirjoitti:
Vai teinkö jotain väärin?
Kyllä. Muuta sitä var:n arvoa:
var = 0 Select Case var Case 0 Form1.Height = 2220 var = 1 Case 1 Form1.Height = 3720 var = 0 End Select
Edit: Ja ethän alusta tuota var:a joka kerta juuri ennen tuota select casea...
Edit2: Rasittava homma, kun vb:n ja c++:n "caset" toimii vähän eri tavalla.
just ota arvelinkin ...:D
Edit1:
Ei tämä toimi!
Tämä vain sulkee valikon eikä sitä voi avata enää....
var = 0 Select Case var Case 0 Form1.Height = 2220 var = 1 Case 1 Form1.Height = 3720 var = 0 End Select
Nyt vuorostaan kysyisin, että miten voin tehdä niin ,että jos tiedostoa ei ole ladattu/avattu, niin kuva on piilotettu? Sitten kun tiedosto on avattu niin kuva tulee esiin.
Eli tähän, siis jos tällä ei ole avattu mitään niin kuva on pilotettu:
Private Sub avaa_Click() CommonDialog.Filter = "Kaikki (*.*)|*.*|MP3 (*.mp3)|*.mp3" CommonDialog.FilterIndex = 2 CommonDialog.Action = 1 txtAvaus = CommonDialog.FileName End Sub
if commondialog.filename <> "" then 'eli jos CommonDialogin tiedosto muuttuja ei ole tyhjä niin sitten näytä valikot var = 0 Select Case var Case 0 Form1.Height = 2220 var = 1 Case 1 Form1.Height = 3720 var = 0 End Select end if
joo kiitos, miten voin muuttaa fmod:ia käyttäen äänen volumea?
kayttaja-3842 kirjoitti:
Ei tämä toimi!
Tämä vain sulkee valikon eikä sitä voi avata enää....
Määrittele se var:
Dim var as integer
Ja laita tästä lähtien jokaisen tiedoston alkuun
Option Explicit
Tuolla on ties monessako lootassa:
var = 0 Select Case var
Tai Select-lauseen tilalla If-lause. Kantsii ehkä hieman miettiä tuota logiikkaa:-)
Aihe on jo aika vanha, joten et voi enää vastata siihen.