Página 1 de 1

Duvida sobre o controle BROWSE

Enviado: 25 Mar 2013 13:19
por Paulo_CPV
Boa tarde!

Gostaria de saber se alguém do grupo sabe como usar o parâmetro "IMAGE" do controle BROWSE, pois estou com dificuldade de utilizá-lo, você tem que associar algum campo do banco de dados para ele funcionar adequadamente.

[]'s
Paulo - Jacareí/SP

Duvida sobre o controle BROWSE

Enviado: 25 Mar 2013 13:50
por Pablo César
Oi Paulo,

Se o IMAGE que você refere-se para o BROWSE é esta:
Screen66.PNG
Um exemplo é este:

Código: Selecionar todos

/*
 * MINIGUI - Harbour Win32 GUI library Demo
 *
 * Copyright 2002 Roberto Lopez <harbourminigui@gmail.com>
 * http://harbourminigui.googlepages.com/
*/

* Value property selects a record by its number (RecNo())
* Value property returns selected record number (recNo())
* Browse control does not change the active work area
* Browse control does not change the record pointer in any area
* (nor change selection when it changes)
* You can programatically refresh it using refresh method.
* Variables called <MemVar>.<WorkAreaName>.<FieldName> are created for
* validation in browse editing window. You can use it in VALID array.
* Using APPEND clause you can add records to table associated with WORKAREA
* clause. The hotkey to add records is Alt+A.
* Append Clause Can't Be Used With Fields Not Belonging To Browse WorkArea
* Using DELETE clause allows to mark selected record for deletion pressing <Del> key
* The leftmost column in a browse control must be left aligned.

* Enjoy !

#include "minigui.ch"

Function Main

	Private bColor := { || if ( recno()/2 == int(recno()/2) , { 255,255,255 } , { 240,240,240 } ) }	

	SET CENTURY ON

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 480 ;
		TITLE 'MiniGUI Browse Demo (1000 Records)' ;
		MAIN NOMAXIMIZE ;
		ON INIT OpenTables() ;
		ON RELEASE CloseTables()

		DEFINE MAIN MENU
			POPUP 'File'
				ITEM 'Set Browse Value'	ACTION Form_1.Browse_1.Value := 500
				ITEM 'Get Browse Value'	ACTION MsgInfo ( Str ( Form_1.Browse_1.Value ) )
				ITEM 'Refresh Browse'	ACTION Form_1.Browse_1.Refresh
				SEPARATOR
				ITEM 'Exit'		ACTION Form_1.Release
			END POPUP
			POPUP 'Help'
				ITEM 'About'		ACTION MsgInfo ("MiniGUI Browse Demo")
			END POPUP
		END MENU

		DEFINE STATUSBAR
			STATUSITEM 'Edit Record, Change "TYPE" and Bitmat Will be Updated'
		END STATUSBAR

		@ 10,10 BROWSE Browse_1									;
		WIDTH 610  										;
		HEIGHT 390 										;
                HEADERS { 'Type','First Name' , 'Last Name', 'Birth Date',  'Biography' } ;
		WIDTHS { 0,150 , 150 , 150 , 150 } ;
		WORKAREA Test ;
		FIELDS { 'Test->Types' , 'Test->First' , 'Test->Last' , 'Test->Birth' ,  'Test->Bio' } ;
		VALUE 1 ;
		DYNAMICBACKCOLOR { bColor , bColor, bColor, bColor, bColor } ;
		FONT "MS Sans Serif" SIZE 8;
		EDIT INPLACE;
		NOLINES ;
		IMAGE {"br0","br1","br2","br3","br4","br5","br6","br7","br8","br9"};
		JUSTIFY { ,, BROWSE_JTFY_CENTER, } // BROWSE_JTFY_LEFT por defecto, no es necesario escribirlo

	END WINDOW

	CENTER WINDOW Form_1

	Form_1.Browse_1.SetFocus

	ACTIVATE WINDOW Form_1

Return Nil

Procedure OpenTables()
/*
	Use test
	zap

	For i:= 1 To 500000
		append blank
		Replace code with i
		Replace First With 'First Name '+ Str(i)
		Replace Last With 'Last Name '+ Str(i)
		Replace Married With .t.
		replace birth with date()+i-10000
	Next i

	Index On Code To Code
	Use

*/
	Use test

Return Nil

Procedure CloseTables()
	Use
Return Nil
Você vai precisar alterar o arquivo de projeto com extensão .RC, para este caso ficaria assim:

Código: Selecionar todos

	br0				BITMAP			br0.BMP
	br1				BITMAP			br1.BMP
	br2				BITMAP			br2.BMP
	br3				BITMAP			br3.BMP
	br4				BITMAP			br4.BMP
	br5				BITMAP			br5.BMP
	br6				BITMAP			br6.BMP
	br7				BITMAP			br7.BMP
	br8				BITMAP			br8.BMP
	br9				BITMAP			br9.BMP
Agora se a imagem era para ser no cabeçalho, isto é HEADERIMAGES o exemplo é outro.

Mas lembre o browse é considerado obsoleto e se você usa a HMG versão 3.1.1 (versão em UNICODE) não irá funcionar assim de primeira. Tem uma instrução, veja no tópico em: http://hmgforum.com/viewtopic.php?p=23280&f=2#p23280 do fórum oficial.

Aliás seguindo o tópico é esta a solução: http://hmgforum.com/viewtopic.php?p=23336&f=2#p23336