Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Alternative zu XbpFileDialog

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
vorti
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mo, 25. Sep 2017 12:21

Alternative zu XbpFileDialog

Beitrag von vorti » Mo, 06. Nov 2017 9:06

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: 10674
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Alternative zu XbpFileDialog

Beitrag von AUGE_OHR » Mo, 06. Nov 2017 9:55

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
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mo, 25. Sep 2017 12:21

Re: Alternative zu XbpFileDialog

Beitrag von vorti » Di, 07. Nov 2017 8:59

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: 6831
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Alternative zu XbpFileDialog

Beitrag von Tom » Di, 07. Nov 2017 9:23

: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
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Mo, 25. Sep 2017 12:21

Re: Alternative zu XbpFileDialog

Beitrag von vorti » Di, 07. Nov 2017 12:04

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: 6831
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Alternative zu XbpFileDialog

Beitrag von Tom » Di, 07. Nov 2017 12:14

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: 10674
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Alternative zu XbpFileDialog

Beitrag von AUGE_OHR » Di, 07. Nov 2017 22:18

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