Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   NonVCL OpenDialog (https://www.delphipraxis.net/129825-nonvcl-opendialog.html)

Corpsman 26. Feb 2009 10:14


NonVCL OpenDialog
 
Hossa,

Ich möchte eine Anwendung Schreiben die sowohl unter Lazarus / Linux als auch unter Win / Delphi5 Läuft.

Meine Anwendung Arbeitet mit OpenGL, also habe ich mich entschieden das ganze mittels SDL zu machen.

Die Anwendung steht auch schon, und OpenGL ist Kein problem.

Das Problem ist nur das bedingt durch SDL alles NonVCL läuft. Und nun will ich natürlich auch Dateien aus meinem Programm heraus laden.

Das Problem ist Klar TOpenDialog ist Teil der VCL und damit nun nicht mehr Verfügbar.

Wie Kriege ich also nun einen OpenDialog ?

Weiteres Problem der Dialog sollte gleich unter beiden Betriebsystemen laufen, zur not kann ich aber noch mittels Compilerswitches auf 2 unterschiedliche Dialoge ausweichen.

Die Suchfunktion hat unter "nonvcl opendialog" leider nur 3 Beiträge gefunden und alle 3 sind nicht Brauchbar :(

Ist da drausen jemand der mir weiterhelfen kann ?

himitsu 26. Feb 2009 10:24

Re: NonVCL OpenDialog
 
schau mal in meinen FileSplitter, da ist ein NonVCL-Opendialog drin.

[add]
siehe MSDN-Library durchsuchenGetOpenFileName

turboPASCAL 26. Feb 2009 10:36

Re: NonVCL OpenDialog
 
Liste der Anhänge anzeigen (Anzahl: 1)
Oder sowas vill.

Corpsman 26. Feb 2009 11:20

Re: NonVCL OpenDialog
 
Cool thx,

ich installiere noch ubuntu und dann kann ichs testen und berichten ;).

Luckie 26. Feb 2009 12:31

Re: NonVCL OpenDialog
 
Oder hier: http://delphitutorials.michael-puff.de

Corpsman 27. Feb 2009 11:02

Re: NonVCL OpenDialog
 
Hmm, der OpenDialog von Turbopascal tut 1a, allerdings nur unter Windows.

Nu bin ich noch auf der Suche nach einer Ubuntu variante ...

himitsu 27. Feb 2009 11:20

Re: NonVCL OpenDialog
 
jupp, da wird ja auch die WinAPI verwendet und die ist, wie der Name schon sagt, Windows :stupid:

Aber vermutlich hat Ubuntu(Linux) da auch eine passende API dafür ... heißt bestimmt nur anders und mit etwas anderen Parametern.

Corpsman 27. Feb 2009 13:40

Re: NonVCL OpenDialog
 
D.h. hier ist keiner der mir das für Linux verraten kann ?

Garfield 28. Feb 2009 19:03

Re: NonVCL OpenDialog
 
Das geht wohl über Widgets. Zum Beispiel GtkWidget, wxWidget, Qt

http://www.gtk.org/features.html
http://www.wxwidgets.org/
http://www.qtsoftware.com/

http://wwwuser.gwdg.de/~kboehm/ebook/27_kap21_w6.html
http://developer.gimp.org/api/2.0/gtk/GtkWidget.html
http://doc.trolltech.com/4.3/qdialog.html

Corpsman 1. Mär 2009 08:24

Re: NonVCL OpenDialog
 
Thx werde die Tuts mal versuchen,

Mittlerweile hab ich noch nen 2.Post zu dem thema beim Lazarusforum gemacht.

Mein Code den ich bisher habe Funktioniert soweit auch schon, das er den Dialog öffnet und ich die File bekomme, nur beendet sich der dialog leider nicht. Ich kriege dann irgendwann nen Timeout und dann kachelt die ganze anwendung ab.

unter Win ists kein Thema da gehts.

Delphi-Quellcode:
unit uOpendialog;
 
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
 
interface
 
uses
{$IFDEF FPC}
  Glib2, Gdk2, Gtk2,
{$ELSE}
 
{$ENDIF}
  Classes, SysUtils;
 
Function OpenFile(Filter:String):String;
 
implementation
 
Function OpenFile(Filter:String):String;
var
  dialog  : PGtkWidget;
  filename : Pgchar;
begin
  Result := '';
  gtk_init (0,0);
  dialog := gtk_file_chooser_dialog_new ('Open File',
                                                         0,
                                                         GTK_FILE_CHOOSER_ACTION_OPEN,
                                                         GTK_STOCK_OPEN, [GTK_RESPONSE_ACCEPT,
                                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                                         NULL]);
  if gtk_dialog_run (GTK_DIALOG (dialog)) = GTK_RESPONSE_ACCEPT then
  begin
     filename := gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
     result := Filename;
     g_free (filename);
  end;
  gtk_widget_destroy (dialog);
end;
 
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 Uhr.
Seite 1 von 2  1 2      

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