Seite 1 von 1

Wünsche mir einen KillFileRequester

Verfasst: 21.12.2010 19:49
von hjbremer
ich wünsche mir einen KillFileRequester.

denn beim OpenFileRequester steht öffnen, ich hätte aber gerne das da löschen oder zumindest ok steht.

Re: Wünsche mir einen KillFileRequester

Verfasst: 21.12.2010 20:14
von DarkDragon
Dann wärs aber doch ein "DeleteFileRequester" und nicht "KillFileRequester". Prozesse werden getötet, Dateien werden gelöscht.

Re: Wünsche mir einen KillFileRequester

Verfasst: 21.12.2010 20:44
von RSBasic
@hjbremer
Ich hab mal für dich einen Code mit Hilfe dieses Threads ( http://www.purebasic.fr/english/viewtop ... 12&t=38051 ) geschrieben:

Code: Alles auswählen

EnableExplicit

Define EventID
Define File$

Global WinMainX, WinMainY, WinMainWidth, WinMainHeight

Procedure RequesterCallBack(hWnd, uMsg, wParam, lParam)
  hWnd = FindWindow_(#Null,"Datei löschen")
  If hWnd
    hWnd = FindWindowEx_(hWnd,#Null,#Null,"Ö&ffnen")
    If hWnd
      SetWindowText_(hWnd,"Löschen")
    EndIf
  EndIf

  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(1,10,10,100,20,"DeleteFileRequester",0)
 
  SetWindowCallback(@RequesterCallBack())
 
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 1
      File$ = OpenFileRequester("Datei löschen","","",0,0)
      If File$
        Debug File$
      EndIf
  EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
  End
EndIf
ForEver
EndIf
Ist es das, was du möchtest?

Sieht dann so aus:
Bild

Re: Wünsche mir einen KillFileRequester

Verfasst: 21.12.2010 22:24
von hjbremer
Cool, sehr gut, danke RSBasic

normalerweise wärs das, aber ich bräuchte das für ein kleines Toolfenster, welches in den verschiedensten Programmen via Include eingebunden wird, und das sollte keinen Callback haben, denn in PB gibt es ja nur einen Callback im Mainprogramm.

Ich könnte natürlich meine eigene Dialogbox machen, oder ein Treegadget benutzen, aber der Aufwand nur für ein klitzekleines Wort. Das ist zuviel des Guten.

Re: Wünsche mir einen KillFileRequester

Verfasst: 21.12.2010 22:27
von HeX0R
hjbremer hat geschrieben:[...]denn in PB gibt es ja nur einen Callback im Mainprogramm.
SetWindowCallback() hat einen optionalen Parameter...

Re: Wünsche mir einen KillFileRequester

Verfasst: 21.12.2010 22:32
von RSBasic
@hjbremer
Und wie sieht es mit einem Thread aus? Ginge das?
Entscheidend sind folgende Code-Zeilen:

Code: Alles auswählen

hWnd = FindWindow_(#Null,"Datei löschen")
  If hWnd
    hWnd = FindWindowEx_(hWnd,#Null,#Null,"Ö&ffnen")
    If hWnd
      SetWindowText_(hWnd,"Löschen")
    EndIf
  EndIf
Hier mal ein Thread-Beispiel:

Code: Alles auswählen

EnableExplicit

Define File$

Procedure RequesterThread(z)
  Protected hWnd
  
  Repeat
    hWnd = FindWindow_(#Null,"Datei löschen")
    If hWnd
      hWnd = FindWindowEx_(hWnd,#Null,#Null,"Ö&ffnen")
      If hWnd
        SetWindowText_(hWnd,"Löschen")
      EndIf
    EndIf
    Delay(100)
  Until hWnd
  
EndProcedure

CreateThread(@RequesterThread(),0)

File$ = OpenFileRequester("Datei löschen","","",0,0)
If File$
  Debug File$
EndIf
\\Edit:
Ja, HeX0R hat Recht. Da gibt es einen optionalen Parameter, falls dir das hilft.

Re: Wünsche mir einen KillFileRequester

Verfasst: 22.12.2010 00:37
von hjbremer
HeX0R hat geschrieben:
hjbremer hat geschrieben:[...]denn in PB gibt es ja nur einen Callback im Mainprogramm.
SetWindowCallback() hat einen optionalen Parameter...

Man hätte trotzdem 2 Callbacks, habe mit dem Parameter schon gearbeitet, und 2 Callbacks im Programm gehabt. Hat nicht so recht funktioniert. Wohl mangels Wissen.

Aber die Sache mit dem Thread funktioniert

Vielen Dank für die Mühe. :D :allright: