Meerdere buttons met shortcut?

Status
Niet open voor verdere reacties.

Dummy1912

Gebruiker
Lid geworden
26 mrt 2010
Berichten
362
Hallo Dames en Heren.,

Ok even uitleggen
ik wil een app maken met verschillende buttons
telkens wordt er een file toegevoegt aan die button
zodat deze wordt geklikt wordt de file gestart.

net zoals windows desktop maar dan met buttons.

is dit mogelijk?

ik weet hoe ik de file moet runnen
maar het probleem is om automatisch nieuwe buttons te maken als er een nieuwe file wordt geselecteerd.


ik had gedacht ik zou deze ofwel in een database willen plaatsen.

ja klink nogal ingewikkeld weet het wel maar als de mogelijk bestaat zou dat wel perfect zijn natuurlijk.

Ik maak een prog waar elke gebruiker een eigen bestand kan inplaatsen en zo dat er een button ontstaat met die naam en link.

ik heb een site gevonden om buttons te maken maar ik kom er verder niet uit :(

Dummy1912

http://www.vbdotnetheaven.com/UploadFile/mahesh/1151/Default.aspx
 
Laatst bewerkt door een moderator:
Ik weet niet of je er iets aan hebt maar met de onderstaande code krijg je, als je op de knop duwt, een nieuwe knop te zien?

Code:
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim newbutton As New Button

        newbutton.Location = New Point(50, 50)
        newbutton.Height = 50
        newbutton.Width = 50
        newbutton.Text = "test"

        Controls.Add(newbutton)


    End Sub

Dus daar waar elke gebruiker een bestand in kan plaatsen en op 'ok' klikt of zo, kun je deze code aanhangen dat een nieuwe knop? Alleen zul je op een of andere manier de locatie van die knop variabel moeten maken, omdat ze anders allemaal over elkaar komen te staan?
 
Laatst bewerkt door een moderator:
Hey,

Ja heb het gemerkt :(

zal wel handige zijn als ze dan naast elkaar komen missh kan het met een panel of gaat dat niet
want automatisch zullen ze ook niet naast elkaar komen denk ik als ik een panel zou gebruiken.


dit onder jouw

Code:
Controls.Add(newbutton)
AddHandler newbutton .Click, AddressOf OpenFile

Code:
    Private Sub OpenFile(ByVal sender As Object, ByVal e As EventArgs)
        ' MessageBox.Show(DirectCast(sender, Button).Text)
        Shell(System.IO.Path.GetFileName(DirectCast(sender, Button).Text))

    End Sub

ik heb er bij gevoegt maar ik krijg foutmelding dat hij deze niet vind.
doe ik nog iets verkeerd?

Dummy1912
 
En als je nou in plaats van

Code:
Shell(System.IO.Path.GetFileName(DirectCast(sender, Button).Text))

Dit doet

Code:
 Process.Start(DirectCast(sender, Button).Text)


?

En dat de buttons op elkaar komen te staan, je zou variabelen aan kunnen maken.

Code:
Dim x As Integer = 50
    Dim y As Integer = 50

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim newbutton As New Button

        newbutton.Location = New Point(x, y)
        newbutton.Height = 50
        newbutton.Width = 50
        newbutton.Text = "C:\test.txt"

        Controls.Add(newbutton)

        AddHandler newbutton.Click, AddressOf OpenFile
        x += 50
        y += 50

    End Sub
 
Laatst bewerkt door een moderator:
:(

krijg foutmelding

Code:
The system cannot find the file specified

Dummy1912
 
Wow cool
moet nog wel even wat aanpassing doen om het juist te krijgen want nu staan ze wat scheef ondereen :)

bedankt Tannasg

Dummy1912
 
Die foutmelding cannot find file ligt waarschijnlijk omdat ik om te testen
newbutton.Text = "C:\test.txt"
heb gedaan. Maar hier komt natuurlijk je eigen tekst te staan.
 
Laatst bewerkt:
ok ik heb een xml file gemaakt met daarin de file's maar het probleem is nog steeds dat ik deze niet kan starten :(

nu worden alle bestanden gelezen uit de xml en in de buttons geplaatst maar als ik dan op de button klik
krijg ik telkens dat hij de bestand niet vindt :confused:

hier word de xml uitgelezen en aan de buttons toegevoegt

Code:
Private Function ShowButtonsFromXML(ByVal path As String)
        Static location As Point = New Point(10, 10)
        Dim retVal As Boolean = False
        Dim xTR As New System.Xml.XmlTextReader(path)
        Try
            With xTR
                Do While .Read()

                    If .NodeType = Xml.XmlNodeType.Text Then

                        Dim fInfo As System.IO.FileInfo = New System.IO.FileInfo(.Value)
                        Dim b As Button = New Button
                        b.Text = fInfo.Name
                        b.Tag = .Value
                        Me.Controls.Add(b)
                        b.Location = New Point(location.X, location.Y)
                        location.Y += b.Height
                        AddHandler b.Click, AddressOf OpenFile
                    End If
                Loop
            End With
            retVal = True
        Catch ex As Exception
            retVal = False
        Finally
            xTR.Close()

        End Try
        Return retVal

    End Function

de msgbox werkt wel maar niet het starten met shell of progress.start

Code:
Private Sub OpenFile(ByVal sender As Object, ByVal e As EventArgs)
        ' MessageBox.Show(DirectCast(sender, Button).Text)
        Shell(System.IO.Path.GetFileName(DirectCast(sender, Button).Text))

    End Sub

Dummy1912
 
En als je nou in plaats van

Code:
Shell(System.IO.Path.GetFileName(DirectCast(sender, Button).Text))

Dit doet

Code:
Process.Start(DirectCast(sender, Button).Text)
 
Heel aardig van je
maar heb ik al geprobeerd :)

en krijg de melding The system cannot find the file specified

en heb deze ook al getest om te zien wat er fout ging

Code:
Private Sub OpenFile(ByVal sender As  Object, ByVal e As EventArgs)
        MessageBox.Show(System.IO.File.Exists(DirectCast(sender, Button).Text))
        MessageBox.Show(System.IO.Path.GetFileName(DirectCast(sender, Button).Text))

    End Sub

de 1ste krijg ik False
en de 2de daar krijg ik enkel de file te zien met .exe

maar ik heb het gevoel dat ik enkel de naam krijg van de button zelf en niet de 'File'
omdat de buttons worden aangemaakt en die krijgen dan de volledige Bestandsnaam + .exe of zo

Dummy1912
 
inderdaad, het zit 'em hierin:

b.Text = fInfo.Name

kun je zo ook fInfo.extension of zo doen?

dus

b.Text = fInfo.Name & fInfo.Extension (ervanuitgaande dat fInfo.Extension ook de . mee neemt, anders zul je fInfo.Name & "." & fInfo.Extension moeten doen) ?
 
Laatst bewerkt:
ok heb het even getest
ik krijg nu in de button zelf

test.exe.exe

of wel test.exeexe

als ik deze heb gedaan

Code:
fInfo.Name & "." & fInfo.Extension

'of
fInfo.Name & fInfo.Extension

heb deze gedaan en deze werkt :)
maar hoe krijg ik nu enkel dan weer de naam alleen van de file en toch moet deze blijven werken
hiermee krijg ik de locatie en de file + extentie
Zie bijlage

Code:
  b.Text = fInfo.FullName

Dummy1912
 

Bijlagen

  • 10.png
    10.png
    3,2 KB · Weergaven: 18
Laatst bewerkt:
heb nog wat even andere dingen getest
en ik zie als ik telkens een andere file toevoeg dat hij ze telkens 2x laat zien of soms wel meerder malen hangt ervan af hoeveel
files je toevoegt.

hoe los ik deze op:

Code:
Dim docXMLFile As New XmlDocument
                     docXMLFile = New XmlDocument
            docXMLFile.Load("log.xml")

                       Dim nodRoot As XmlElement = docXMLFile.DocumentElement

                      Dim elmXML As XmlElement = docXMLFile.CreateElement("File")
          
            Dim txtXML As XmlText = docXMLFile.CreateTextNode(fBrowser.FileName.ToString())
                       docXMLFile.DocumentElement.AppendChild(elmXML)
                        docXMLFile.DocumentElement.LastChild.AppendChild(txtXML)

                        docXMLFile.Save("log.xml")

Dummy1912
 
ahhhhh stom stom stom.

Hij zet de FileName in je button, maar dan is hij natuurlijk het pad naar het bestand kwijt.

Ik heb getest met C:\test.txt, en dan plaatst hij test.txt in de button, en dat bestand kan ie niet vinden.

Ik ben zelf niet zo thuis in XML, hoe bedoel je, die laat hij 2 keer zien?
 
Laatst bewerkt:
zo je hier kunt zien
heb ik nogmaals test.png bijgedaan

en nu ziet je dat er meerdere staan
maar als ik het prog sluit en terug start is deze wel weer normaal
deze heeft het alleen als je een nieuwe file bijvoegt.


Dummy1912
 

Bijlagen

  • 11.png
    11.png
    6 KB · Weergaven: 24
Omdat ie dan weer heel het XML bestand doorleest en knopjes neerzet?

Hoe voeg je een bestand toe? Via het XML?
 
met deze

Code:
    Private Sub cmdZoekBestand_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZoekBestand.Click
        Dim fBrowser As OpenFileDialog = New OpenFileDialog()
        Dim retVal As DialogResult = fBrowser.ShowDialog()
        Dim logFile As String = System.IO.Path.Combine(My.Application.Info.DirectoryPath, "log.xml")

        If retVal = Windows.Forms.DialogResult.OK Then


            'Maak het xml bestand indien het niet bestaat
            If Not System.IO.File.Exists(logFile) Then
                System.Xml.XmlWriter.Create(logFile).Close()
            End If

            Dim docXMLFile As New XmlDocument

          
            docXMLFile = New XmlDocument
            docXMLFile.Load("log.xml")

           
            Dim nodRoot As XmlElement = docXMLFile.DocumentElement

            
            Dim elmXML As XmlElement = docXMLFile.CreateElement("File")
           
            Dim txtXML As XmlText = docXMLFile.CreateTextNode(fBrowser.FileName.ToString())
            
            docXMLFile.DocumentElement.AppendChild(elmXML)
            
            docXMLFile.DocumentElement.LastChild.AppendChild(txtXML)

           
            docXMLFile.Save("log.xml")

        End If

        If Not ShowButtonsFromXML(logFile) Then
            MessageBox.Show("Kan geen buttons aanmaken!")
        End If

end sub

Dummy1912
 
Ja, hij laadt het eerdere XML bestand en plaatst daar dan het nieuwe bestand in. En in de routine voor de knopjes leest hij heel het XML bestand weer uit, dus komen ook de bestanden die hij eerder al had, er nog een keer bij te staan.

Als je eerst alleen c:\test.txt in je xml hebt, wordt hier een knop voor aangemaakt.

Dan ga je een nieuwe bestand koppelen, laadt hij het xml in, en plakt onderaan een nieuwe regel c:\test2.txt .

Maar dan bij de knoppen maken komt hij ook weer c:\test.txt tegen, dus krijg je die 2 keer op je scherm.
 
ok begrijp ik
maar hoe kan ik deze dan eventueel oplossen
moet toegeven heb nog nooit met een xml gewerkt :D

ja je moet alles uit proberen e.

Dummy1912
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan