Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Mehrfachaufruf

  1. #1

    Standard Mehrfachaufruf

    Guten Abend
    heute Abend habe ich versucht mit nur einem Aufruf von der vgui.Create("DButton") Funktion nicht nur einen Knopf zu erstellen sondern mehrere Knöpfe an verschiedenen Stellen zu erstellen, dass hat auch ganz gut funktioniert. Leider nur in der Horizontalen.
    Jetzt möchte ich das aber auch mehrfach in der Vertikalen machen.
    Ohne mehrfach vgui.Create zu benutzen und ohne ewig viele if,else aufrufe.
    Lua Code:
    1. for  i = 1, 44 do
    2. k =  i *11
    3.  
    4. i = vgui.Create( "HButton" )--nicht wundern dies ist eine selbst erstellte Button Klasse
    5. i:SetParent( mf )
    6. i:SetText( " " )
    7. i:SetPos( k-10,1)
    8. i:SetSize( 10, 10 )
    9. i.DoClick = function ()
    10. 		Msg("works")
    11. end
    12. end

  2. #2

    Standard AW: Mehrfachaufruf

    Die for Schleife ist doch da schon das einfachste.

    Eine für Horizontal und eine für Vertikal.

    und die Create Funktion ist ja dazu da einen neuen Button zu erzeugen,
    würdest du nicht vgui.Create nutzen dann würde der Button einfach nur an eine andere Position verschoben.


    Oder wie meinst du das?

  3. #3

    Standard AW: Mehrfachaufruf

    Ich möchte ja nicht nur eine Reihe erstellen sondern ein quadratisches Feld mit Knöpfen versehen.

  4. #4
    Huge Sponsor Avatar von isch
    Registriert seit
    08.12.2009
    Ort
    Graz

    Standard AW: Mehrfachaufruf

    Steht dich schon alles da!

    Da steht "SetPos( k-10,1)". Wenn du jetzt "SetPos(k,k)" machst dann würde es Vertikal und Horizontal ändern.

    Davon abgesehen wieso k-10? Beim ersten Durchlauf ist k ja 1. Das bedeutet das der Button auf der Position -9,1 platziert. wird.
    Geändert von isch (13.05.2010 um 23:13 Uhr)
    Zitat Zitat von Bier_Baron Beitrag anzeigen
    Und wer ist Garry?

  5. #5

    Standard AW: Mehrfachaufruf

    Zitat Zitat von isch Beitrag anzeigen
    Steht dich schon alles da!

    Da steht "SetPos( k-10,1)". Wenn du jetzt "SetPos(k,k)" machst dann würde es Vertikal und Horizontal ändern.

    Davon abgesehen wieso k-10? Beim ersten Durchlauf ist k ja 1. Das bedeutet das der Button auf der Position -9,1 platziert. wird.
    Nein das hatte ich schon ausprobiert damit machst du nur eine Diagonale Reihe und das k-10 ist dafür da das nicht alle Knöpfe übereinander liegen.

  6. #6
    Huge Sponsor Avatar von isch
    Registriert seit
    08.12.2009
    Ort
    Graz

    Standard AW: Mehrfachaufruf

    Lua Code:
    1. for  v = 1, 44 do -- 1
    2. 	for h = 1, 10 do -- 2
    3. 		i = vgui.Create( "HButton" )
    4. 		i:SetParent( mf )
    5. 		i:SetText( " " )
    6. 		i:SetPos( h,v)
    7. 		i:SetSize( 10, 10 )
    8. 		i.DoClick = function ()
    9. 						Msg("works")
    10. 					end
    11. 		h = h + 13 -- 3
    12. 	end
    13. 	v = v + 13 -- 4
    14. end


    Erklärung:
    1.)
    Diese For-Schleife ist für die Vertikale Ausrichtung der Buttons zuständig.

    2.)
    Die For-Schleife wird 10 mal durchlaufen und ist für die Horizontale Ausrichtung des Buttons zuständig. Da sie 10 mal durchlaufen wird hast du 10 Buttons nebeneinander.

    3.)
    Zur Variable h wird 13 dazugezählt. Somit rutscht der Button immer 13 Pixel weiter nach rechts.

    4.)
    Wenn die For-Schleife für die Horizontale ausrichtung 10 Mal durchgelaufen ist wird zur Variable v 13 dazu gezählt.
    Somit werden die nachfolgenden Buttons 13 Pixel weiter unten erstellt. Dann beginnt die For-Schleife (1) wieder neu und die nächste Reihe an Buttons wird erstellt.
    Zitat Zitat von Bier_Baron Beitrag anzeigen
    Und wer ist Garry?

  7. #7

    Standard AW: Mehrfachaufruf

    Versuchs mal mit:

    DPanelList

    http://wiki.garrysmod.com/?title=DPanelList

    Da brauchst dann nur noch den Button zur Liste hinzufügen und die werden von selbst geordnet

    Hier noch 'n Code Beispiel aus dem Spawnmenu:

    http://luabin.foszor.com/code/gamemo...opPanel.lua#10

  8. #8

    Standard AW: Mehrfachaufruf

    Ja, dass wird aber optisch nicht passen ich will ein ganzes Feld mit Knöpfen die alle oben, unten, rechts, links ein Pixel zum nächsten Knopf entfernt sind.
    isch Lösung passt nicht dadurch liegen alle Knöpfe übereinander.

  9. #9

    Standard AW: Mehrfachaufruf

    Die Breite kannst du doch einstellen.

    "DermaList:SetSpacing( 5 ) -- Spacing between items"


    Augen auf

  10. #10

    Standard AW: Mehrfachaufruf

    Das ändert aber leider die größe meiner Knöpfe auf die länge des Panels
    Hier mal ein Beispiel wie es aussehen soll:


    Beispiel
    Geändert von Zion (14.05.2010 um 11:30 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •