Wo ist die unit "gdktypes" ?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Wo ist die unit "gdktypes" ?

Beitrag von Mathias »

Wen ich folgendes kompilieren will, findet er die Unit "gdktypes" nicht.
Aber wen ich auf "gdktypes" [Ctrl + Enter] drücke, wird die Unit geöffnet.

Code: Alles auswählen

uses
  Cairo,
  glib,
  gdktypes, // Hier motzt er
  gdkt
  gtk;
Woran liegt dies ?

Ich verwende Lazarus 2.2.4 / FPC 3.2.2
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Wo ist die unit "gdktypes" ?

Beitrag von theo »

Die gehört zu GTK1.
Was willst denn du damit?

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wo ist die unit "gdktypes" ?

Beitrag von Mathias »

So findet er es:

Code: Alles auswählen

uses
  Cairo, glib2, gdk2, gtk2;
Nur stehe ich schon wieder an.

Code: Alles auswählen

(project1:6968): GLib-GObject-WARNING **: 14:44:01.146: ../../../gobject/gsignal.c:2620: signal 'draw' is invalid for instance '0x2272630' of type 'GtkDrawingArea'
Irgendwas ist mit meinem "on_draw_event" nicht in Ordnung.

In C sieht es so aus:

Code: Alles auswählen

  g_signal_connect(G_OBJECT(darea), "draw",  G_CALLBACK(on_draw_event), NULL); 
Pascal:

Code: Alles auswählen

  function on_draw_event(widget: PGtkWidget; cr: Pcairo_t; user_data: Pgpointer): gboolean;  //   cdecl;
Was mache ich falsch ?

Quelle: https://zetcode.com/gfx/cairo/basicdrawing/
Dateianhänge
GTK_and_Cairo.zip
(2.61 KiB) 35-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Wo ist die unit "gdktypes" ?

Beitrag von Winni »

Mathias hat geschrieben:
Mo 23. Jan 2023, 14:47
Was mache ich falsch ?


Du liest dauernd irgendwelche C-Quellen, anstatt Dich mal an Pascal zu gewöhnen.

Winni

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Wo ist die unit "gdktypes" ?

Beitrag von theo »

Wahrscheinlich ist der Beispielcode für GTK3.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wo ist die unit "gdktypes" ?

Beitrag von Mathias »

theo hat geschrieben:
Mo 23. Jan 2023, 15:31
Wahrscheinlich ist der Beispielcode für GTK3.
Gut möglich,
Jetzt habe ich mein erstes cairo mit gtk hingekriegt.

Code: Alles auswählen

program project1;
uses
  Cairo, glib2, gdk2, gtk2;

  function on_Exposs_Event(widget: PGtkWidget; event: PGdkEventExpose; Data: gpointer): gboolean;
  var
    cr: Pcairo_t;
  begin
    cr := gdk_cairo_create(widget^.window);

    cairo_move_to(cr, 0, 100);
    cairo_line_to(cr, 200, 100);
    cairo_stroke(cr);

    cairo_destroy(cr);
    Result := False;
  end;

  function main: integer;
  var
    window: PGtkWidget;
  begin
    gtk_init(@argc, @argv);
    window := gtk_window_new(GTK_WINDOW_TOPLEVEL);

    g_signal_connect(window, 'destroy', G_CALLBACK(@gtk_main_quit), nil);
    g_signal_connect(window, 'expose-event', G_CALLBACK(@on_Exposs_Event), nil);

    gtk_widget_set_app_paintable(window, gTRUE);
    gtk_widget_show_all(window);

    gtk_main;
    Result := 0;
  end;

begin
  main;
end.   
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten