🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #495

Re: GTK+ y Pascal

#495
From: |||RIP|||
Date: Sun, 16 Dec 2007 22:36
133 lines
5915 bytes
PheStaR escribi�:
>> Estoy haciendo un programa con Pascal y el "fabuloso" GTK+.
>>
>> Tengo 3 entradas de texto y una funcion que deberia recoger como
>> parametros los valores que les damos a esas entradas pero no tengo ni
>> idea de como pasar esos parametros a la funcion por lo que he empleado
>> una variable global, un vector de cadenas, en el que meto el valor de
>> cada entrada y luego en la funcion que que debe recibirlos leo ese vector.
>> Funciona el invento, es una guarrada lo se, pero mi pregunta es: �como
>> paso parametros a la funcion que los necesita?
>>
>> Algun tutorial donde se vea algo de esto porque de los que me he
>> encontrado solo usan una entrada de texto.
>>
>> Saludos y gracias.
> 
> �Practicas de MTP en Le�n? Yo las hice hace ya unos cuantos a�os... Bueno,
> para pasar parametros a funciones creo que hay que usar un puntero a los
> datos que quieres pasar como �ltimo par�metro al llamar gtk_signal_connect,
> y luego ya se pueden disponer de esos datos en la funci�n llamada cuando se
> produce la se�al. Pondr�a algo de ejemplo pero no tengo nada a mano (lo
> tengo todo en otro ordenador que no tengo aqu�), de todas formas busca
> ejemplos en C que es m�s o menos igual y hay bastante m�s que en
> freepascal.
Pues si en Leon y MTP.

La cosa es que a la funcion crearXML le quiero pasr lo que meto en 
entrada1, entrada2 y entrada3 pero no tengo ni zorra de como indicarselo.

Te pego el codigo, que es una guarrada, para que lo veas.

Saludos y gracias!

*********************************************************************

PROGRAM practica06;

USES gtk, gdk, glib, dos, unix;

VAR
     vector: array[1..3] of string;
     i: byte;

     window: pGtkWidget;
     cajaFondo, cajaFondo2, cajaIzd, cajaDer, cajaSalir: pGtkWidget;
     btnSalir, btnMakeskelCrear, entrada1, entrada2, entrada3: pGtkWidget;

PROCEDURE delete_event(widget: pGtkWidget; event: pGdkEvent; data: 
pgpointer );
BEGIN
     gtk_main_quit();
END;

PROCEDURE textoEntrada(widget, entrada: pGtkWidget); cdecl;
VAR texto: pgchar;
BEGIN
     texto := gtk_entry_get_text(pGtkEntry(entrada));
     //writeln(entry_text);
     vector[i] := texto;
     i:=i+1;
END;

PROCEDURE crearXML(widget, entrada1: pGtkWidget); cdecl;
VAR comando: string;
BEGIN
     comando :='makeskel --package='+ vector[0] + '  --input=' + 
vector[1] + ' --output=' + vector[2];
     //writeln(comando);
     shell(comando);
END;

BEGIN
     i := 0;
     gtk_init(@argc, @argv);

     // Ventana
     window := gtk_window_new(GTK_WINDOW_TOPLEVEL);
     gtk_widget_set_usize( GTK_WIDGET (window), 400, 400);
     gtk_signal_connect(GTK_OBJECT(window), 'delete_event', 
GTK_SIGNAL_FUNC(@gtk_exit), NIL);
     gtk_container_set_border_width(GTK_CONTAINER(window),10);
     // **********************************************

     cajaFondo := gtk_vbox_new(FALSE, 0);
     cajaFondo2:= gtk_hbox_new(FALSE, 0);

     // Parte de la zona izquierda
     cajaIzd := gtk_vbox_new(false, 0);

     entrada1 := gtk_entry_new_with_max_length(50);
     gtk_signal_connect(pGtkOBJECT(entrada1), 'activate', 
GTK_SIGNAL_FUNC(@textoEntrada), entrada1);
     gtk_box_pack_start(pGtkBOX(cajaIzd), entrada1, true, false, 0);

     entrada2 := gtk_entry_new_with_max_length(50);
     gtk_signal_connect(pGtkOBJECT(entrada2), 'activate', 
GTK_SIGNAL_FUNC(@textoEntrada), entrada2);
     gtk_box_pack_start(pGtkBOX(cajaIzd), entrada2, false, true, 5);


     entrada3 := gtk_entry_new_with_max_length(50);
     gtk_signal_connect(pGtkOBJECT(entrada3), 'activate', 
GTK_SIGNAL_FUNC(@textoEntrada), entrada3);
     gtk_box_pack_start(pGtkBOX(cajaIzd), entrada3, false, false, 5);

     btnMakeskelCrear := gtk_button_new_with_label('Crear XML');
     gtk_signal_connect_object(pGtkObject(btnMakeskelCrear), 'clicked', 
GTK_SIGNAL_FUNC(@crearXML), GTK_OBJECT(window));
     gtk_box_pack_start(GTK_BOX(cajaIzd), btnMakeskelCrear, TRUE, true, 5);

     gtk_box_pack_start(GTK_BOX(cajaFondo2), cajaIzd, FALSE, FALSE, 0);
     // **********************************************

     // Parte de la zona derecha
     cajaDer := gtk_vbox_new(FALSE, 0);
     gtk_box_pack_start(GTK_BOX(cajaFondo2), cajaDer, FALSE, FALSE, 0);

     gtk_box_pack_start(GTK_BOX(cajaFondo), cajaFondo2, FALSE, FALSE, 0);

     cajaSalir := gtk_hbox_new(FALSE, 0);

     btnSalir := gtk_button_new_with_label('Salir');
     gtk_signal_connect_object(pGtkObject(btnSalir), 'clicked', 
GTK_SIGNAL_FUNC(@delete_event),     GTK_OBJECT(window));
     gtk_box_pack_start(GTK_BOX(cajaSalir), btnSalir, TRUE, true, 0);

     gtk_box_pack_start(GTK_BOX(cajaFondo), cajaSalir, FALSE, FALSE, 0);
     gtk_container_add (GTK_CONTAINER(window), cajaFondo);
     // **********************************************

     gtk_widget_show_all(window);
     gtk_main();
END.
Technical Details
Message-ID: <nOh9j.22972$Lc4.19445@news.ono.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news.glorb.com!newspeer1.de.telia.net!newspeer4.de.telia.net!de.telia.net!newsf01.ono.com!news.ono.com.POSTED!53ab2750!not-for-mail
References: <YxO8j.21696$Lc4.3297@news.ono.com> <aBc9j.22722$Lc4.4411@news.ono.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,d76ba6d7783fbb51
X-Google-Attributes: gidf86c8,public,usenet
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!news.glorb.com!newspeer1.de.telia.net!newspeer4.de.telia.net!de.telia.net!newsf01.ono.com!news.ono.com.POSTED!53ab2750!not-for-mail
From: |||RIP||| <ripland@gmail.com>
User-Agent: Thunderbird 2.0.0.6 (X11/20070926)
MIME-Version: 1.0
Newsgroups: es.comp.os.linux.programacion
Subject: Re: GTK+ y Pascal
References: <YxO8j.21696$Lc4.3297@news.ono.com> <aBc9j.22722$Lc4.4411@news.ono.com>
In-Reply-To: <aBc9j.22722$Lc4.4411@news.ono.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 133
Message-ID: <nOh9j.22972$Lc4.19445@news.ono.com>
Date: Sun, 16 Dec 2007 23:36:51 +0100
NNTP-Posting-Host: 81.172.101.237
X-Trace: news.ono.com 1197844755 81.172.101.237 (Sun, 16 Dec 2007 23:39:15 MET)
NNTP-Posting-Date: Sun, 16 Dec 2007 23:39:15 MET