AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi GetOpenFileNamePreview - unerwartetes Verhalten
Thema durchsuchen
Ansicht
Themen-Optionen

GetOpenFileNamePreview - unerwartetes Verhalten

Ein Thema von Christian Seehase · begonnen am 11. Dez 2002 · letzter Beitrag vom 14. Dez 2002
Antwort Antwort
Seite 1 von 3  1 23      
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#1

GetOpenFileNamePreview - unerwartetes Verhalten

  Alt 11. Dez 2002, 16:29
Moin Zusammen,

da ich in D5 nicht die "schicken, neuen" Open- und Savedialoge habe, wie sie in D6 schon implementiert sind, wollte ich mir dafür mal Komponenten erstellen.
Da sich die API Aufrufe für die xxxPreview Versionen von denen ohne Preview nicht sonderlich unterscheiden sollen die der Vollständigkeit halber auch mit aufgenommen werden.

Soweit ist das auch alles kein Problem und funktioniert auch.

Beim Aufruf der Preview Versionen ergibt sich nur ein kleines Problem:
Es gibt keinen Preview, ausser es wird der Dialog im Old-Style aufgerufen, dann klappts.
Sobald als Flag OFN_EXPLORER verwendet wird entfällt das Preview Control.

Ich habe auch schon überprüft, dass die richtige Funktion aus der richtigen DLL aufgerufen wird.

Auch wenn ich für den Aufruf der Funktion nur lStructSize, lpstrFilter (=PChar('AVI'#00'*.avi'#00#00)), lpstrFile (=StrAlloc(MAX_PATH)), nMaxFile (=MAX_PATH) und Flags (=OFN_EXPLORER, bzw. OFN_EXPLORER or OFN_ENABLESIZING) setze, und den Rest vorher mit FillChar auf 0 gesetzt habe passiert das gleiche. An der Kompo scheints also nicht zu liegen.
(bei Flags = 0 wird auch hier der Old-Style Dialog korrekt aufgerufen).

Hat jemand eine Idee?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 11. Dez 2002, 16:39
Die Openfilename-Striuktur hat unter WinNT eine andere Größe, siehe PSDK. Eventuell liegt es daran.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 11. Dez 2002, 16:58
Moin Luckie,

danke für den Tip, das hatte ich allerdings schon eingearbeitet bzw. berücksichtigt.
Ich hab's aber eben noch mal ausgetestet.
Wird die Grösse falsch angegeben (unter W2K) lässt er, naheliegender Weise, die PlacesBar weg. FlagsEx liegt ja im erweiterten Bereich.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 11. Dez 2002, 17:03
Hm, hätte mir eigentlich klar sein sollen, dass du daran schon gedacht hast.

Mit ist nur nichts besseres eingefallen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 11. Dez 2002, 18:11
Moin Luckie,

ich hätt's ja auch einfach übersehen haben können.
Was mich nur so überrascht:
Mit dem Old-Style Dialog klappts (aber wer will den schon ), nur mit dem heute üblichen nicht.
Auch googeln hat nichts gebracht, und MSDN auch nicht.
Es werden immer nur Beispiele gegeben, wie die Funktion eingebunden und aufgerufen wird, soweit war ich aber schon
Nirgends ein Hinweis auf eine Besonderheit für den "neuen Stil".
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6
  Alt 11. Dez 2002, 18:45
Ähem ... wo gibt´s diese Komponente, und wann ... Will mal neugierig schnüffeln und auch "neue" Dialoge verwenden. Die API-Deklaration würde mir auch schon reichen ...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 11. Dez 2002, 18:56
Moin Mathias,

nur um's noch mal deutlich zu machen:
Es geht um die Standard Open/Save Dialoge, die man ab D6 in der Komponentenpalette hat.
Die mit der PlacesBar links (Eigene Dateien...)

Das sind die APIs GetOpenFileName und GetSaveFileName.

Als Kompo wird's demnächst zum Test bereitstehen (wenn ich endlich weiss, was es mit diesem #&@%$@!! Preview Control auf sich hat)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#8
  Alt 11. Dez 2002, 19:25
Zitat von Christian Seehase:
nur um's noch mal deutlich zu machen:
Es geht um die Standard Open/Save Dialoge, die man ab D6 in der Komponentenpalette hat.
Die mit der PlacesBar links (Eigene Dateien...)
Deutlich genug, Christian. Aber ich hab´s auch schon beim ersten Mal kapiert. Ich schwöre ...

Zitat:
Das sind die APIs GetOpenFileName und GetSaveFileName.
Heißt das, ich müsste im PSDK nach ein paar neuen Stilen gucken, und könnte das bereits benutzen?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 11. Dez 2002, 19:34
Moin Mathias,

das sind nur die zwei (vier) Funktionsdeklarationen (mit je einem Parameter), eine Struktur und einige Konstanten.
Vielleicht auch schon vollständig in D5 (Unit Commdlg) deklariert.
(bis auf die Preview Funktionen)
Ich importiere mir die halt lieber selber
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#10
  Alt 11. Dez 2002, 19:40
Falls du die Ergänzung in "OPENFILENAME" meinst:
Code:
#if (_WIN32_WINNT >= 0x0500)
  void *        pvReserved;
  DWORD        dwReserved;
  DWORD        FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
Nein, die sind in Delphi 5 noch nicht vorhanden. Spontan würde ich sagen:
Code:
pvReserved: POINTER;
dwReserved: dword;
FlagsEx: dword;
Richtig?

Die "GetOpenFileNamePreview" habe ich zuerst in der COMDLG32.DLL gesucht, bin dann aber in der MSVFW32.DLL fündig geworden? Oder habe ich mich da vertan?

Ansonsten gucke ich mal, welche Konstanten neu sind, dann probiere ich mal, ob ich die Places-Bar zum Leuchten bringen kann.

Oder, falls du´s schneller da hast bzw. in meiner Spontanidee was korrigieren müsstest, wäre ich für einen Fix immer sehr dankbar.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz