Alternative zu XbpFileDialog

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Alternative zu XbpFileDialog

Beitrag von vorti »

Hallo,

gibt es eine Möglichkeit mir Textdateien aus einen Ordner anzeigen zu lassen, ohne die ganzen Optionen im XbpFileDialog (also nur ein Fenster mit den Dateien, ein Suchfeld und der Bestätigen/Abbrechen Button).
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Alternative zu XbpFileDialog

Beitrag von AUGE_OHR »

vorti hat geschrieben: Mo, 06. Nov 2017 9:06...ohne die ganzen Optionen im XbpFileDialog
XbpFileDialog() ist nun mal der Wrapper für den "Windows Common Dialog".

Das "Problem" bei XbpFileDialog() ist das es "im eigenen" Windows Thread Fenster läuft und darauf hat man aus Xbase++ keinen Zugriff :(

das was du haben willst kann man sich doch, mittels Formdesigner (XppFD.EXE), selbst zusammen stellen.
1 x XbpListbox() und 2 x XbpPushbutton() sowie ein XbpSLE() und dann CLASS Code generieren und schon hast du dein eigenes Fenster :-)

nun musst du "nur" noch die Listbox() füllen und die beiden Button "o:Activate" Callback Slots bestücken mit der gewünschten Aktion. wenn du damit dann noch Probleme hast : weiter Fragen stellen ... wir werden antworten ;-)
gruss by OHR
Jimmy
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: Alternative zu XbpFileDialog

Beitrag von vorti »

Wenn mir jemand veraten könnte wie ich die Listbox fülle, das wäre super. Ich weiß nicht wie ich die einzelnen Dateien ansprechen soll.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Alternative zu XbpFileDialog

Beitrag von Tom »

:AddItem() befüllt das/ein Listbox-Array. Das ginge auch mit einem XbpBrowse/XbpQuickbrowse, das ein Array direkt als Datenquelle verwendet, was den Vorteil hätte, dass man direkt auf die Rückgabe von Directory() zugreifen könnte, während die Listbox nur eindimensional arbeitet. Möglicherweise kannst Du beim Versuch, das umzusetzen, eine Menge Sachen lernen, aber vielleicht bist Du mit dem XbpFileDialog besser dabei.
Herzlich,
Tom
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: Alternative zu XbpFileDialog

Beitrag von vorti »

Bevor ich gleich in den Bildschirm schlage, frag ich nochmal nach.
Mein "directory" Befehl funktioniert leider nicht wie gewünscht. Wenn ich das Array manuell fülle, funktioniert es.

Code: Alles auswählen

LOCAL i := 0,;
      aTxtFiles := directory("C:\Users\Public\Documents\*"),;
      nLen := Len( aTxtFiles )

DO WHILE ++i <= nLen
         oListBox:addItem( aTxtFiles[i] )
ENDDO

RETURN oListBox
Ich habe jetzt so ziemlich alle Varianten die ich zu directory gefunden habe ausprobiert, aber bekomme immer ne Fehlermeldung das der Parameter von "addItem" nicht passt. "directory" sollte mir doch nen String ins array legen oder versteh ich da was falsch?
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Alternative zu XbpFileDialog

Beitrag von Tom »

Directory() liefert ein zweidimensionales Array. Der Dateiname steht an Stelle 1, Konstante "F_NAME" aus DIRECTRY.CH.

Entweder:

Code: Alles auswählen

oListBox:addItem( aTxtFiles[i,1] )
Oder:

Code: Alles auswählen

#include 'directry.ch'
oListBox:addItem( aTxtFiles[i,F_NAME] )
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Alternative zu XbpFileDialog

Beitrag von AUGE_OHR »

wer Directory() mit XbpQuickbrowse() verwenden will kann das Alaska Demo

Code: Alles auswählen

..\SOURCE\samples\basics\QBrowse\QBROWSE1.prg
nehmen.

---

wie schon gesagt kann man bei XbpFileDialog() nicht viel "einstellen" weil es die SHBrowseForFolderA API verwendet
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
viewtopic.php?f=23&t=8227

zu XbpFileDialog() noch dieser Thread
viewtopic.php?f=32&t=9981
was mich wieder zur Listbox() bringt

für eine Listbox() gäbe es noch den Windows API "Trick" um eine Listbox "on-fly" zu füllen.

Code: Alles auswählen

   oListBox := XbpListbox():new( ... )
   ...

   // statt einer FOR / NEXT
   //
   // FOR i := 1 TO 100
   //    oListBox:additem(LTRIM(STR(i)))
   // NEXT

   PimpMyXb(oListBox)

PROCEDURE PimpMyXb(oListBox,cMask)
LOCAL hWnd
LOCAL iAttr

DEFAULT cMask TO "*.*"

   hWnd  := oListBox:getHWND()
   iAttr := DDL_READWRITE + DDL_DIRECTORY
   SendMessageA( hWnd, LB_DIR, iAttr , cMask )

RETURN
damit kann man bis zu 32Kb "im Stück" (schnell) in eine Listbox schieben.
gruss by OHR
Jimmy
Antworten