AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

NonVCL OpenDialog

Ein Thema von Corpsman · begonnen am 26. Feb 2009 · letzter Beitrag vom 2. Mär 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#11

Re: NonVCL OpenDialog

  Alt 1. Mär 2009, 19:41
Zitat von Corpsman:
Delphi-Quellcode:
  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]);
Das zweite Argument ist
GtkWindow *parent Dürfte wohl nicht 0 sein.

In dem FileChooser Example (C:\lazarus\fpc\2.2.3\source\packages\gtk2\example s\filechooser\simple.pas) gibt es diese procedure:
Delphi-Quellcode:
* File dialog-callback. *)
procedure dialog_callback (widget : PGtkWidget;
                           data : gpointer); cdecl;
var
  dialog : PGtkWidget;
  window : PGtkWindow;
  action : gint;
  filename : Pgchar;

begin
  { Get a pointer to the main window }
  window := g_object_get_data (G_OBJECT(widget), MAIN_WINDOW_KEY);

  action := gint (data);

  case action of
        ACTION_OPEN:
                begin
                  dialog := gtk_file_chooser_dialog_new ('Open File',
                                                         window,
                                                         GTK_FILE_CHOOSER_ACTION_OPEN,
                                                         GTK_STOCK_OPEN, [GTK_RESPONSE_ACCEPT,
                                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                                         NULL]);

                end; { ACTION_OPEN}
        ACTION_SAVE:
                begin
                  dialog := gtk_file_chooser_dialog_new ('Save File',
                                                         window,
                                                         GTK_FILE_CHOOSER_ACTION_SAVE,
                                                         GTK_STOCK_SAVE, [GTK_RESPONSE_ACCEPT,
                                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                                         NULL]);

                end; { ACTION_SAVE }
        else begin
                 { This should never happen }
                g_print ('Something is wrong here!!!.'#13#10);
                g_print ('No dialog created.'#13#10);
                {writeln crashes on my system running linux --- check why }
                exit;
             end;
  end; { case }


  if gtk_dialog_run (GTK_DIALOG (dialog)) = GTK_RESPONSE_ACCEPT then
  begin
     filename := gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
     g_print ('Filename %s selected.'#13#10, [filename]);
 // writeln ('File ', filename, ' selected.');
 // ToDO:
 // writeln crashes... check why

     g_free (filename);
  end;

  gtk_widget_destroy (dialog);
end;
Du solltest also
Delphi-Quellcode:
var
  window : PGtkWindow;
begin
  { Get a pointer to the main window }
  window := g_object_get_data (G_OBJECT(widget), MAIN_WINDOW_KEY);

  dialog := gtk_file_chooser_dialog_new ('Open File',
                                         window,
                                         GTK_FILE_CHOOSER_ACTION_OPEN,
                                         GTK_STOCK_OPEN, [GTK_RESPONSE_ACCEPT,
                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                         NULL]);
einfügen
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#12

Re: NonVCL OpenDialog

  Alt 1. Mär 2009, 20:27
Ich verstehe ehrlich gesagt nicht, warum du nicht die VCL/LCL verwendest. Die tut die ganze Arbeit mit dem OpenDialog nämlich schon für dich - das ist ja eben der Sinn von solchen Abstrahierungsebenen - und die paar Kilobyte, die deine Anwendung größer werden, sind ja wirklich kein Grund.

Zum Beispiel ist ja nicht wirklich gesagt, dass ich unter Linux GTK installiert habe. Verwendest du die LCL, kannst du mit einem Klick zum Beispiel auf QT ausweichen - oder willst du dafür auch noch einen OpenDialog implementieren?
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#13

Re: NonVCL OpenDialog

  Alt 2. Mär 2009, 14:25
Mir düngt ich habe vergessen zu schreiben wieso das ganze.

Also

Ich habe eigentlich eine OpenGL anwendung gebastelt.

Und diese will ich Platformunabhängig haben.

Das geht mittels SDL.

Aber alles SDL das ich habe funktioniert eben nur ohne VCL, bzw LCL.

Es kann gut sein das es ne Möglichkeit gibt wie man das machen kann das SDL mit VCL, bzw LCL läuft, wie das geht, weis ich aber leider nicht.

@Igel457

Ich nutze auch viel Lieber die VCL, LCL, und wenn ich wüste wie man SDL mit VCL, LCL zum laufen bringt, ich würde es machen.


@Garfield

Das Prob ist das ich mit SDL kein Pointer auf ein Main Fenster habe, und deswegen kann ich da auch nichts übergeben, und habe deswegen eine 0 übergeben.

Der Dialog wird ja geöffnet und gibt mir sogar die Filename zurück, die ich laden soll.

nur Leider schliest sich der Dialog eben nicht, und deswegen habe ich dann die Probleme.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#14

Re: NonVCL OpenDialog [Gelöst]

  Alt 2. Mär 2009, 14:48
AHH endlich, ich habe des Rätsels Lösung

der Code

Delphi-Quellcode:
  While gtk_events_pending() = 1 Do
    gtk_main_iteration_do(false);
Am ende eingefügt löst das Problem und alles läuft 1a.

Igels einwand bleibt zwar bestehen, aber mir gehts darum das es überhaupt unter Linux geht.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#15

Re: NonVCL OpenDialog

  Alt 2. Mär 2009, 16:33
Zitat:
@Igel457
Ich nutze auch viel Lieber die VCL, LCL, und wenn ich wüste wie man SDL mit VCL, LCL zum laufen bringt, ich würde es machen.
Das geht ganz einfach: Du darfst bei Lazarus nur nicht das Application.Initialize am Anfang des Programms vergessen und sonst kannst du deinen bisherigen Code verwenden. Dann kannst du direkt ohne irgendwelche Umwege einen OpenDialog erstellen und verwenden. Siehe: http://andorra.cvs.sourceforge.net/v...w=markup#l_186
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:49 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