// C:\FWH\SAMPLES\TLISTBOX.PRG
#include "FiveWin.ch"
#include "Colores.ch"
REQUEST DBFCDX
FUNCTION Main()
LOCAL cCarpeta := "C:\FWH2603\SAMPLES\"
ListBoxDatabase( cCarpeta )
RETURN NIL
FUNCTION ListBoxDatabase( cCarpeta )
LOCAL oDbf, oDlg, oLbx, oSay1, oSay2, oSay3, oFont, oSalida
LOCAL aItens := {}, aRecnos := {}
LOCAL nItem := 1
LOCAL cArq
LOCAL nCorFundo := RGB( 224, 247, 250 )
DEFAULT cCarpeta := "C:\FWH2603\SAMPLES\"
IF Right( cCarpeta, 1 ) <> "\"
cCarpeta += "\"
ENDIF
cArq := cCarpeta + "CUSTOMER.DBF"
IF ! File( cArq )
MsgStop( "Arquivo nao encontrado: " + cArq )
RETURN NIL
ENDIF
oDbf := TDataBase():Open( , cCarpeta + "CUSTOMER", "DBFCDX", .T. )
IF oDbf == NIL .OR. ! oDbf:Used()
MsgStop( "Nao foi possivel abrir " + cArq )
RETURN NIL
ENDIF
oDbf:GoTop()
DO WHILE ! oDbf:Eof()
SYSREFRESH()
IF ! ( oDbf:cAlias )->( Deleted() )
AAdd( aItens, DbCampo( oDbf, "LAST" ) + ", " + DbCampo( oDbf, "FIRST" ) )
AAdd( aRecnos, oDbf:RecNo() )
ENDIF
oDbf:Skip()
ENDDO
IF Empty( aItens )
MsgInfo( "Nenhum registro para exibir." )
oDbf:Close()
RETURN NIL
ENDIF
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0, -14 BOLD
DEFINE DIALOG oDlg RESOURCE "DLG_LISTBOX_DB" FONT oFont
oDlg:lHelpIcon := .F.
REDEFINE SAY oSay1 ID 401 OF oDlg COLORS METRO_TURQUE, CLR_WHITE ;
FONT oFont UPDATE TRANSPARENT
REDEFINE SAY oSay2 PROMPT "" ID 402 OF oDlg COLORS METRO_TURQUE, CLR_WHITE ;
FONT oFont UPDATE TRANSPARENT
REDEFINE SAY oSay3 PROMPT "" ID 403 OF oDlg COLORS METRO_TURQUE, CLR_WHITE ;
FONT oFont UPDATE TRANSPARENT
REDEFINE LISTBOX oLbx VAR nItem ITEMS aItens ID 101 OF oDlg ;
COLORS CLR_BLACK, nCorFundo
REDEFINE BUTTON oSalida ID 102 OF oDlg ACTION oDlg:End()
oLbx:bChange := { || DbLbxChange( oLbx:GetPos(), oDbf, aRecnos, ;
oSay1, oSay2, oSay3) }
ACTIVATE DIALOG oDlg ;
ON INIT ( oLbx:Select( 1 ), ;
DbLbxChange( 1, oDbf, aRecnos, oSay2, oSay3 ) )
oDbf:Close()
oFont:End()
RETURN NIL
STATIC FUNCTION DbLbxChange( nPos, oDbf, aRecnos, oSay2, oSay3 )
IF nPos < 1 .OR. nPos > Len( aRecnos )
RETURN NIL
ENDIF
oDbf:GoTo( aRecnos[ nPos ] )
oSay2:SetText( "Registro " + AllTrim( Str( oDbf:RecNo() ) ) + ": " + ;
DbCampo( oDbf, "FIRST" ) + " " + DbCampo( oDbf, "LAST" ) )
oSay3:SetText( DbCampo( oDbf, "STREET" ) + " - " + ;
DbCampo( oDbf, "CITY" ) + " / " + DbCampo( oDbf, "STATE" ) )
RETURN NIL
STATIC FUNCTION DbCampo( oDbf, cCampo )
IF oDbf:FieldPos( cCampo ) == 0
RETURN ""
ENDIF
RETURN AllTrim( cValToChar( oDbf:FieldGet( cCampo ) ) )
// FIN / END
/* // TLISTBOX.RC
DLG_LISTBOX_DB DIALOG 0, 74, 650, 328
STYLE DS_ABSALIGN | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "TListBox con TDataBase - CUSTOMER.DBF"
FONT 8, "MS Sans Serif"
{
LTEXT "Nombres:", 401, 110, 12, 420, 12, NOT WS_GROUP
LISTBOX 101, 110, 26, 420, 246, LBS_NOTIFY | WS_BORDER | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
CTEXT "SAY", 402, 25, 276, 600, 14, SS_CENTER | NOT WS_GROUP
CTEXT "SAY", 403, 25, 291, 600, 14, SS_CENTER | NOT WS_GROUP
PUSHBUTTON "&Salida", 102, 535, 248, 70, 14
}
*/
Regards, saludos.