Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.os.* Foro > Newsgroup es.comp.os.linux.programacion
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 16-12-2007, 18:47:49
|||RIP|||
 
Mensajes: n/a
Predeterminado Re: GTK+ y Pascal

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.
Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Re: GTK+ y Pascal |||RIP||| Newsgroup es.comp.os.linux.programacion 0 16-12-2007 21:36:51
Re: GTK+ y Pascal |||RIP||| Newsgroup es.comp.os.linux.programacion 0 16-12-2007 18:47:49
Pascal o C??? Picho, el portugues Newsgroup es.comp.lenguajes.c 50 30-04-2004 21:04:18
Pascal o C??? Picho, el portugues Newsgroup es.comp.lenguajes.c 0 20-04-2004 17:37:50
Pascal o C??? Picho, el portugues Newsgroup es.comp.lenguajes.c 0 20-04-2004 17:37:50





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.