..Drag 'n Drop mit ListIcongadget und ExplorerListGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

..Drag 'n Drop mit ListIcongadget und ExplorerListGadget

Beitrag von Tafkadasom2k5 »

Jaa-den letzten Thread gerade mal abgearbeitet und schon den nächsten eröffnet:

Ich brauche Tips, um mir ein Drag 'n Drop zu basteln zwischen einem ExplorerListGadget und einem ListIconGadget.

Er soll sozusagen den Eintrag vom ExplorerListGadget in das ListIconGadget übernehmen, und nebenbei einen noch etwas ausführen um diesen Eintrag für mein Programm "nutzbar" zu machen.

Also Kurzform:
Wie funktioniert ein einfaches Drag n Drop mit erkennung, welcher Eintrag WO abgelegt wurde.

Gr33tz
Der Marc
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Christian H
Beiträge: 134
Registriert: 18.10.2005 10:22
Wohnort: Welschbillig

Beitrag von Christian H »

Eine Antwort habe ich leider nicht für dich, denn ich habe die Gleiche Frage.
Irgendwie habe ich den Eindruck wir arbeiten an der gleichen Sache :)

Ich poste mal meinen Testcode, vielleicht hilft es ja dem Einem oder Anderen.

Gruß
Christian

Code: Alles auswählen

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Panel_0
  #Hinzufuegen
  #AlleHinzufuegen
  #Entfernen
  #Listview_1
  #ExplorerList_0
EndEnumeration


  If OpenWindow(#Window_0, 329, 217, 600, 400,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "Test 1")
    If CreateGadgetList(WindowID())
      
      ;- Panel0
      PanelGadget(#Panel_0, 0, 0, 600, 410)
      AddGadgetItem(#Panel_0, -1, "Tab 1")
        
        ButtonGadget(#Hinzufuegen, 220,  30, 130, 30, "Hinzufügen ->")
        ButtonGadget(#AlleHinzufuegen, 220,  70, 130, 30, "Alle Hinzufügen ->")
        
        ButtonGadget(#Entfernen  , 220, 120, 130, 30, " Entfernen   ")
        
        ListIconGadget    (#Listview_1,    360, 20, 200, 340, "Name", 196 ,#PB_ListIcon_AlwaysShowSelection)
        AddGadgetColumn   (#Listview_1 , 1 ,"Ordner",196)

        
        ExplorerListGadget(#ExplorerList_0, 10, 20, 200, 340, "", #PB_Explorer_MultiSelect | #PB_Explorer_AlwaysShowSelection | #PB_Explorer_AutoSort | #PB_Explorer_FullRowSelect )
        SetGadgetText(#ExplorerList_0, "") 
        
      CloseGadgetList()
      
    EndIf
  EndIf


Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadgetID() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  Add    = 0
  Remove = 0
  AddAll = 0
  
  If Event = #PB_EventGadget
    
    If GadgetID = #Panel_0
      
    ElseIf GadgetID = #Hinzufuegen
      Add = 1
    
    ElseIf GadgetID = #AlleHinzufuegen
      AddAll = 1    
        
    ElseIf GadgetID = #Entfernen
      Remove = 1
    
    ElseIf GadgetID = #Listview_1
      If EventType = #PB_EventType_LeftDoubleClick  
        Remove = 1
      EndIf    
    
      
    ElseIf GadgetID = #ExplorerList_0
      If EventType = #PB_EventType_LeftDoubleClick  
        Add = 1
      EndIf   
    EndIf
    
    ;
    ;-Das ausgewählte Element vom ListIconGadget entfernen.
    ;
    If Remove = 1 
       Checked = GetGadgetState(#Listview_1)
       RemoveGadgetItem(#Listview_1 , Checked ) 
       If CountGadgetItems(#Listview_1) = Checked 
         SetGadgetItemState(#Listview_1, CountGadgetItems(#Listview_1)-1, #PB_ListIcon_Selected)
       Else
         SetGadgetItemState(#Listview_1, Checked , #PB_ListIcon_Selected)
       EndIf  
       
    EndIf
    ;
    ;
    ;
    ;-Die ausgewählten Elemente vom dem ExplorerListGadget in das ListIconGadget Kopieren.
    ;
    If Add = 1    
      For I=0 To CountGadgetItems(#ExplorerList_0)-1
        ;Debug GetGadgetItemState(#ExplorerList_0, I) 
        If GetGadgetItemState(#ExplorerList_0, I) = #PB_Explorer_Selected + #PB_Explorer_File       
          AddGadgetItem(#Listview_1,-1, GetGadgetItemText(#ExplorerList_0, I, 0) + Chr(10) + GetGadgetText(#ExplorerList_0))
        EndIf
      Next
    EndIf
    ;
    ;
    ;
    
    ;
    ;-Alle Elemente vom dem ExplorerListGadget in das ListIconGadget Kopieren.
    ;
    If AddAll = 1    
      For I=1 To CountGadgetItems(#ExplorerList_0)-1
        If GetGadgetItemState(#ExplorerList_0, I) & #PB_Explorer_File     
          AddGadgetItem(#Listview_1,-1, GetGadgetItemText(#ExplorerList_0, I, 0) + Chr(10) + GetGadgetText(#ExplorerList_0))
        EndIf
      Next
    EndIf           
           
    ;
    ;
    ;       
           
           
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

kurze dumme Frage:
Was genau wird denn dein Projekt?
Meins hat was zum managen von USB-Sticks zu tun.. ^^

Ne gute Freundin brachte mich auf die Idee dasn bissl komfortabler mit schneller GUI zu machen, weil sie selber nämlich arge Probleme immer hat sich am Rechner zurechtzufinden..

Gr33tz
DerMarc :allright:
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ..Drag 'n Drop mit ListIcongadget und ExplorerListGadget

Beitrag von Kiffi »

> Ich brauche Tips, um mir ein Drag 'n Drop zu basteln zwischen einem
> ExplorerListGadget und einem ListIconGadget.

vielleicht helfen Dir Freaks DD-Tutorials weiter:

http://freak.purearea.net/help/

Grüße ... Kiffi
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Da im ListIconGadget example ist ein kleiner Fehler (war auch nicht
anders zu erwarten, wenn man sich die IDE ansieht, dann ist der Bug
auch nicht weltbewegend /:->).

Genug des Lästern. Hier der Fix:

Code: Alles auswählen

Beispiel: Drag&Drop with ListIconGadget
        Zeile 169: 
            If TargetGadget <> -1
            ersetzen durch:
            If TargetGadget > 0
Bild
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

MVXA hat geschrieben:Da im ListIconGadget example ist ein kleiner Fehler (war auch nicht
anders zu erwarten, wenn man sich die IDE ansieht, dann ist der Bug
auch nicht weltbewegend /:->).
Wäre nett wenn du dir solche Kommentare in Zukunft sparen könntest.. das geht mir tierisch auf den Sack.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

@freak:
Gibt es Pläne Drag&Drop-Unterstützung in PB einzubauen,
so daß man es auf mehreren Platformen nutzen kann?

Oder wie sieht es mit andockbaren Fenstern aus?

PureBasic beherrscht bisher nur die minimalsten Dinge.
Wenn man professionelle Programme schreiben möchte,
kommt man um APIs der jeweiligen Platform nicht herum.

Das ist nicht böse gemeint, nicht das Du das falsch verstehst.
Mich würde nur mal interessieren ob ihr plant PB etwas aufzumöbeln
und moderner zu machen.
Meiner Meinung nach wäre das dringend nötig, da die Basisfunktionalität
wirklich sehr klein ist. Aber meine Meinung interessiert ja nicht -
ich würde trotzdem gerne mal Deine/Eure Meinung dazu wissen.
Wie sieht das PureBasic-Team das? Sieht es PB als perfekt an,
oder will es in der Richtung noch einiges tun?

Danke schonmal!
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Ich habe gerade Fr34ks Tuts angeschaut...udn dabei is mir einiges klar geworden-ich bin zu dumm für Callbacks...

Ich glaube ich beschäftige mich erstaml mit Callbacks oder so..

Oder hat jemand ne Lösung für mich die vll leichter verständlich ist?
Merci
Der Marc

EDIT-Wenn ich eines der Tuts in PB eifach laufen Lasse bekomme ich ne Fehlermeldung:
"Error at Line 159 - Object not Initialized"
Also mit ausprobieren is da auch ned...MGRBL
Zuletzt geändert von Tafkadasom2k5 am 23.10.2005 20:54, insgesamt 1-mal geändert.
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Oder hat jemand ne Lösung für mich die vll leichter verständlich ist?

ich denke, dass das nicht einfacher zu realisieren ist.

Für Funktionalitäten, die über die Standard-Befehle von PB hinausgehen,
muss man nun mal etwas tiefer in die Trickkiste greifen.

Grüße ... Kiffi
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

Danilo hat geschrieben:@freak:
Gibt es Pläne Drag&Drop-Unterstützung in PB einzubauen,
so daß man es auf mehreren Platformen nutzen kann?

Oder wie sieht es mit andockbaren Fenstern aus?

PureBasic beherrscht bisher nur die minimalsten Dinge.
Wenn man professionelle Programme schreiben möchte,
kommt man um APIs der jeweiligen Platform nicht herum.

Das ist nicht böse gemeint, nicht das Du das falsch verstehst.
Mich würde nur mal interessieren ob ihr plant PB etwas aufzumöbeln
und moderner zu machen.
Meiner Meinung nach wäre das dringend nötig, da die Basisfunktionalität
wirklich sehr klein ist. Aber meine Meinung interessiert ja nicht -
ich würde trotzdem gerne mal Deine/Eure Meinung dazu wissen.
Wie sieht das PureBasic-Team das? Sieht es PB als perfekt an,
oder will es in der Richtung noch einiges tun?

Danke schonmal!
Wir haben eine ziemlich lange Liste von Dingen gemacht die geändert/hinzugefügt
werden müssen, und sind jetzt gerade dabei das Library für Library umzusetzen.

Die zwei Dinge die du da ansprichst waren bis jetzt noch nicht geplant.
Ich habe es mal noch mit auf die Liste gesetzt, ob es aber wirklich umgesetzt wird kann ich aber nicht garantieren.
Antworten