🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: GTK+ y Pascal

#494
From: |||RIP|||
Date: Sun, 16 Dec 2007 19:47
134 lines
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-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,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