Cómo definir un Browse desde recursos

Post Reply
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Cómo definir un Browse desde recursos

Post by Rafael Clemente »

Estoy intentando abrir un diálogo con sólo un browse de una columna.

En mi RC:

LOOKUP1 DIALOG DISCARDABLE 43, 27, 91, 76 STYLE WS_POPUP|DS_MODALFRAME|WS_SYSMENU|WS_VISIBLE
FONT 8, "System"
BEGIN
CONTROL "Cancel", IDCANCEL, "Button", WS_TABSTOP, 44, 0, 45, 15
CONTROL "", 4001, "ListBox", WS_VSCROLL | WS_BORDER | WS_TABSTOP, 0, 16, 88, 52
END


Mi Programa:
//─────────────────────────────────────
STATIC FUNCTION LookUp()
LOCAL oDlg, oLbx

DEFINE DIALOG oDlg RESOURCE "LOOKUP1"
REDEFINE LISTBOX oLbx ID 4001;
ALIAS AFAB ;
FIELDS AFAB->NOMBRE ;
HEADERS "Nombre" ;
SIZES 100
ACTIVATE DIALOG oDlg
RETURN NIL


Lo he probado de mil maneras y siempre me da error al compilar:
a1.prg(222) Error E0022 Invalid lvalue: 'Numeric' - La linea 222 es el REDEFINE

Por favor, alguien me puede decir qué estoy haciendo mal? Mejor con un ejemplo. Gracias

Rafael
[/url]
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Rafael,

Cambia "ListBox" por "TWBrowse" en el RC.

En el código prueba esto:

REDEFINE LISTBOX oLbx ID 4001 OF oDlg;
ALIAS AFAB ;
FIELDS AFAB->NOMBRE ;
HEADERS "Nombre" ;
SIZES 100
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

No: Al compilar sigue dando este error:

a1.prg(222) Error E0022 Invalid lvalue: 'Numeric'

222 es la línea del REDEFINE. Esroy utilizando la última versión de FWPPC, recién descargada anteayer.

De la única manera que consigo compilar es :
REDEFINE LISTBOX oLbx ID 4001 OF oDlg y nada más.

Pero esto, claro, me da error al ejecutar (oLbx es NIL)

Rafael

Antonio: Yo utilizo Pelles C para crear mis .RC ¿Hay algún otro programa que permita generar archivos más compatibles con FWPPC, sin tener que retocar tanto a mano el RC?
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Antonio:
EMpiezo a creen que el REDEFINE LISTBOX en diálogos no funciona. Sencillamente, da error y ni siquiera compila. Lo mejor que he conseguido es esto:

oLbx := TWBrowse():Redefine(4001,{|| {customer->first} }, oDlg,;
{"Nombre"},;
{200}, , , , , {|nRow,nCol,nFlags|MiFuncion()},;
, oFont , , , , , , "Customer", , , , )

que por lo menos se ve en su diálogo pero da error "ARGUMENT ERROR .TOT." en cuanto haces click en cualquier registro. Adjunto código completo de la prueba, a ver si puedes darme alguna idea de como solucionarlo:

Code: Select all

#include "FWCE.ch"
#include "WinApi.ch"
//----------------------------------------------------------------------------/
FUNCTION Main()
LOCAL oWnd, oDlg, oLbx

USE (CurDir()+"\Customer") NEW             // La DBF de \SAMPLES
DEFINE WINDOW oWnd TITLE "Test"
ACTIVATE WINDOW oWnd ON INIT AbrirDlg()
RETURN NIL

STATIC FUNCTION AbrirDlg()

DEFINE DIALOG oDlg RESOURCE "LOOKUP1"
DEFINE FONT oFont NAME "Arial" SIZE 0, -12

oLbx := TWBrowse():Redefine(4001,{|| {customer->first} }, oDlg,;
                            {"Nombre"},;
                            {200}, , , , , {|nRow,nCol,nFlags|MiFuncion()},;
                            , oFont , , , , , , "Customer", ,  , , )

ACTIVATE DIALOG oDlg
RETURN NIL

FUNCTION MiFuncion()
MsgInfo("Hola")
RETURN NIL

// -----------------------------------------------------------------------
El fichero .RC:

#include <windows.h>
#include <commctrl.h>
#include <richedit.h>

LANGUAGE LANG_SPANISH,SUBLANG_SPANISH_MODERN

LOOKUP1 DIALOG DISCARDABLE 43, 27, 91, 76
STYLE WS_POPUP|DS_MODALFRAME|WS_SYSMENU|WS_VISIBLE
FONT 8, "System"
BEGIN
  CONTROL "Cancel", IDCANCEL, "Button", WS_TABSTOP, 0, 0, 45, 15
  CONTROL "", 4001, "TWBrowse", WS_VSCROLL|WS_BORDER|WS_TABSTOP, 0, 16, 88, 52
END




User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Rafael,

Tu ejemplo ha funcionado a la primera. Lo único que tienes que quitar es esta línea del RC:

#include <richedit.h>

ya que no existe, y entonces el RC no se compila.

De todas formas, una vez se visualiza, al hacer click en una línea del browse da un error. Vamos a ver de que se trata.
Last edited by Antonio Linares on Wed Dec 14, 2005 11:09 am, edited 1 time in total.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Post by Rafael Clemente »

Sí, Antonio. Justo ése es el problema
Rafael
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Rafael,

Acabamos de publicar un nuevo build de FWPPC que soluciona el problema. Por favor descárgalo y prueba tu ejemplo de nuevo. Gracias.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Rafael Clemente
Posts: 365
Joined: Sat Oct 08, 2005 7:59 pm
Location: Barcelona, Spain

Funciona!

Post by Rafael Clemente »

Antonio: La nueva versión de FWPPC funciona perfectamente!

Respecto a lo del REDEFINE LISTBOX, acabo de descubrir que es dependiente del orden de los parámetros:

Este funciona bien:
REDEFINE LISTBOX oLbx FIELDS AFAB->NOMBRE ALIAS "AFAB" ID 4001 OF oDlg ON DBLCLICK MiFuncion()

Pero este da Error E0022 Invalid lvalue: 'String' al compilar:
REDEFINE LISTBOX oLbx ID 4001 OF oDlg ALIAS "AFAB" FIELDS AFAB->NOMBRE

Gracias!
Rafael
Post Reply