Diálogo con barra de botones

Diálogo con barra de botones

Postby triumvirato » Wed Nov 25, 2009 3:08 pm

Hola compañeros,

¿Es posible crear un diálogo con barras de botones?. Yo tengo el siguiente código pero me dá erro:

Code: Select all  Expand view
#include "FiveWin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oDlg, lExit := .f., oBtn, oBar

   DEFINE DIALOG oDlg FROM 5, 5 TO 15, 40 TITLE "A Dialog Box"
 
   DEFINE BUTTONBAR oBar OF oDlg

   ACTIVATE DIALOG oDlg VALID lExit

return nil

//----------------------------------------------------------------------------//
 



Error description: Error FiveWin/6 Cannot create window or control:
Class: TBAR
Caption:
System Error: No se puede crear una ventana secundaria de primer nivel.


Stack Calls
===========
Called from: .\source\classes\WINDOW.PRG => WNDCREATEERROR(0)
Called from: .\source\classes\WINDOW.PRG => TBAR:CREATE(0)
Called from: .\source\classes\BAR.PRG => TBAR:NEW(0)
Called from: C:\FWH\samples\dlg.prg => MAIN(11)


La línea 11 es la de definición de la barra de botones. No quería usar ventanas porque me lío bastante y esta diálogo sería llamado desde otro diálogo y no quedaría muy "ético", no?.

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Diálogo con barra de botones

Postby FranciscoA » Wed Nov 25, 2009 6:07 pm

Hola, prueba así a ver que pasa:

function Main()
local oDlg, lExit := .f.

DEFINE DIALOG oDlg FROM 5, 5 TO 15, 40 TITLE "A Dialog Box"

ACTIVATE DIALOG oDlg VALID lExit ;
ON INIT DlgBar(oDlg)

return nil

//---------------------//
function DlgBar(oDlg)
local oBar
DEFINE BUTTONBAR oBar 3D SIZE 30,30 OF oDlg
DEFINE BUTTON RESOURCE "imprimir" OF oBar NOBORDER ;
MESSAGE "Emision de Reportes" ACTION Msginfo("Imprimir") TOOLTIP "Reportes"
DEFINE BUTTON RESOURCE "Exit" OF oBar NOBORDER ;
MESSAGE "Finalizar esta sesion" ACTION oDlg:End() TOOLTIP "Finalizar"
SET MESSAGE OF oDlg TO "MI MENSAJE"
return nil

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2112
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Diálogo con barra de botones

Postby triumvirato » Wed Nov 25, 2009 6:49 pm

Francisco,

Funciona a la perfección... pero por sabemos por qué tiene que ser desde la cláusula ON INIT? no debería hacerlo igualmente de la forma que yo lo codificaba?

MUCHAS GRACIAS!

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Diálogo con barra de botones

Postby Antonio Linares » Wed Nov 25, 2009 7:31 pm

David,

La diferencia viene de que una ventana crea su handle de ventana (hWnd) desde el momento que se crea con DEFINE WINDOW pero un diálogo no posee un hWnd válido hasta que no se activa usando ACTIVATE DIALOG.

Esta diferencia es propia del API de Windows, de cómo ha sido diseñado.

La diferencia en la Clase TBar es que es una clase que contiene controles hijos. Podriamos modificar la Clase TBar para que se crease como otro control de una caja de diálogo, pero cuando se inicializase desde la inicialización del diálogo, no sabrá que contiene, ni como crear cada uno de sus controles hijos.

De momento es preferible esa solución que Francisco te ha mostrado :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Diálogo con barra de botones

Postby triumvirato » Thu Nov 26, 2009 7:13 am

Antonio,

Gracias por la explicación. Se me hacía bastante curioso y ahora que sé el motivo, se me hace más curioso aún :) . Sabremos vivir con ello! pero es raro, raro, raro! lo que a veces hace Microsoft :D

Gracias! un saludo!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: karinha and 23 guests