Seite 1 von 1

Ein Bild auf andere Form verschieben ?

Verfasst: Mo 17. Aug 2020, 13:38
von gambasso
moin,

ich möchte ein Bild aus einem TableView zu einer anderen Form auf einer ScrollArea verschieben (Kopieren).
In der Tabelle bekomme ich z.B. die Bilder eines Verzeichnisses angezeigt.
Da möchte ich mir eins aussuchen können und in einer ScrollArea übernehmen.

Bisher habe ich es umständlich geschaft mit 'TableView_MouseMove' . Dabei lese ich das Bild und schiebe es in einer Extra-Form mit nur dem Bild.
Diese kann ich dann auf dem Bildschirm hin und her verschieben. Ich habe aber noch nichts gefunden, wie ich das darunterliegende Controll ausgelesen bekomme.
Nur mit 'Mouse.Right' und einem Menü kann ich es zu einem im Menü angeklickten Control kopieren. Das heißt, ich muß jedes infragekommende Control im Menü auflisten und eine Routine dazu schreiben.
Einfacher wäre es natürlich, wenn ich eine Abrage hätte, worüber sich das Bild (die Extra-Form) gerade befindet.
Dann einfach klicken und fertig.
Gibt es so etwas?

Die Abfrage 'TableView_MouseMove' ist blöd geamacht. Reagiert wie 'TableView_Enter', ohne Mouse.Left.
Brauchst nur TableView mit der Maus berühren, wird in die Sub verzweigt.

Re: Ein Bild auf andere Form verschieben ?

Verfasst: Di 18. Aug 2020, 10:59
von cogier
Führen Sie diese in einer grafischen Anwendung aus. Ich hoffe, es hilft.

Code: Alles auswählen

' Gambas class file

TableView1 As TableView
ScrollView1 As ScrollView

Public Sub Form_Open()
  
  Setup
  
End

Public Sub TableView1_Click()
  
  Dim PictureBox1 As PictureBox
  Dim pPict As Picture = TableView1[Last.Row, Last.Column].Picture
  
  With PictureBox1 = New PictureBox(ScrollView1) As "PictureBoxes"
    .H = 100
    .Mode = PictureBox.Contain
    .Alignment = Align.Center
    .Width = 100
    .Padding = 5
    .Picture = pPict
  End With
  
End

Public Sub PictureBoxes_MouseDown()
  
  Last.Delete
  
End

Public Sub Setup()
  
  Dim sPicts As String[] = ["right", "left", "stop", "printer", "copy", "paste", "play", "computer", "camera", "up", "add", "apply", "bookmark", "book", "bottom"]
  Dim iRow, iCol, iCount As Integer
  
  With Me
    .H = 600
    .W = 350
    .Arrangement = Arrange.Vertical
    .Padding = 5
  End With
  
  With TableView1 = New TableView(Me) As "TableView1"
    .Rows.Height = 96
    .Expand = True
    .Rows.Count = 5
    .Columns.Count = 3
    For iRow = 0 To 4
      For iCol = 0 To 2
        .[iRow, iCol].Picture = Picture["icon:/96/" & sPicts[iCount]]
        .[iRow, iCol].Alignment = Align.Center
        Inc iCount
      Next
    Next
  End With
  
  TableView1.Columns.Width = -1
  
  With ScrollView1 = New ScrollView(Me) As "ScrollArea1"
    .Arrangement = Arrange.Horizontal
    .H = 100
  End With
  
End

Re: Ein Bild auf andere Form verschieben ?

Verfasst: Di 18. Aug 2020, 15:46
von gambasso
moin,

so etwas ähnliches habe ich ja. Dabei kann ich durch RechsClick und PopUp-Menu dann bestimmen wohin mit dem Bild.

Ich möchte gern > Bild anklicken, Ziehen, dann auf einer anderen Form auf einer beliebigen ScrollArea Ablegen.
Geht sowas nicht mit 'Drag & Drop'? Ich weiss darüber aber nichts.

Re: Ein Bild auf andere Form verschieben ?

Verfasst: Di 18. Aug 2020, 16:29
von besenmuckel
Bei mir und Dolphin als Dateimanager geht es auch direkt daraus. Schiebe Bild direkt auf Form -> Ausgabe Print wird dann der Pfad angezeigt.

Code: Alles auswählen

file:///home/User/Pictures/Color.png
Form -> Eigenschaften -> Drop = True.

Code: Alles auswählen

Public Sub Form_Drop()

  Print Str(Drag.Data)

End
Kannst ja hier mal schauen.
http://gambaswiki.org/wiki/app/draganddrop

Re: Ein Bild auf andere Form verschieben ?

Verfasst: Di 18. Aug 2020, 18:08
von besenmuckel
Da es die tar.gz auf der Seite anscheinend nicht mehr gibt, habe ich sie mal hier neu gemacht. Am Code nichts geändert. Habe ihn von der Seite übernommen.
draganddrop-0.0.1.tar.gz
(29KiB)11-mal heruntergeladen

Re: Ein Bild auf andere Form verschieben ?

Verfasst: Sa 22. Aug 2020, 13:20
von gambasso
moin,

so in etwa habe ich es bis dato ja hinbekommen, aber was mir fehlt, welches Object liegt gerade unter dem zu verschiebenen Bild?
Bisheriger Stand ist, ich muß vorher definieren, wo das Bild abgelegt werden soll.

Da finde ich ichts drüber.