![]() |
| |||
| 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(windo w),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(btnMakeskelCr ear), '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. |
| | ||||
| ||||
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Motivos de Pascal | gsmiga | Newsgroup es.humanidades.literatura | 5 | 04-06-2008 08:41:58 |
| Re: GTK+ y Pascal | |||RIP||| | Newsgroup es.comp.os.linux.programacion | 0 | 16-12-2007 18:47:49 |
| URGENTE..PASCAL | lqf | Newsgroup es.comp.os.linux.programacion | 15 | 20-01-2007 15:35:35 |
| Buen manual de delphi (pascal) | arsys.es Soporte TSE - RGA | Newsgroup es.comp.lenguajes.delphi | 6 | 13-10-2004 20:43:43 |
| Pascal o C??? | Picho, el portugues | Newsgroup es.comp.lenguajes.c | 60 | 30-04-2004 21:04:18 |