Article View: es.comp.os.linux.programacion
Article #494Re: GTK+ y Pascal
From: |||RIP|||
Date: Sun, 16 Dec 2007 19:47
Date: Sun, 16 Dec 2007 19:47
134 lines
5790 bytes
5790 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:
<%jf9j.86835$224.54329@news.ono.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!out04a.usenetserver.com!news.usenetserver.com!in01.usenetserver.com!news.usenetserver.com!out.nntp.be!prop4-west.newsfeeds.com!news-in1.spamkiller.net!newsf01.ono.com!news.ono.com.POSTED!53ab2750!not-for-mailReferences:
<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,start X-Google-Attributes: gidf86c8,public,usenet X-Google-Language: SPANISH,ASCII Subject: Re: GTK+ y Pascal From: |||RIP||| <ripland@gmail.com> Date: Sun, 16 Dec 2007 20:47:49 +0100 Message-ID: <%jf9j.86835$224.54329@news.ono.com> References: <YxO8j.21696$Lc4.3297@news.ono.com> <aBc9j.22722$Lc4.4411@news.ono.com> Lines: 134 NNTP-Posting-Host: 81.172.101.237 Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!out04a.usenetserver.com!news.usenetserver.com!in01.usenetserver.com!news.usenetserver.com!out.nntp.be!prop4-west.newsfeeds.com!news-in1.spamkiller.net!newsf01.ono.com!news.ono.com.POSTED!53ab2750!not-for-mail Newsgroups: es.comp.os.linux.programacion X-Trace: news.ono.com 1197834619 81.172.101.237 (Sun, 16 Dec 2007 20:50:19 MET) User-Agent: Thunderbird 2.0.0.6 (X11/20070926) MIME-Version: 1.0 In-Reply-To: <aBc9j.22722$Lc4.4411@news.ono.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit NNTP-Posting-Date: Sun, 16 Dec 2007 20:50:19 MET