Seite 2 von 3
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 07.08.2010 13:35
				von edel
				deutsche Hilfe hat geschrieben:
Beschreibung
Erstellt eine Baum-Ansicht eines Verzeichnis-Baums, genau wie der Explorer dies tut. Es ermöglicht dem Anwender, durch sein Dateisystem zu navigieren und eine Datei oder ein Verzeichnis auszuwählen. 
 
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 07.08.2010 14:31
				von michel51
				Richtig!
Auswählen, aber nicht im Aufruf der Funktion. Hier gilt nur "Verzeichnis"
Oder liege ich da ganz falsch ?
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 07.08.2010 15:40
				von edel
				michel51 hat geschrieben:Richtig!
Auswählen, aber nicht im Aufruf der Funktion. Hier gilt nur "Verzeichnis"
Oder liege ich da ganz falsch ?
Nein, stimmt schon, mal abgesehen von den Pattern. Aber schau mal :
dann kann das ExplorerTreeGadget NUR Verzeichnisse darstellen und keine Dateien.
Das ist schlicht falsch, denn das Control kann durchaus beides anzeigen. Da hast du dich dann wohl etwas falsch ausgedrueckt.
 
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 08.08.2010 12:59
				von michel51
				edel hat geschrieben:michel51 hat geschrieben:Richtig!
Auswählen, aber nicht im Aufruf der Funktion. Hier gilt nur "Verzeichnis"
Oder liege ich da ganz falsch ?
Nein, stimmt schon, mal abgesehen von den Pattern. Aber schau mal :
dann kann das ExplorerTreeGadget NUR Verzeichnisse darstellen und keine Dateien.
Das ist schlicht falsch, denn das Control kann durchaus beides anzeigen. Da hast du dich dann wohl etwas falsch ausgedrueckt.
 
Da hast du sicher nicht so ganz unrecht. 
 
Was war denn die ursprüngliche Frage? Olaf wollte eine Datei mit den ExplorerTreeGadget nicht nur darstellen, sondern auch markieren (als default voreinstellen), wenn die den ersten Post richtig verstanden habe.
Das ist aber nicht möglich, da nur 
Verzeichnis vorgesehen ist.
Die Darstellung von Dateien im Tree ist sicher möglich und die Auswahl per Mausclick auch (habs jetzt nicht probiert).
 
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 09.08.2010 09:55
				von Olaf.Renns
				Also ich leite vom Namen "ExplorerTreeGadget" eine strukturierte Datei- und Verzeichnisdarstellung ab. Zum Windows Explorer gehören ja auch eine vollständige Anzeige aller Inhalte und standartmäßig zeigt das Gadget ja auch alles an. Die Auswahl lässt sich ja dann mit #PB_Explorer_NoFiles und den anderne "No" Flags einschränken. Zudem arbeitet das Ganze ja auch mit Pattern. Somit sehe ich den Fokus schon auch auf den Dateiinhalt, was eine Vorauswahl (auch gerade im Zusammenhang mit dem Default-Verzeichnis und den Pattern) durchaus Sinn macht.
Die Anpassungen von edel führen zum Erfolg. Jetzt läuft das Ganze komplett richtig. Vielen Dank, Gemeinde!
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 11.07.2011 22:21
				von Darie
				CODE von Edel fürs ExplorerTreeGadget:
Code: Alles auswählen
Procedure SelectFile(Gadget.i, File.s)
  Protected path.s
  Protected hItem.i
  Protected item.TVITEM
  Protected buffer.s{#MAX_PATH}
  Protected result.i
 
  path = GetPathPart(File)
 
  If Not path
    path = GetGadgetText(Gadget)
    path = GetPathPart(path)
  EndIf
 
  file = GetFilePart(file)
 
  SetGadgetText(Gadget,path) 
 
  hItem = SendMessage_(GadgetID(Gadget),#TVM_GETNEXTITEM, #TVGN_CARET, 0)
 
  If hItem
    hItem = SendMessage_(GadgetID(Gadget),#TVM_GETNEXTITEM, #TVGN_CHILD, hItem)       
   
    If hItem
     
      item\mask       = #TVIF_TEXT | #TVIF_HANDLE     
      item\pszText    = @buffer   
      item\cchTextMax = #MAX_PATH
     
      While hItem
       
        item\hItem    = hItem 
        SendMessage_(GadgetID(Gadget), #TVM_GETITEM, 0, item)     
       
        If CompareMemoryString(@file,@buffer,#PB_String_NoCase) = #PB_String_Equal
          SendMessage_(GadgetID(Gadget),#TVM_SELECTITEM, #TVGN_CARET, hItem)
          result = #True
          Break
        EndIf     
       
        hItem = SendMessage_(GadgetID(Gadget),#TVM_GETNEXTITEM, #TVGN_NEXT, hItem)
      Wend
           
    EndIf
   
  EndIf
 
  ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 400, 200, "ExplorerTreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ExplorerTreeGadget(0, 10, 10, 380, 180, "C:\Windows\*.exe")
  SetActiveGadget(0)
  Debug SelectFile(0,"notepad.exe")
  ;SelectFile(0,"C:\Windows\notepad.exe")
 
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Hatte gehofft, dass der Code auch fürs ExplorerListGadget funktioniert, leider nicht 

 
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 11.07.2011 23:08
				von RSBasic
				Mit Hilfe der Suche:
Code: Alles auswählen
EnableExplicit
Define EventID
Procedure FindListItem(GadgetID.w,Expression.l,fMode.b=0,Column.b=0,iStart.l=0)
  Protected hwndListbox.l, Position.l, ItemCount.l, Length.l, i.l, Label.s
  Protected LVITEM.LV_ITEM
  
  If Not IsGadget(GadgetID) : ProcedureReturn -1 : EndIf
  
  hwndListbox = GadgetID(GadgetID) : Position = -1
  
  If fMode
    Position = Expression
  Else
    ItemCount = CountGadgetItems(GadgetID) - 1
    
    Length = lstrlen_(Expression)
    
    For i=iStart To ItemCount
      Label = GetGadgetItemText(GadgetID,i,Column)
      
      If CompareMemoryString(Expression,@Label,0,Length) = 0
        Position = i : Break
      EndIf
    Next
  EndIf
  SendMessage_(hwndListbox,#WM_VSCROLL,#SB_TOP,0)
  SendMessage_(hwndListbox,#LVM_ENSUREVISIBLE,Position,1)
  
  If Position > SendMessage_(hwndListbox,#LVM_GETCOUNTPERPAGE,0,0)-1
    SendMessage_(hwndListbox,#WM_VSCROLL,#SB_PAGEDOWN,0)
    SendMessage_(hwndListbox,#WM_VSCROLL,#SB_LINEUP,0)
  EndIf   
  
  LVITEM\mask = #LVIF_STATE   
  LVITEM\state = #LVIS_SELECTED
  LVITEM\stateMask = #LVIS_SELECTED
  SendMessage_(GadgetID(GadgetID), #LVM_SETITEMSTATE, Position, @LVITEM)
  
  SetActiveGadget(GadgetID)
  
  ProcedureReturn Position
EndProcedure
If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ExplorerListGadget(1,0,0,WindowWidth(0),WindowHeight(0),"C:\Windows\*.exe",0)
  
  FindListItem(1,@"notepad.exe",0,0,0)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
 
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 11.07.2011 23:43
				von Darie
				Code: Alles auswählen
LVITEM\mask = #LVIF_STATE   
LVITEM\state = #LVIS_SELECTED
LVITEM\stateMask = #LVIS_SELECTED
SendMessage_(GadgetID(GadgetID), #LVM_SETITEMSTATE, Position, @LVITEM)
Danke fürs Heraussuchen, die Datei ist danach die aktuelle, nur leider nicht mit einem blauen Balken selektiert... sollte aber eigentlich so sein, oder nicht ?
Ich glaube es würde sich für mich lohnen etwas intensiver in die Win-Api einzusteigen.....
 
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 11.07.2011 23:46
				von RSBasic
				Also bei mir wird der Eintrag markiert:

 
			 
			
					
				Re: ExplorerTreeGadget mit Datei als Vorauswahl
				Verfasst: 11.07.2011 23:50
				von Darie
				sehr komisch, bei mir leider nicht..... mmmmmhhhhh
zumindest in meinem Programm nicht, wenn ich das Snippet selber ausführe, ist "notepad.exe" markiert, dann such ich mal in meinem Code weiter.... Danke nochmal..