On-line: Andrey, PSP, Haz, гостей 2. Всего: 5 [подробнее..]
АвторСообщение
Vlad04
постоянный участник


Пост N: 420
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)


TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений
К примеру

 цитата:

DEFINE TBROWSE oBrw2 ;
AT 60,450 ;
ALIAS cAlias ;
OF Form1 ;
WIDTH 330 ;
HEIGHT 340 ;
FONT "Verdana" ;
SIZE 9 ;
ON DBLCLICK CopyRec();
ON GOTFOCUS fModelo_Hab(2) ;
AUTOFILTER ;
CELLED EDIT;
VALUE nRec;
GRID


Здесь я собрал параметры из разных tBrows
Можно или нет и какие парметры заменить
выражением ( и каким) ?
oBrw2:....
oBrw2:....



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


Haz
администратор




Пост N: 926
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.05.16 18:36. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:

Конечно, я добавил обработку этих 2-х кодовых блоков в класс TsBrowse.


Отлично

 цитата:
Еще бы не помешал небольшой пример их использования...


завтра постараюсь маленький примерчик сделать

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 927
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 04.05.16 16:19. Заголовок: Haz пишет: завтра п..


Haz пишет:

 цитата:
завтра постараюсь маленький примерчик сделать



Вобщем как то так, в примере просто ловим изменение ширины и позиции в колонке и тупо пишем в INI
При старте - читаем из INI

 
#include "minigui.ch"
#include "TSBrowse.ch"

MEMVAR aFont

PROCEDURE Main
LOCAL aStr := {}
LOCAL cDbf := "TEST.DBF"
LOCAL cAlias := ""
LOCAL n := 0


SET DATE FORMAT 'DD.MM.YYYY'
REQUEST DBFCDX
RDDSETDEFAULT('DBFCDX')

IF ! File( cDbf )
AAdd( aStr, { 'F1', 'D', 8, 0 } )
AAdd( aStr, { 'F2', 'C', 60, 0 } )
AAdd( aStr, { 'F3', 'N', 10, 2 } )
AAdd( aStr, { 'F4', 'L', 1, 0 } )

DbCreate( cDbf, aStr )

END

USE (cDbf) ALIAS "TEST" NEW

WHILE TEST->(RecCount()) < 100
TEST->(dbAppend())
TEST->F1 := Date() + n++
TEST->F2 := STR(n)
TEST->F3 := n
TEST->F4 := (n % 2) == 0
END


DEFINE WINDOW Form_0 ;
At 0, 0 ;
WIDTH 600 ;
HEIGHT 400 ;
TITLE "TsBrowse Save/Restore settings Demo" ;
MAIN ;
NOMAXIMIZE NOSIZE

DEFINE STATUSBAR
STATUSITEM "Item 1" WIDTH 0 FONTCOLOR BLACK
STATUSITEM "Item 2" WIDTH 230 FONTCOLOR BLACK
STATUSITEM "Item 3" WIDTH 230 FONTCOLOR BLACK
STATUSITEM "Item 4" WIDTH 230 FONTCOLOR BLACK
DATE
CLOCK
KEYBOARD
END STATUSBAR

CreateBrowse()
MsgBox( "Restoring from INI" )
END WINDOW
DoMethod( "Form_0", "Center" )
DoMethod( "Form_0", "Activate" )
RETURN


FUNCTION CreateBrowse()
LOCAL oBrw
LOCAL i
LOCAL aStr := {}

DEFINE TBROWSE oBrw ;
AT 5, 5 ;
ALIAS "TEST" ;
OF Form_0 ;
WIDTH Form_0.WIDTH - 2 * GetBorderWidth() ;
HEIGHT Form_0.HEIGHT - GetTitleHeight() - GetTitleHeight() - ;
GetProperty( "Form_0", "StatusBar", "Height" ) - 2 * GetBorderHeight() ;
GRID ;
COLORS { CLR_BLACK, CLR_BLUE } ;
FONT "MS Sans Serif" ;
SIZE 8 ;

:SetAppendMode( .F. )
:SetDeleteMode( .F. )

:lNoHScroll := .T.
:lCellBrw := .F.

END TBROWSE

ReadSettings( oBrw )

oBrw:nWheelLines := 1
oBrw:nClrLine := COLOR_GRID
oBrw:lNoChangeOrd := TRUE
oBrw:lCellBrw := TRUE
oBrw:lNoVScroll := TRUE
oBrw:hBrush := CreateSolidBrush( 242, 245, 204 )

// prepare for showing of Double cursor
AEval( oBrw:aColumns, {| oCol| oCol:lFixLite := oCol:lEdit := TRUE } )

oBrw:nHeightCell += 10
oBrw:nHeightHead += 5

oBrw:SetColor( { 1 }, { RGB( 0, 12, 120 ) } )
oBrw:SetColor( { 2 }, { RGB( 242, 245, 204 ) } )
oBrw:SetColor( { 5 }, { RGB( 0, 0, 0 ) } )
oBrw:SetColor( { 6 }, { {|a, b, c| IF( c:nCell == b, { RGB( 66, 255, 236 ), RGB( 111, 183, 155 ) }, ;
{ RGB( 255, 255, 255 ), RGB( 200, 200, 200 ) } ) } } ) // cursor backcolor

oBrw:bLineDrag := {|a,b,c| SaveSettings(a,b,c, "Width")}
oBrw:bColDrag := {|a,b,c| SaveSettings(a,b,c, "Position")}


RETURN NIL


FUNC SaveSettings( a, b, c, cKey )
local hIni := HB_Hash()
local cIniFile := SUBSTR( Exename(), 1, RAT( '.', Exename() ) ) + 'ini'
local n := 0
local cSection := c:GetColumn(a):cName


FOR n := 1 TO c:nColCount()
hIni[ c:GetColumn(n):cName ] := hb_hash()
hIni[ c:GetColumn(n):cName ]["Position"] := n
hIni[ c:GetColumn(n):cName ]["Width"] := c:GetColumn(n):nWidth
hIni[ c:GetColumn(n):cName ]["Heading"] := c:GetColumn(n):cHeading
END
hb_iniWrite( cIniFile, hIni )
MsgBox(IF( UPPER( cKey ) == "WIDTH", "Width changed and stored in INI", "Position Changed and stored in INI"))

RETURN NIL

FUNCTION ReadSettings( oBrw )
local hIni := HB_Hash()
local cIniFile := SUBSTR( Exename(), 1, RAT( '.', Exename() ) ) + 'ini'
local n := 0
local aArray := {}, aField := {}



IF !File( cIniFile )
FOR n := 1 TO TEST->(FCOUNT())
hIni[ TEST->(Field(n)) ] := hb_hash()
hIni[ TEST->(Field(n)) ]["Position"] := n
hIni[ TEST->(Field(n)) ]["Width"] := 100
hIni[ TEST->(Field(n)) ]["Heading"] := "F" + NTOC(n)
END
hb_iniWrite( cIniFile, hIni )
aField := { "F2", "F1", "F3", "F4" }
ELSE
hIni := hb_iniRead( cIniFile )
FOR n := 1 TO TEST->(FCOUNT())
AADD( aArray, {TEST->(Field(n)), CTON(hIni[ TEST->(Field(n)) ]["Position"]) } )
END
// Sorting column
aSort( aArray,,, { |a,b| a[2] < b[2] } )
aEval( aArray, {|e| AADD( aField, e[1] )} )
END


LoadFields( "oBrw", "Form_0", .F., aField)

// Set column width
oBrw:SetColSize( oBrw:nColumn( "F1" ), CTON(hIni[ "F1" ]["Width"]) )
oBrw:SetColSize( oBrw:nColumn( "F2" ), CTON(hIni[ "F2" ]["Width"]) )
oBrw:SetColSize( oBrw:nColumn( "F3" ), CTON(hIni[ "F3" ]["Width"]) )
oBrw:SetColSize( oBrw:nColumn( "F4" ), CTON(hIni[ "F4" ]["Width"]) )

RETURN NIL



Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 938
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.05.16 17:50. Заголовок: Haz пишет: в пример..


Haz пишет:

 цитата:
в примере просто ловим изменение ширины и позиции в колонке


Благодарю за пример

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 929
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 04.05.16 21:15. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Благодарю за пример


Немного поленился и сохраняю все колонки , а не только ту которая изменилась.
Но в блок номер измененной колонки передается и кому захочется - можно сделать самостоятельно .

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 939
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 04.05.16 21:38. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Благодарю за пример


Выкладываю итоговый вариант для проверки

/* 
* MINIGUI - Harbour Win32 GUI library Demo
*
* Author: Igor Nazarov
*
* Revised by Grigory Filatov <gfilatov@inbox.ru>
*/

#include "minigui.ch"
#include "TSBrowse.ch"

REQUEST DBFCDX

PROCEDURE Main

LOCAL aStr := {}
LOCAL cDbf := "TEST.DBF"
LOCAL n := 0

SET DATE FORMAT 'DD.MM.YYYY'
rddSetDefault( 'DBFCDX' )

IF ! File( cDbf )
AAdd( aStr, { 'F1', 'D', 8, 0 } )
AAdd( aStr, { 'F2', 'C', 60, 0 } )
AAdd( aStr, { 'F3', 'N', 10, 2 } )
AAdd( aStr, { 'F4', 'L', 1, 0 } )

dbCreate( cDbf, aStr )

ENDIF

USE ( cDbf ) ALIAS "TEST" NEW

WHILE TEST->( RecCount() ) < 100
TEST->( dbAppend() )
TEST->F1 := Date() + n++
TEST->F2 := Str( n )
TEST->F3 := n
TEST->F4 := ( n % 2 ) == 0
END

DEFINE WINDOW Form_0 ;
At 0, 0 ;
WIDTH 600 ;
HEIGHT 400 ;
TITLE "TsBrowse Save/Restore Settings Demo" ;
MAIN ;
NOMAXIMIZE NOSIZE ;
ON RELEASE dbCloseArea( "TEST" )

DEFINE STATUSBAR
STATUSITEM "Item 1" WIDTH 0
STATUSITEM "TsBrowse Power Ready" WIDTH 230 FONTCOLOR BLUE
DATE
CLOCK
KEYBOARD
END STATUSBAR

CreateBrowse()

END WINDOW

DoMethod( "Form_0", "Center" )
DoMethod( "Form_0", "Activate" )

RETURN


FUNCTION CreateBrowse()

LOCAL oBrw

DEFINE TBROWSE oBrw ;
AT 5, 5 ;
ALIAS "TEST" ;
OF Form_0 ;
WIDTH Form_0.Width - 2 * GetBorderWidth() ;
HEIGHT Form_0.Height - GetTitleHeight() - ;
GetProperty( "Form_0", "StatusBar", "Height" ) - 2 * GetBorderHeight() ;
GRID ;
COLORS { CLR_BLACK, CLR_BLUE } ;
FONT "MS Sans Serif" ;
SIZE 8

:SetAppendMode( .F. )
:SetDeleteMode( .F. )

:lNoHScroll := .T.
:lCellBrw := .F.
:lInsertMode := .T.

END TBROWSE

// Restoring settings from INI
ReadSettings( oBrw )

oBrw:nWheelLines := 1
oBrw:nClrLine := COLOR_GRID
oBrw:lNoChangeOrd := TRUE
oBrw:lCellBrw := TRUE
oBrw:lNoVScroll := TRUE
oBrw:hBrush := CreateSolidBrush( 242, 245, 204 )

// prepare for showing of Double cursor
AEval( oBrw:aColumns, {| oCol | oCol:lFixLite := oCol:lEdit := TRUE } )

oBrw:nHeightCell += 10
oBrw:nHeightHead += 5

oBrw:SetColor( { 1 }, { RGB( 0, 12, 120 ) } )
oBrw:SetColor( { 2 }, { RGB( 242, 245, 204 ) } )
oBrw:SetColor( { 5 }, { RGB( 0, 0, 0 ) } )
oBrw:SetColor( { 6 }, { { | a, b, oBr | IF( oBr:nCell == b, { RGB( 66, 255, 236 ), RGB( 111, 183, 155 ) }, ;
{ RGB( 255, 255, 255 ), RGB( 200, 200, 200 ) } ) } } ) // cursor backcolor

oBrw:bLineDrag := { | a, b, oBr | SaveSettings( a, b, oBr, "Width" ) }
oBrw:bColDrag := { | a, b, oBr | SaveSettings( a, b, oBr, "Position" ) }

RETURN NIL


STATIC FUNCTION SaveSettings( a, b, oBr, cKey )

LOCAL hIni := hb_Hash()
LOCAL cIniFile := ChangeFileExt( Application.ExeName, '.ini' )
LOCAL n

HB_SYMBOL_UNUSED( a )
HB_SYMBOL_UNUSED( b )

FOR n := 1 TO oBr:nColCount()
hIni[ oBr:GetColumn( n ):cName ] := hb_Hash()
hIni[ oBr:GetColumn( n ):cName ][ "Position" ] := hb_ntos( n )
hIni[ oBr:GetColumn( n ):cName ][ "Width" ] := hb_ntos( oBr:GetColumn( n ):nWidth )
hIni[ oBr:GetColumn( n ):cName ][ "Heading" ] := oBr:GetColumn( n ):cHeading
NEXT

hb_iniWrite( cIniFile, hIni )

MsgInfo( iif( Upper( cKey ) == "WIDTH", "Width changed and stored in INI", "Position changed and stored in INI" ) )

RETURN NIL


STATIC FUNCTION ReadSettings( oBrw )

LOCAL hIni := hb_Hash()
LOCAL cIniFile := ChangeFileExt( Application.ExeName, '.ini' )
LOCAL n
LOCAL aArray := {}, aField := {}

IF ! File( cIniFile )

FOR n := 1 TO TEST->( FCount() )
hIni[ TEST->( Field( n ) ) ] := hb_Hash()
hIni[ TEST->( Field( n ) ) ][ "Position" ] := hb_ntos( n )
hIni[ TEST->( Field( n ) ) ][ "Width" ] := hb_ntos( 100 )
hIni[ TEST->( Field( n ) ) ][ "Heading" ] := "F" + NTOC( n )
NEXT

hb_iniWrite( cIniFile, hIni )
// initial column order
aField := { "F2", "F1", "F3", "F4" }

ELSE

hIni := hb_iniRead( cIniFile )
FOR n := 1 TO TEST->( FCount() )
AAdd( aArray, { TEST->( Field( n ) ), CTON( hIni[ TEST->( Field( n ) ) ][ "Position" ] ) } )
NEXT
// Sorting column
ASort( aArray,,, { | a, b | a[ 2 ] < b[ 2 ] } )
// Fill field array
AEval( aArray, { | e | AAdd( aField, e[ 1 ] ) } )

ENDIF

LoadFields( "oBrw", "Form_0", .F., aField )

// Set column width
oBrw:SetColSize( oBrw:nColumn( "F1" ), CTON( hIni[ "F1" ][ "Width" ] ) )
oBrw:SetColSize( oBrw:nColumn( "F2" ), CTON( hIni[ "F2" ][ "Width" ] ) )
oBrw:SetColSize( oBrw:nColumn( "F3" ), CTON( hIni[ "F3" ][ "Width" ] ) )
oBrw:SetColSize( oBrw:nColumn( "F4" ), CTON( hIni[ "F4" ][ "Width" ] ) )

RETURN NIL


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 931
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 04.05.16 21:53. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выкладываю итоговый вариант для проверки


Проверил, работает однако
только я забыл добавить в ReadSettings()

oBrw:GetColumn( "F1" ):cHeading := hIni[ "F1" ][ "Heading" ]
oBrw:GetColumn( "F2" ):cHeading := hIni[ "F2" ][ "Heading" ]
oBrw:GetColumn( "F3" ):cHeading := hIni[ "F3" ][ "Heading" ]
oBrw:GetColumn( "F4" ):cHeading := hIni[ "F4" ][ "Heading" ]

а то заголовки из ини не читает

Спасибо: 0 
Профиль
Alex_Cher





Пост N: 25
Зарегистрирован: 18.06.15
ссылка на сообщение  Отправлено: 05.05.16 08:06. Заголовок: Haz пишет: Проверил..


Haz пишет:

 цитата:
Проверил, работает однако



... мужики, а у меня не работает, в чем проблема ?

Application: C:\MiniGUI\SAMPLES\MY_BASIC\Ishod\demo.exe
Date: 05.05.2016 Time: 08:56:40
Time from start: 0 days 0 hours 0 mins 0 secs
Error BASE/1005 Message not found: TSBROWSE:_LINSERTMODE

Called from __ERRRT_SBASE(0)
Called from TSBROWSE:ERROR(0)
Called from (b)HBOBJECT(0)
Called from TSBROWSE:MSGNOTFOUND(0)
Called from TSBROWSE:_LINSERTMODE(0)
Called from CREATEBROWSE(91)
Called from MAIN(60)


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 932
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.05.16 08:34. Заголовок: Alex_Cher пишет: му..


Alex_Cher пишет:

 цитата:
мужики, а у меня не работает, в чем проблема ?


Ждать новой сборки или самостоятельно внести все изменения в исходники библиотеки


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 940
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.05.16 10:58. Заголовок: Haz пишет: Ждать но..


Haz пишет:

 цитата:
Ждать новой сборки


Выпустил сегодня первый релиз-кандидат для новой сборки 16.05

Спмсок изменений см. ниже
Скрытый текст

Благодарю за поддержку данного проекта
Также принимаются пожервования на PayPal от заинтересованных в выпуске новых сборок

Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 554
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 05.05.16 20:31. Заголовок: 2 tsbrowsa- brw_1(та..


2 tsbrowsa- brw_1(таблица1) и brw_2 (таблица2) на форме. Имя формы через подстановку &cForm. Как организовать отображение в brw_2 данных, если таблица2 подчинена к таблице1(возможно
set ralation или OrdScope или filter )

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 933
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.05.16 20:47. Заголовок: Vlad04 пишет: Как о..


Vlad04 пишет:

 цитата:
Как организовать отображение в brw_2 данных, если таблица2 подчинена к таблице1(возможно
set ralation или OrdScope или filter )


если отношение один к одному то можно и реляцию, если один ко многим то только скоп или фильтр.
Я с ADS ставлю фильтр ( он там быстрый ) в других RDD SCOPE предпочтительнее.
Методика простая, на brw_1:bChange вешается процедура которая ставит скоп или фильтр brw_2
brw_1:bChange := { || (brw_2:cAlias)->( тут фильтр или скоп ), brw_2:Reset() }

Посмотри в примерах tsb_filter.prg, там фильтр ставиться в зависимости от содержимого строки ввода.



Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 555
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.05.16 09:44. Заголовок: Haz brw_1:bChange :..


Haz

 цитата:
brw_1:bChange := { || (brw_2:cAlias)->( тут фильтр или скоп ), brw_2:Reset() }


Ошибка Reset не экспортируемый метод
У меня так

 цитата:

DEFINE TBROWSE Brw_1 ;
AT 40, 10 ;
OF &(cForm) ;
ALIAS cBase ;
WIDTH nWidth-5 ;
HEIGHT nHeight-500 ;
FONT "MS Sans Serif" ;
SIZE 10 BOLD ON CHANGE {||ScRoll(cForm,Brw_1),UpdateItems(),brw_2:Reset() }




Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 556
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.05.16 09:56. Заголовок: Из формы могу обрати..


Из формы могу обратиться к объекту формы , к примеру
 цитата:

FUNCTION TbMove(met,cForm,oBrw,cBase)
// Select(oBrw:cAlias)
Alias(cBase)
DO CASE
CASE met == 1
oBrw:GoTop()
...



Но с объекта формы Brw_2 эту же функцию вызвать не могу !


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 941
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.16 10:29. Заголовок: Vlad04 пишет: Как о..


Vlad04 пишет:

 цитата:
Как организовать отображение в brw_2 данных, если таблица2 подчинена к таблице1


Попробуйте посмотреть как это сделано в базовом примере из папки samples\Advanced\TsBrowse
... 
Else // One to More

@ 0, 0 TBROWSE oBrw2 ALIAS "sta" WIDTH 800 HEIGHT 185 ;
FONT "Font_1" ON CHANGE SincroTb(obrw,invert) ;
CELL

oBrw2:LoadFields()
oBrw2:nWheelLines := 1

@ 185, 0 TBROWSE oBrw ALIAS "Employee" WIDTH 800 HEIGHT 185 ;
FONT "Font_1" CELL
oBrw:LoadFields()
oBrw:Exchange(3, 5)
oBrw:ChangeFont(GetFontHandle( "Font_4" ), 0, 2 )
oBrw:ChangeFont(GetFontHandle( "Font_1" ), 0, 1 )
oBrw:ChangeFont(GetFontHandle( "Font_3" ), 3, 1 )
oBrw:nWheelLines := 1

FORM_10.OBRW2.SETFOCUS
...

*------------------------------------------------------------------------------*
Function SincroTb(obrw,Invert)
*------------------------------------------------------------------------------*
LOCAL cSelState
default invert to .F.

if invert
cSelState := Employee->state
oBrw:SetFilter( "State", cSelState )
else
cSelState := SubStr(sta->state,1,2)
oBrw:SetFilter( "State+Last", cSelState )
Endif

_setitem("statusbar","Form_10",2,cSelState)

oBrw:cPrefix := cSelState
IF FieldGet(FieldPos("State")) != cSelState
oBrw:Enabled(.f.)
ELSE
oBrw:Enabled(.T.)
endif
oBrw:Refresh( .T. )
oBrw:lHasChanged := .T.
oBrw:lNoGrayBar := .T.

return NIL
Эта конструкция работает вполне прилично для небольших баз (до 5 тысяч записей)

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 935
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.16 11:07. Заголовок: Vlad04 пишет: Ошибк..


Vlad04 пишет:

 цитата:
Ошибка Reset не экспортируемый метод У меня так


brw_1 j объявлен раньше Brw_2 и в момент интерпритации кода DEFINE BROWSE Brw_1 и прорисовке бровса выполняется его ::bChange который пока ничего не знает о brw_2 но его использует .
Постоянно наступал на эти грабли когда один контрол использует данные другого ниже по тексту. Вариантов решения много, вот парочка
1 Располагать контролы в тексте PRG в порядке их логического использования ( если поменять brw_1 и brw_2 местами - скорее всего заработает )
2 Использовать на форме флаг CHECKBOX lReady c Visible .F. и выставлять его в .Т. перед Form.Activate, далее примерно так IF( Getproperty( 'Form', lReady, 'Value'), brw_2:Reset(), NIL )
3 вместо флага проверять существование переменной brw_2
и т.д. на что фантазии хватит
PS всего кода ты не дал, поэтому и рекомендации общие

Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 557
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 06.05.16 12:28. Заголовок: ок Все отлично, пере..


ок
Все отлично, переставил brw_1 и brw_2 местами и все заработало !
Однако

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4901
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.16 14:43. Заголовок: Всем привет. Очередн..


Всем привет.
Очередная ошибка у меня.
Делаю таблицу, вывод первой колонки делаю так:
ADD COLUMN TO oBrwS HEADER "№№" ;
DATA {|| OrdKeyNo() } ;
...........

Вот результат:


Стоит только маркером/курсором или мышкой сдвинуть ниже последней записи , как нумерация разрушается и при движении курсором меняется нумерация первой колонки:


Как исправить (убрать) это изменение ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5647
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.05.16 15:02. Заголовок: Andrey пишет: DATA ..


Andrey пишет:

 цитата:
DATA {|| OrdKeyNo() } ;


OrdKeyNo() не нужно уточнить алиасом ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 936
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.16 15:22. Заголовок: Dima пишет: OrdKeyN..


Dima пишет:

 цитата:
OrdKeyNo() не нужно уточнить алиасом ?


Обязательно , OrdkeyNo() работает в текущей рабочей области , а какая она текущая из картинки не понять
Думаю все станет ясно если написать так {|| Select() }

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4902
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.16 15:23. Заголовок: Dima пишет: OrdKeyN..


Dima пишет:

 цитата:
OrdKeyNo() не нужно уточнить алиасом ?


Да можно. Это не поможет.
Там удалённые записи в нумерацию встревают.
Всего в базе 28 записей, из них 7 не удалённых !DELETED(). Фильтра нет.
Т.е. использую просто SET DELETED ON

P.S. пробовал поставить: DATA {|| (Alias())->(OrdKeyNo()) } - такая же фигня.


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 440
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет