Probleme mit vielen Panels

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Probleme mit vielen Panels

Beitrag von gambasso » Do 26. Sep 2019, 12:21

moin,
auf einem Panel erstelle ich im Code ca. 50 Panels.
Diese möchte ich je nach Bedarf in der Größe und Position verändern können.
Wie mache ich das?
'Mouse_Down' und 'Mouse_Up' werden mir richtig angezeigt. Aber 'Mouse_Move' nicht.
Da klappt das 'Mouse.Inside(PanelXY)' nicht.

Wie kann ich das lösen?
Gruss

Benutzeravatar
PJBlack
Foriker
Beiträge: 23
Registriert: Sa 8. Dez 2018, 23:50
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von PJBlack » Do 26. Sep 2019, 12:56

vielleicht hilft dir das weiter:

Code: Alles auswählen

# Gambas Form File 3.0

{ Form Form
  MoveScaled(0,0,64,64)
  { Button1 Button
    MoveScaled(43,57,18,4)
  }
  { Panel1 Panel test
    Name = "Panel1"
    MoveScaled(2,2,22.8571,11.4286)
    Background = Color.Blue
  }
  { Panel2 Panel test
    Name = "Panel2"
    MoveScaled(2,14,22.8571,11.4286)
    Background = Color.Red
  }
  { Panel3 Panel test
    Name = "Panel3"
    MoveScaled(2,26,22.8571,11.4286)
    Background = Color.Green
  }
  { Label1 Label
    MoveScaled(2,57,5.7143,4)
    Background = Color.White
    Alignment = Align.Center
  }
  { Label2 Label
    MoveScaled(9,57,5.7143,4)
    Background = Color.White
    Alignment = Align.Center
  }
  { Label3 Label
    MoveScaled(16,57,25,4)
    Background = Color.White
    Alignment = Align.Center
  }
  { Panel4 Panel
    MoveScaled(26,2,22.8571,11.4286)
    Background = Color.DarkBlue
  }
  { Panel5 Panel
    MoveScaled(26,14,22.8571,11.4286)
    Background = Color.DarkRed
  }
  { Panel6 Panel
    MoveScaled(26,26,22.8571,11.4286)
    Background = Color.DarkGreen
  }
  { Label4 Label
    MoveScaled(2,52,12,4)
    Background = Color.White
    Alignment = Align.Center
  }
  { Label5 Label
    MoveScaled(16,52,11.4286,4)
    Background = Color.White
    Alignment = Align.Center
  }
  { Label6 Label
    MoveScaled(29,52,11.4286,4)
    Background = Color.White
    Alignment = Align.Center
  }
}

Code: Alles auswählen

' Gambas class file

Public Sub Form_Open()

End

Public Sub Button1_Click()

    Me.Close

End

Public Sub test_MouseMove()

    Label1.Text = Mouse.X
    Label2.Text = Mouse.Y
    Label3.Text = Last.name
    checkmouse()

End

Public Sub Panel4_MouseMove()

    Label1.Text = Mouse.X
    Label2.Text = Mouse.Y
    Label3.Text = Panel4.name
    checkmouse()

End

Public Sub Panel5_MouseMove()

    Label1.Text = Mouse.X
    Label2.Text = Mouse.Y
    Label3.Text = Panel5.name
    checkmouse()

End

Public Sub Panel6_MouseMove()

    Label1.Text = Mouse.X
    Label2.Text = Mouse.Y
    Label3.Text = Panel6.name
    checkmouse()

End

Public Sub checkmouse()

    Label4.Background = &H808080
    Label5.Background = &H808080
    Label6.Background = &H808080

    If Mouse.Left Then
        Label4.Background = &H000000
    Endif
    If Mouse.Middle Then
        Label5.Background = &H000000
    Endif
    If Mouse.Right Then
        Label6.Background = &H000000
    Endif

End

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von gambasso » Do 26. Sep 2019, 13:20

moin,

dann müßte ich für jedes Panel die 'Sub Mouse_Move' schreiben. Ist aber schlecht, da die Anzahl der Panels variieren.
Außerdem ein riesiger Aufwand.

Ich erstelle jetzt erst mal zum Testen mit einer 'For ... Next' Schleife die Panels in einem Array. Beispiel: Pna0 bis Pna49. Mit gleichem Namen und Tag. Die Anzahl der Panels ist abhängig von der Größe des Eltern-Panel.
Gruss

Benutzeravatar
PJBlack
Foriker
Beiträge: 23
Registriert: Sa 8. Dez 2018, 23:50
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von PJBlack » Do 26. Sep 2019, 13:58

schau doch mal in den code ... die panels 1 bis 3 (wegen mir auch 50) werden in EINER mousemove abgefrühstückt ... stichwort group ...

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von gambasso » Do 26. Sep 2019, 15:11

die 'Public Sub test_MouseMove()' habe ich mal übernommen, wird aber bei mr niemals angesprungen. ??

Ich abe eine Sub mit MouseMove, die auch angesprungen wird. Aber keine spezielle Auswertung auf das 'gemachte' Panel.
Es soll das Panel, auf der sich die Maus befindet verschoben bzw. verändert werden.
Das Panel kann ich nicht beeinflussen.
Gruss

Benutzeravatar
PJBlack
Foriker
Beiträge: 23
Registriert: Sa 8. Dez 2018, 23:50
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von PJBlack » Do 26. Sep 2019, 15:29

gruppe des panels gesetzt?

wenn ereignisprozedur = test_mousemove dann gruppe des panels = test ... zugriff auf die eigenschaften mit last.xxx

was du sehen würdest wenn du meinen code mal in gambas ausgeführt hättest ...

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von gambasso » Do 26. Sep 2019, 17:04

Bei diesen Panels kann ich keine 'Group' deklarieren. Macht Fehlermeldung: > 'Panel.Group' ist keine Eigenschaft

Ich habe Dein Code mal versucht. Es hat ja mit menem Problem gar nichts zu tun!
Kein Panel kann ich verschieben.
Hast Du mal in der IDE ein Panel angeklickt und rechts unter den Eigenschaften bei Bertätigung von 'Group' die Erläuterung gelesen?
Mach mal. Oder im Wiki, da steht nichts von 'Group' .
Gruss

Benutzeravatar
PJBlack
Foriker
Beiträge: 23
Registriert: Sa 8. Dez 2018, 23:50
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von PJBlack » Do 26. Sep 2019, 17:33

gambasso hat geschrieben:
Do 26. Sep 2019, 17:04
Bei diesen Panels kann ich keine 'Group' deklarieren. Macht Fehlermeldung: > 'Panel.Group' ist keine Eigenschaft
stimmt ... existiert nicht zur laufzeit
gambasso hat geschrieben:
Do 26. Sep 2019, 17:04
Ich habe Dein Code mal versucht. Es hat ja mit menem Problem gar nichts zu tun!
echt jetzt ?
gambasso hat geschrieben:
Do 26. Sep 2019, 17:04
Kein Panel kann ich verschieben.
ach komm ... es existiert in meinen code keine routine zum verschieben und trotzdem gehts nicht ...

ein letzter kleiner tip ... hidden panel auf der form anlegen und zur laufzeit kopieren ... aber da du es ja (wieder mal) besser weißt bin ich raus

schönen abend noch

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von gambasso » Do 26. Sep 2019, 18:30

ich versteh nicht was das soll.

Du hast auf der Form alles angelegt. -- Ich lege die Panels zur Laufzeit an! Momentan bei der Fenstergröße sind es 48 Panels.
Du zeigst in den Labels die X + Y Positionen der Maus und den Panelnamen an und ein buntes Farbenwechsel.

Das ist doch das Einfachste, was es gibt. Wenn das für Dich so einfach ist, dann mach mal ein Beispiel!

Ich möchte die Panels zur Laufzeit erstellen und mit Maus_Move die Position jedes einzelnen Panel verschieben können und deren Größe.

Hast Du schon mal ein 'Control' zur Laufzeit erstellt und damit die Eigenschaften und Methoden durchgetestet?
Das ist etwas anders, als wenn Du diese auf der Form erstellst.
Gruss

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von gambasso » Fr 27. Sep 2019, 13:35

moin,

ich füge mal die 'Panels' als Beispiel hinzu.
Vielleicht findest Du, wie ich einzelne Panels bewegen kann.
Dateianhänge
pan_bew_t1-0.0.1.tar.gz
(12.76 KiB) 8-mal heruntergeladen
Gruss

Benutzeravatar
PJBlack
Foriker
Beiträge: 23
Registriert: Sa 8. Dez 2018, 23:50
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von PJBlack » Sa 28. Sep 2019, 05:12

du schuldest mir ein abendessen ...
Dateianhänge
GehtDoch-1.0.tar.gz
(12.85 KiB) 9-mal heruntergeladen

gambasso
Foriker
Beiträge: 1039
Registriert: Sa 17. Mär 2012, 09:55
Kontaktdaten:

Re: Probleme mit vielen Panels

Beitrag von gambasso » Sa 28. Sep 2019, 13:42

moin,

das kann ich auch schon eine Weile. Bei Deinem Beispiel kann ich aber nicht ein beliebig auszuwählnedess Panel ansprechen und bearbeiten. Das kann ich aber inzwischen.

Ich werde als nächstens versuchen ein paar 'Griffe' dran zu bauen, um es in der Größe zu variieren.

Momentan nutze ich dazu noch Panels, es sollen aber mal ScrollAreas oder PictureBoxen werden.
Da kann ich dann einzelne Elemete eines zu erstellenden Image verschieben, löschen ....

Ist aber noch ein langer Weg bis dahin.
Gruss

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast