Dima пишет:
цитата: |
MMK спросить надо ,он Семерку юзает :) |
|
Слушаюсь, мой Генерал!!! :)
Есть у меня примерчик- на бровсе при ресайзе пропорционально меняется ширина столбцов. Может натолкнет на мысль :))
#define SM_CYVSCROLL 20
#define SM_CXHSCROLL 21
#define SM_CXSCREEN 0
#define SM_CYSCREEN 1
#define SM_CYCAPTION 4
function main()
local oWnd, oBrw
local aArray := {}
local aColWidth := array( 13 ) // 13 columns
local nI, nWd, nHt, nFactor
for nI = 1 to 20
aadd( aArray, { StrZero(nI,2),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ),;
SPACE( 5 ) } )
next
nWd := GetSysMetrics(SM_CXSCREEN) * .5
nHt := GetSysMetrics(SM_CYSCREEN) * .3
DEFINE WINDOW oWnd Title "Test Resized xBrowse " from 50,0 to nHt, nWd PIXEL
oBrw:= txbrowse():new( oWnd )
oBrw:nRowHeight := 25
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:SetArray( aArray )
oBrw:CreateFromCode()
oBrw:lRecordSelector := .t.
oBrw:lVScroll := .t.
oBrw:nWidth := oWnd:nWidth - if( oBrw:lVScroll, GetSysMetrics(SM_CYVSCROLL), 0 )
oBrw:nHeight := oWnd:nHeight - GetSysMetrics(SM_CYCAPTION) - if( oBrw:lVScroll, GetSysMetrics( SM_CYVSCROLL ),0)
nFactor := ( ( if( oBrw:lRecordSelector,55,30) + ;
if( oBrw:lVScroll, GetSysMetrics( SM_CYVSCROLL ),15) ) / oWnd:nWidth ) / len( aColWidth )
aColWidth[ 1 ]:= 0.1
oBrw:aCols[ 1 ]:nWidth := oBrw:nWidth * ( aColWidth[ 1 ] - nFactor )
for nI = 2 to len( oBrw:aCols )
aColWidth[ nI ] := 0.9 / ( len( aColWidth ) - 1 )
oBrw:aCols[ nI ]:nWidth := oBrw:nWidth * ( aColWidth[ nI ] - nFactor )
next
oWnd:bResized := {|| nFactor := ( ( if( oBrw:lRecordSelector,55,30) + ;
if( oBrw:lVScroll, GetSysMetrics( SM_CYVSCROLL ),15) ) / oWnd:nWidth ) / len( aColWidth ) ,;
oBrw:nWidth := oWnd:nWidth - if( oBrw:lVScroll, GetSysMetrics(SM_CYVSCROLL), 0 ) ,;
aeval( oBrw:aCols, {| o,nI | o:nWidth := oBrw:nWidth * ( aColWidth[ nI ] - nFactor ) } ),;
oBrw:Refresh() }
ACTIVATE WINDOW oWnd