Friends, would you have an Example
https://i.ibb.co/bRz7621x/zzzzzzzzzzzzz ... zzzzzz.jpg

this sample test make the zoom and save it on stateINFORMAISVRB wrote: Thu Feb 27, 2025 11:46 am This company did, I downloaded the demo version where I can see that it does what I need
Link https://www.donorquest.com/
Code: Select all | Expand
#include "fivewin.ch"
function Main()
local oDlg, oFont, oBrw
local cSection :="Cust"
local cIniUser := cFilePath( GetModuleFileName( GetInstance() ) ) + "test.ini"
local cState := GetPvProfString(cSection, "State","", cIniuser) // load state from disk
USE CUSTOMER
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
DEFINE DIALOG oDlg SIZE 700,400 PIXEL TRUEPIXEL FONT oFont ;
TITLE "Ctrl + MouseWheel Scroll to ZOOM/UNZOOM"
@ 20,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
DATASOURCE ALIAS() AUTOCOLS ;
CELL LINES NOBORDER
WITH OBJECT oBrw
:CreateFromCode()
END
oBrw:RestoreState( cState ) // set the old state saved
ACTIVATE DIALOG oDlg CENTERED ;
VALID (oBrw:nLen := 0 ,;
WritePProString(cSection,"State",oBrw:SaveState(),cIniUser)) // save the state into disk
RELEASE FONT oFont
return nil
Code: Select all | Expand
@ 103 , 10 XBROWSE oBrw ;
OF oDlg ;
SIZE -10 , 390 ;
PIXEL ;
DATASOURCE oDbf ;
COLUMNS aCols ;
AUTOSORT ;
FONT oFontNormal ;
NOBORDER ;
CELL ;
LINES ;
UPDATE
MyStyleBrowse(oBrw)
WITH OBJECT oBrw
:CreateFromCode()
END
Function MyStyleBrowse(oBrw)
local nColorHeader := DLG_nColorDlg
local nColorFooter := DLG_nColorDlg
local nColorPigiama := RGB(235,243,245)
WITH OBJECT oBrw
:nRowHeight := 25
:l2007 := .F.
:l2015 := .T.
:lRecordSelector := .F.
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
:nStretchCol := STRETCHCOL_WIDEST
:nMarqueeStyle := MARQSTYLE_HIGHLROW
:lDisplayZeros := .f.
:lAllowRowSizing := .F.
:lAllowColSwapping := .F.
:lAllowColHiding := .F.
:lAllowSizings := .F.
:lDrawBorder := .t.
:nClrBorder := Rgb(195,195,185)
:lDrawBorderIn := .F.
:bRecSelHeader := ""
* :bClrSelFocus := { || {,rgb(255,255,224)}}
:bClrRowFocus := { || {, rgb(255,255,224)}}
* :nRecSelColor := nRgb( 245,244,234)
:bClrHeader := {|| { ,nColorHeader } }
:bClrFooter := {|| { ,nColorFooter } }
:bClrStd := { || { CLR_BLACK, If( oBrw:KeyNo % 2 == 0, CLR_WHITE,nColorPigiama ) } }
END
return nil
Code: Select all | Expand
// Using Windows 7 row selection colors in xbrowse
#include 'fivewin.ch'
#include 'xbrowse.ch'
STATIC nLastFontSize := 0
STATIC aLastColWidths := {}
STATIC nLastRowHeight := 0
STATIC c_path
function Main()
local oDlg, oBrw, oFont
c_path := cFilePath(GetModuleFileName( GetInstance() ) )
SET DATE ITALIAN
SET CENTURY ON
FwNumFormat( 'E', .t. )
USE CUSTOMER ALIAS CUST
DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -16
DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
FONT oFont TITLE 'XBrowse Windows 7 Bars' ;
COLOR CLR_BLACK,RGB(250,250,250)
@ 0,20 ;
BUTTON "SaveZoomSetting" ;
ACTION SaveZoomSetting( oBrw ) ;
OF oDlg ;
PIXEL
@ 0,120 ;
BUTTON "LoadZoomSettings" ;
ACTION LoadZoomSettings( oBrw ) ;
OF oDlg ;
PIXEL
@ 20,20 XBROWSE oBrw OF oDlg SIZE -10,-20 PIXEL ;
COLUMNS "First", "State", "Age", "HireDate", "Salary" ;
ALIAS 'CUST' NOBORDER
oBrw:lRecordSelector := .f.
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLWIN7
WITH OBJECT oBrw:InsCol( 1 )
:cHeader := " "
:bEditValue := { || If( AScan( oBrw:aSelected, oBrw:BookMark ) > 0, .t., nil ) }
:SetCheck()
:nHeadBmpNo := { || If( Len( oBrw:aSelected ) == oBrw:nLen, 1, 2 ) }
:bLClickHeader := { |r,c,f,oCol| If( Len( oBrw:aSelected ) == oBrw:nLen, ;
oBrw:SelectNone(), oBrw:SelectAll() ) }
END
oBrw:CreateFromCode()
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return nil
FUNCTION SaveZoomSetting( oBrw )
LOCAL cIniFile := c_Path + "PROJECT.INI"
LOCAL nZoom, i
local cFontText
FontToText( oBrw:oFont )
MEMOWRIT( 'fontsave.txt', cFontText )
// Schriftgröße speichern
WritePProString( "Settings","FontSize", Str( Abs( oBrw:oFont:nHeight ) ), cIniFile )
// Zeilenhöhe speichern
WritePProString ( "Settings", "RowHeight", Str( oBrw:nRowHeight ) , cIniFile )
// Spaltenbreiten speichern
FOR i := 1 TO Len( oBrw:aCols )
WritePProString( "Columns", "Col" + Str(i), Str( oBrw:aCols[i]:nWidth ) , cIniFile )
NEXT
RETURN NIL
FUNCTION LoadZoomSettings( oBrw )
LOCAL cIniFile := c_Path + "PROJECT.INI"
LOCAL i, nWidth
// Schriftgröße setzen
LOCAL nFontSize := Val( GetPvProfString( "Settings", "FontSize", "12" , cIniFile ) )
oBrw:oFont := FontFromText( MemoRead( 'FONTSAVE.TXT' ) )
// Zeilenhöhe setzen
oBrw:nRowHeight := Val( GetPvProfString( "Settings", "RowHeight", "20" , cIniFile ))
// Spaltenbreiten wiederherstellen
FOR i := 1 TO Len( oBrw:aCols )
nWidth := Val( GetPvProfString( "Columns", "Col" + Str(i), Str(oBrw:aCols[i]:nWidth) , cIniFile ))
oBrw:aCols[i]:nWidth := nWidth
NEXT
oBrw:Refresh()
RETURN NIL
function FontToText( oFont )
return FW_ValToExp( { ;
oFont:cFaceName, 0, oFont:nInpHeight, .f., oFont:lBold, oFont:nEscapement, ;
oFont:nOrientation, nil, oFont:lItalic, oFont:lUnderline, oFont:lStrikeOut, ;
oFont:nCharSet, oFont:nOutPrecision, oFont:nClipPrecision, oFont:nQuality, ;
nil, oFont:nPitchFamily } )
//----------------------------------------------------------------------------//
function FontFromText( cText )
return HB_ExecFromArray( TFont(), "NEW", &cText )
//----------------------------------------------------------------------------//