Positionieren von Requestern

Fragen und Bugreports zur PureBasic 4.0-Beta.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Positionieren von Requestern

Beitrag von real »

Hi,

gibt es eine einfache Möglichkeit, sowas wie #PB_Window_ScreenCentered bei Requestern anzugeben, OHNE es (bei Win32) umständlich über das Handle des Window zu nachzuarbeiten?

Hab gerade ein kleines Programm, bei dem einmal ein InputRequester() und gleich anschließend ein OpenFileRequester() aufgerufen werden. Der InputRequester ist ScreenCentered, der OpenFileRequester jedoch links oben in der Ecke. :(

@André: Vielleicht kann Fred ja sowas noch ergänzen (wenn ich nicht nur zu blöd bin, es zu finden)?

Gruß
René
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Positionieren von Requestern

Beitrag von ts-soft »

Der InputRequester ist ein reines PureBasic-Control, während der
OpenFileRequester ein API-Aufruf ist. Die Position richtet sich nach der
Position Deines Fensters und wird von Windows bestimmt. Solltest Du kein
Fenster offen haben, erstelle einfach vorher eins (invisible).
Habs aber nicht getestet!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Ich hab's mal getestet. Funktioniert fast...

Leider erscheint der OpenFileRequester selbst dann nicht direkt ScreenCentered, wenn ich das Window auf ScreenCentered setze. Und wenn ich mein Dummy-Window unsichtbar erzeuge (oder per HideWindow() unsichtbar mache) erscheint der OpenFileRequester wieder komplett links oben in der Ecke. :cry:
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Invisible geht so nicht, da das Fenster, auf dem sich das OpenFileRequester beziehen soll, nicht vorhanden ist.

Probiere dieses, dann siehst du was da passiert. Naja, damit das OpenFileRequester wirklich in der Mitte angezeigt wird, muss du nur noch die Größe des Windows anpassen.

Code: Alles auswählen

StandardFile$ = "C:\autoexec.bat"   ; anfänglichen Pfad + Dateiname festlegen
  ; Mit dem nächsten String werden die Pattern (mit "|" als Trennzeichen) für anzuzeigende
  ; Dateitypen festgelegt:
  ;  Erster:  "Text (*.txt)" als Name, ".txt" und ".bat" als erlaubte Dateiendungen
  ;  Zweiter: "PureBasic (*.pb)" als Name, ".pb" al erlaubte Dateiendung
  ;  Dritter: "Alle Dateien (*.*) als Name, "*.*" als erlaubte Dateiendung, gültig für alle Dateien
   OpenWindow(0,0,0,300,400,#PB_Window_ScreenCentered| #PB_Window_BorderLess ,"mytest")
   Pattern$ = "Text (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Alle Dateien (*.*)|*.*"
  Pattern = 0    ; wir verwenden den ersten von drei möglichen Pattern als Standard
  File$ = OpenFileRequester("Bitte Datei zum Laden auswählen", StandardFile$, Pattern$, Pattern,16)
  HideWindow(0, 1)  
  If File$
    MessageRequester("Information", "Sie haben folgende Datei ausgewählt:"+Chr(10)+File$, 0)
  Else
    MessageRequester("Information", "Der Requester wurde abgebrochen.", 0) 
  EndIf
Bild
Win11 Pro 64-Bit, PB_6.11b1
Gesperrt