I'm not asking for the moon... Resolved!!
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
I'm not asking for the moon... Resolved!!
I'm going crazy and no one is helping me... I have a series of numeric get controls for a little program, I would like only a zero to be displayed at the beginning but the user can type 12345 and the procedure must automatically convert to 123.45 and if the user presses another digit for example 7 this must change the last digit 123.47 and at the same time if the user presses 0.75 the procedure must leave 0.75 left.
I didn't understand which picture I should put in it, I tried with "@Z 999.99" but it doesn't work, that is, at the beginning I see 0.00 in the get instead of just a zero.
@ 60,20 GET aGet[2] VAR nVar SIZE 100,24 PIXEL PICTURE "@Z 999.99" OF oDlg RIGHT
it run ok but I see 0.00 on the get but I wish see only a zero at right
I didn't understand which picture I should put in it, I tried with "@Z 999.99" but it doesn't work, that is, at the beginning I see 0.00 in the get instead of just a zero.
@ 60,20 GET aGet[2] VAR nVar SIZE 100,24 PIXEL PICTURE "@Z 999.99" OF oDlg RIGHT
it run ok but I see 0.00 on the get but I wish see only a zero at right
Last edited by Silvio.Falconi on Fri Jan 19, 2024 7:30 pm, edited 1 time in total.
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
I need it to determine the Kg of materials and I need have 7 digit with a comma
sample 123,45
at init I need to have on Tget only a Zero at right and not 0.00 or 0,00
why it make error ?
sample 123,45
at init I need to have on Tget only a Zero at right and not 0.00 or 0,00
Code: Select all | Expand
@ 60,20 GET aGet[2] VAR nVar SIZE 100,24 PIXEL OF oDlg RIGHT;
VALID ChangePic( oDlg, aGet )
static function ChangePic( oDlg, aGet )
WITH OBJECT aGet[ 2 ]
if !( "@Z 999.99" $ :cPicture )
:cPicture := ;
:oGet:picture := "@Z 999.99"
:Refresh()
endif
END
return .t.
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- Otto
- Posts: 6403
- Joined: Fri Oct 07, 2005 7:07 pm
- Has thanked: 21 times
- Been thanked: 2 times
- Contact:
Re: I'm not asking for the moon...
Do you mean something like this?
![Image](https://mybergland.com/fwforum/gettest.gif)
![Image](https://mybergland.com/fwforum/gettest.gif)
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
No, you not understoodOtto wrote:Do you mean something like this?
the values are numeric ( 6 digit , 2 decimals)
1. at init see only a zero "0" at Right, so I not must see 0.00
2. when digit 12345 the get must transform to 123,45, not with dot "." but with "," comma
3. if the user digit another number sample 7 the get must write 123,47 and the cursor must stay on the last digit
4 the user can press tab to go to another get
If for sample there is allready a value sample 0,75
the get must not transform to 1
or if there is 3,60 the get must not transform to 4
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
I tried to make a mini class but not run
just to make it clear what I wanted, I understood that tget doesn't work well and a subclass is needed
just to make it clear what I wanted, I understood that tget doesn't work well and a subclass is needed
Code: Select all | Expand
// TGetNumeric class
#include "fivewin.ch"
function Main()
local oDlg, oGet
local nVar :=0
local nVar1:=0.75
local aGet:= array(2)
local cGetNumeric
SetGetColorFocus()
DEFINE DIALOG oDlg SIZE 400,150 PIXEL TRUEPIXEL TITLE FWVERSION
cGetNumeric := TGetNumeric ():New(20,20,, oDlg)
ACTIVATE DIALOG oDlg CENTERED
return nil
CLASS TGetNumeric FROM TGet
data nDecimals,nValue
METHOD Init
METHOD keyPress( nKey )
METHOD SetValue( nNewValue )
METHOD GetNumericValue()
METHOD SetNumericValue( nNewValue )
METHOD SetDecimals( nDecimals )
END CLASS
METHOD Init CLASS TGetNumeric
::nDecimals := 2 // Set the number of decimal places
::SetValue(0) // Initialize the value to 0
return self
METHOD keyPress( nKey ) CLASS TGetNumeric
LOCAL nLen, cValue, nCursorPos
::keyPress( nKey ) // Call base class method
IF nKey >= K_0 .AND. nKey <= K_9 // Check if the pressed key is a digit
cValue := STR(::nValue, 7, ::nDecimals) // Convert numeric value to string
nCursorPos := MAX( 0, RAt( ".", cValue ) - 1 ) // Get cursor position
::SetText( cValue ) // Update control with formatted value
::setSel( nCursorPos + 1, nCursorPos + 1 ) // Set cursor position
ENDIF
return nil
METHOD SetValue( nNewValue ) CLASS TGetNumeric
LOCAL cFormattedValue
cFormattedValue := STR(nNewValue, 7, ::nDecimals) // Format the numeric value
::SetText( cFormattedValue ) // Update control with formatted value
::setSel( 7 - ::nDecimals, 7 - ::nDecimals ) // Set cursor position
RETURN NIL
METHOD GetNumericValue() CLASS TGetNumeric
RETURN VAL( ::GetText() )
METHOD SetNumericValue( nNewValue ) CLASS TGetNumeric
::SetValue( nNewValue )
RETURN NIL
METHOD SetDecimals( nDecimals ) CLASS TGetNumeric
::nDecimals := nDecimals
RETURN NIL
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
Code: Select all | Expand
#include "fivewin.ch"
FUNCTION Main()
LOCAL oDlg, aGet := array(2)
LOCAL nVar1 := 0.75
LOCAL nVar := 0
SetGetColorFocus()
DEFINE DIALOG oDlg SIZE 400,150 PIXEL TRUEPIXEL TITLE FWVERSION
@ 20,20 GET aGet[1] VAR nVar1 SIZE 100,24 PIXEL picture "@E999.99" OF oDlg RIGHT ;
@ 60,20 GET aGet[2] VAR nVar SIZE 100,24 PIXEL picture "@E999.99" OF oDlg RIGHT;
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
on second tget if I digit 12345 it must write 123,45 How I can make ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- karinha
- Posts: 7932
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: I'm not asking for the moon...
Mira se ayda:
https://fivewin.com.br/index.php?/topic ... get-ativo/
https://fivewin.com.br/index.php?/topic ... lucionado/
https://fivewin.com.br/index.php?/topic ... cara-pict/
https://fivewin.com.br/index.php?/topic ... A3%C6%92o/
https://fivewin.com.br/index.php?/topic ... resolvido/
https://fivewin.com.br/index.php?/topic ... ment-61225
If you didn't make so many enemies, you'd have more answers. Think about it.
Si no te hicieras tantos enemigos, tendrías más respuestas. Piense en eso.
Regards, saludos.
https://fivewin.com.br/index.php?/topic ... get-ativo/
https://fivewin.com.br/index.php?/topic ... lucionado/
https://fivewin.com.br/index.php?/topic ... cara-pict/
https://fivewin.com.br/index.php?/topic ... A3%C6%92o/
https://fivewin.com.br/index.php?/topic ... resolvido/
https://fivewin.com.br/index.php?/topic ... ment-61225
If you didn't make so many enemies, you'd have more answers. Think about it.
Si no te hicieras tantos enemigos, tendrías más respuestas. Piense en eso.
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- cmsoft
- Posts: 1297
- Joined: Wed Nov 16, 2005 9:14 pm
- Location: Mercedes - Bs As. Argentina
- Been thanked: 2 times
Re: I'm not asking for the moon...
Silvio:
Algo asi te puede servir?
O al menos que te de un inicio
Tengo que
Claro que es muy mejorable, pero al menos para comenzar
Algo asi te puede servir?
O al menos que te de un inicio
Tengo que
Code: Select all | Expand
#include "Fivewin.ch"
#include "xbrowse.ch"
FUNCTION Main()
LOCAL oDlg1, oGet := array(4), nVar := {' 0',' 0',' 0',' 0'}, oBot1
SET CONFIRM ON
DEFINE DIALOG oDlg1 TITLE "Ingreso de datos" SIZE 300,100 PIXEL RESIZABLE
@ 05,25 GET oGet[1] var nVar[1] PICTURE "@9" OF oDlg1 PIXEL right
@ 05,55 GET oGet[2] var nVar[2] PICTURE "@9" OF oDlg1 PIXEL right
@ 05,85 GET oGet[3] var nVar[3] PICTURE "@9" OF oDlg1 PIXEL right
@ 05,115 GET oGet[4] var nVar[4] PICTURE "@9" OF oDlg1 PIXEL right
@ 25,20 BUTTON oBot1 PROMPT "&Ok" OF oDlg1 SIZE 30,10 ACTION oDlg1:End() PIXEL
oGet[1]:bLostFocus := {|| (oGet[1]:Assign(),oGet[1]:cText := STR(VAL(oGet[1]:cText) /100,6,2), oGet[1]:Refresh()) }
oGet[2]:bLostFocus := {|| (oGet[2]:Assign(),oGet[2]:cText := STR(VAL(oGet[2]:cText) /100,6,2), oGet[2]:Refresh()) }
oGet[3]:bLostFocus := {|| (oGet[3]:Assign(),oGet[3]:cText := STR(VAL(oGet[3]:cText) /100,6,2), oGet[3]:Refresh()) }
oGet[4]:bLostFocus := {|| (oGet[4]:Assign(),oGet[4]:cText := STR(VAL(oGet[4]:cText) /100,6,2), oGet[4]:Refresh()) }
oGet[1]:bGotFocus := {|| (oGet[1]:cText := STR(VAL(oGet[1]:cText) *100,6), oGet[1]:Refresh(),oGet[1]:SelectAll()) }
oGet[2]:bGotFocus := {|| (oGet[2]:cText := STR(VAL(oGet[2]:cText) *100,6), oGet[2]:Refresh(),oGet[2]:SelectAll()) }
oGet[3]:bGotFocus := {|| (oGet[3]:cText := STR(VAL(oGet[3]:cText) *100,6), oGet[3]:Refresh(),oGet[3]:SelectAll()) }
oGet[4]:bGotFocus := {|| (oGet[4]:cText := STR(VAL(oGet[4]:cText) *100,6), oGet[4]:Refresh(),oGet[4]:SelectAll()) }
ACTIVATE DIALOG oDlg1 CENTERED
xbrowse(nVar)
RETURN nil
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
Cesar,cmsoft wrote:Silvio:
Algo asi te puede servir?
O al menos que te de un inicio
Tengo queClaro que es muy mejorable, pero al menos para comenzarCode: Select all | Expand
#include "Fivewin.ch" #include "xbrowse.ch" FUNCTION Main() LOCAL oDlg1, oGet := array(4), nVar := {' 0',' 0',' 0',' 0'}, oBot1 SET CONFIRM ON DEFINE DIALOG oDlg1 TITLE "Ingreso de datos" SIZE 300,100 PIXEL RESIZABLE @ 05,25 GET oGet[1] var nVar[1] PICTURE "@9" OF oDlg1 PIXEL right @ 05,55 GET oGet[2] var nVar[2] PICTURE "@9" OF oDlg1 PIXEL right @ 05,85 GET oGet[3] var nVar[3] PICTURE "@9" OF oDlg1 PIXEL right @ 05,115 GET oGet[4] var nVar[4] PICTURE "@9" OF oDlg1 PIXEL right @ 25,20 BUTTON oBot1 PROMPT "&Ok" OF oDlg1 SIZE 30,10 ACTION oDlg1:End() PIXEL oGet[1]:bLostFocus := {|| (oGet[1]:Assign(),oGet[1]:cText := STR(VAL(oGet[1]:cText) /100,6,2), oGet[1]:Refresh()) } oGet[2]:bLostFocus := {|| (oGet[2]:Assign(),oGet[2]:cText := STR(VAL(oGet[2]:cText) /100,6,2), oGet[2]:Refresh()) } oGet[3]:bLostFocus := {|| (oGet[3]:Assign(),oGet[3]:cText := STR(VAL(oGet[3]:cText) /100,6,2), oGet[3]:Refresh()) } oGet[4]:bLostFocus := {|| (oGet[4]:Assign(),oGet[4]:cText := STR(VAL(oGet[4]:cText) /100,6,2), oGet[4]:Refresh()) } oGet[1]:bGotFocus := {|| (oGet[1]:cText := STR(VAL(oGet[1]:cText) *100,6), oGet[1]:Refresh(),oGet[1]:SelectAll()) } oGet[2]:bGotFocus := {|| (oGet[2]:cText := STR(VAL(oGet[2]:cText) *100,6), oGet[2]:Refresh(),oGet[2]:SelectAll()) } oGet[3]:bGotFocus := {|| (oGet[3]:cText := STR(VAL(oGet[3]:cText) *100,6), oGet[3]:Refresh(),oGet[3]:SelectAll()) } oGet[4]:bGotFocus := {|| (oGet[4]:cText := STR(VAL(oGet[4]:cText) *100,6), oGet[4]:Refresh(),oGet[4]:SelectAll()) } ACTIVATE DIALOG oDlg1 CENTERED xbrowse(nVar) RETURN nil
the values ( nVar1,2,3,4) must be numeric and then not wish "." ( dot separation) but "," (comma separation)
then it run if the nvar are all zero if we have the values allready on dbf ? not run
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- Otto
- Posts: 6403
- Joined: Fri Oct 07, 2005 7:07 pm
- Has thanked: 21 times
- Been thanked: 2 times
- Contact:
Re: I'm not asking for the moon...
Use STRTRAN()
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
Perhaps we not understading the problem...Otto wrote:Use STRTRAN()
in the xbrowse table I have the numerical digits with the comma separator, then when I go to make the change I find the digits with the dot separator, do you think this is normal?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- Otto
- Posts: 6403
- Joined: Fri Oct 07, 2005 7:07 pm
- Has thanked: 21 times
- Been thanked: 2 times
- Contact:
Re: I'm not asking for the moon...
Yes, see this line.
oGet[1]:bGotFocus := {|| (oGet[1]:cText := STR(VAL(oGet[1]:cText) *100,6), oGet[1]:Refresh(),oGet[1]:SelectAll()) }
Cesar, changed the GETs to character that you get the inputstyle you wanted.
oGet[1]:bGotFocus := {|| (oGet[1]:cText := STR(VAL(oGet[1]:cText) *100,6), oGet[1]:Refresh(),oGet[1]:SelectAll()) }
Cesar, changed the GETs to character that you get the inputstyle you wanted.
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
Yes but nvar Is text array but i have numbers no textsOtto wrote:Yes, see this line.
oGet[1]:bGotFocus := {|| (oGet[1]:cText := STR(VAL(oGet[1]:cText) *100,6), oGet[1]:Refresh(),oGet[1]:SelectAll()) }
Cesar, changed the GETs to character that you get the inputstyle you wanted.
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
- Otto
- Posts: 6403
- Joined: Fri Oct 07, 2005 7:07 pm
- Has thanked: 21 times
- Been thanked: 2 times
- Contact:
Re: I'm not asking for the moon...
Before saving, use VAL()
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
- Silvio.Falconi
- Posts: 7132
- Joined: Thu Oct 18, 2012 7:17 pm
- Been thanked: 1 time
Re: I'm not asking for the moon...
unlike you I try my programs over and over again and don't hand the client something that doesn't work well.Otto wrote:Before saving, use VAL()
It's not easy at all, as I told you in the Xbrowse table I have the numeric figures with commas, then when I go to make the change I find them with the separation point also because I used the picture "@Z999.99"
Cesar's test could work but I tried and tried several times and often the asterisks "***.**" were formed instead of numbers and this is a waste of time if we imagine that if the operator enters in a fast way where you always have to go back with the mouse.
Please test this small test
![Image](https://i.postimg.cc/tRZ43pKk/ju.png)
On Modify I not understood how convert the fields numeric to use cesar test
this test create a demo dbf to try ( please not change the structure of dbf I must use it)
there is only modify procedure
Code: Select all | Expand
#include "Fivewin.ch"
#include "xbrowse.ch"
REQUEST DBFCDX
Function main()
local nWd := GetSysMetrics(0) * .58
local nHt := GetSysMetrics(1) / 2.5
local oDlg,oFont,oBold
local oBrw,oBar
local oBtn:=array(3)
local aData:= {}
local cCod_temp:= "00001" // to demo
local oDbf
local cDir:= cFilePath(GetModuleFileName( GetInstance() )) + "Data\"
RddSetDefault( "DBFCDX" )
SetHandleCount( 100 )
FWNumFormat( "E", .t. )
SET DATE FORMAT "dd-mm-yyyy"
SET DELETED ON
SET CENTURY ON
SET EPOCH TO year( date() ) - 20
SET MULTIPLE OFF
oFont := TFont():New( "Tahoma", 0, 18,, )
oBold := TFont():New( "Tahoma", 0, 16,,.t. )
// Creation Dbf for Demo test
Build_Dbf(cDir) // create dbf
// Open dDbf
oDbf:=TSample():New()
oDbf:setorder(1)
oDbf:Gotop()
// take the records for cCod_temp
aData := oDbf:DbfToArray( , { ||FIELD->cod == cCod_temp } )
DEFINE DIALOG oDlg SIZE nWd, nHt PIXEL ; //TRUEPIXEL
TITLE "test numeric" ;
FONT oFont COLOR CLR_BLACK, CLR_WHITE ;
STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ;
WS_MINIMIZEBOX)
//---------------------------------------------------------------------//
DEFINE BUTTONBAR oBar OF oDlg SIZE 80,70 BOTTOM NOBORDER 2015
DEFINE BUTTON oBtn[1] OF oBar ;
FILENAME "DLG_NO";
PROMPT "Add" TOOLTIP "Esci" ;
ACTION Modify(oBrw,1,oFont)
DEFINE BUTTON oBtn[2] OF oBar ;
FILENAME "HLP_DLG";
PROMPT "Modify" TOOLTIP "Aiuto" ;
ACTION Modify(oBrw,2,oFont) GROUP
DEFINE BUTTON oBtn[3] OF oBar BTNRIGHT ;
FILENAME "DLG_OK";
PROMPT "Exit" ;
TOOLTIP "Conferma i dati" ;
ACTION ( oDlg:end( IDOK ) )
//--------------------------------------------------------------------------//
@ 2, 5 XBROWSE oBrw OF oDlg ;
COLUMNS 2,3,4,5;
HEADERS "Peso1","Peso2","Peso3","Peso4" ;
COLSIZES 90,90,90,90 ;
ARRAY aData ;
SIZE -5,-60 PIXEL STYLE FLAT NOBORDER
WITH OBJECT oBrw
:lHScroll := .f.
:CreateFromCode()
END
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( oDlg:resize(), ChangeButtons( oBar ) )
return nil
//------------------------------------------------------------------//
function ChangeButtons( oBar )
AEval( oBar:aControls, { | oCtrl | oCtrl:nTop += 4, oCtrl:nHeight -= 4 } )
return .T.
FUNCTION Modify(oBrowse,nMode,oFont) // cesar test
LOCAL oDlg1, oGet := array(4)
local nVar := {' 0',' 0',' 0',' 0'}, oBot1
local nRecord:= oBrowse:nArrayAt
local ntest1,ntest2,ntest3,ntest4
local cPicture:="@Z 999.99"
local aGet:= array(4)
local nWd := GetSysMetrics(0) * .58
local nHt := GetSysMetrics(1) / 4
local oBtn1,oBtn2,oBar
IF nMode==2 //modify
ntest1 := Str(oBrowse:aArraydata[nRecord][2])
ntest2 := Str(oBrowse:aArraydata[nRecord][3])
ntest3 := Str(oBrowse:aArraydata[nRecord][4])
ntest4 := Str(oBrowse:aArraydata[nRecord][5])
Endif
SET CONFIRM ON
DEFINE DIALOG oDlg1 SIZE nWd, nHt PIXEL ;
TITLE "test numeric" ;
FONT oFont COLOR CLR_BLACK, CLR_WHITE ;
STYLE nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION, WS_SYSMENU, ;
WS_MINIMIZEBOX)
//-------------------------------------------------------------------//
DEFINE BUTTONBAR oBar OF oDlg1 SIZE 70,70 2015 BOTTOM NOBORDER
DEFINE BUTTON oBtn1 OF oBar ;
FILENAME "DLG_NO";
PROMPT "Annulla" TOOLTIP "Esci" ;
ACTION ( oDlg1:end( IDCANCEL ) )
DEFINE BUTTON oBtn2 OF oBar BTNRIGHT ;
FILENAME "DLG_OK";
PROMPT "Conferma" ;
TOOLTIP "Conferma i dati" ;
ACTION ( oDlg1:end( IDOK ) )
//-------------------------------------------------------------------//
@ 70, 20 GET aGet[1] VAR ntest1 OF oDlg1 SIZE 32, 12 PIXEL FONT oFont PICTURE cPicture UPDATE RIGHT
@ 70, 82 GET aGet[2] VAR ntest2 OF oDlg1 SIZE 32, 12 PIXEL FONT oFont PICTURE cPicture UPDATE RIGHT
@ 70, 245 GET aGet[3] VAR ntest3 OF oDlg1 SIZE 32, 12 PIXEL FONT oFont PICTURE cPicture UPDATE RIGHT
@ 70, 295 GET aGet[4] VAR ntest4 OF oDlg1 SIZE 32, 12 PIXEL FONT oFont PICTURE cPicture UPDATE RIGHT
aGet[1]:bLostFocus := {|| (aGet[1]:Assign(),aGet[1]:cText := STR(VAL(aGet[1]:cText) /100,6,2), aGet[1]:Refresh()) }
aGet[2]:bLostFocus := {|| (aGet[2]:Assign(),aGet[2]:cText := STR(VAL(aGet[2]:cText) /100,6,2), aGet[2]:Refresh()) }
aGet[3]:bLostFocus := {|| (aGet[3]:Assign(),aGet[3]:cText := STR(VAL(aGet[3]:cText) /100,6,2), aGet[3]:Refresh()) }
aGet[4]:bLostFocus := {|| (aGet[4]:Assign(),aGet[4]:cText := STR(VAL(aGet[4]:cText) /100,6,2), aGet[4]:Refresh()) }
aGet[1]:bGotFocus := {|| (aGet[1]:cText := STR(VAL(aGet[1]:cText) *100,6), aGet[1]:Refresh(),aGet[1]:SelectAll()) }
aGet[2]:bGotFocus := {|| (aGet[2]:cText := STR(VAL(aGet[2]:cText) *100,6), aGet[2]:Refresh(),aGet[2]:SelectAll()) }
aGet[3]:bGotFocus := {|| (aGet[3]:cText := STR(VAL(aGet[3]:cText) *100,6), aGet[3]:Refresh(),aGet[3]:SelectAll()) }
aGet[4]:bGotFocus := {|| (aGet[4]:cText := STR(VAL(aGet[4]:cText) *100,6), aGet[4]:Refresh(),aGet[4]:SelectAll()) }
ACTIVATE DIALOG oDlg1 CENTERED ;
ON INIT ( oDlg1:resize(), ChangeButtons( oBar ) )
IF oDlg1:nresult == IDOK
oBrowse:aArraydata[nRecord][2]:= ntest1
oBrowse:aArraydata[nRecord][3]:= ntest2
oBrowse:aArraydata[nRecord][4]:= ntest3
oBrowse:aArraydata[nRecord][5]:= ntest4
endif
RETURN nil
//------------------------------------------------------------------------------------//
Function Build_Dbf(cDir)
local lAppend := .F.
FIELD cod
local aFields := { { "Cod", "C", 5, 0 },;
{ "test1", "N", 6, 2 },;
{ "test2", "N", 6, 2 },;
{ "test3", "N", 6, 2 },;
{ "test4", "N", 6, 2 }}
IF !lIsDir(alltrim(cDir))
IF !lMkDir(cDir)
MsgAlert("Attention")
ENDIf
ENDIf
if File( cdir+"sample.dbf" )
if !File( cdir+"sample.cdx" )
USE &(cdir+"sample") NEW EXCLUSIVE ALIAS DB
INDEX ON Cod TAG COD FOR !Deleted()
CLOSE DB
endif
else
DbCreate( cdir+"sample.dbf", aFields, "DBFCDX", .T., "DB" )
lAppend := .T.
INDEX ON Cod TAG COD FOR !Deleted()
CLOSE DB
endif
/// add test
if lAppend
USE &(cdir+"sample") NEW EXCLUSIVE ALIAS DB
INDEX ON Cod TAG COD FOR !Deleted()
APPEND BLANK
REPLACE COD WITH "00001"
REPLACE TEST1 WITH 0.10
REPLACE TEST2 WITH 0.20
REPLACE TEST3 WITH 3.60
REPLACE TEST4 WITH 0.70
APPEND BLANK
REPLACE COD WITH "00001"
REPLACE TEST1 WITH 0.75
REPLACE TEST2 WITH 0.20
REPLACE TEST3 WITH 3.60
REPLACE TEST4 WITH 0.50
APPEND BLANK
REPLACE COD WITH "00001"
REPLACE TEST1 WITH 1.2
REPLACE TEST2 WITH 0.20
REPLACE TEST3 WITH 3.60
REPLACE TEST4 WITH 0.4
CLOSE DB
Endif
RETURN NIL
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
CLASS TXData from TDatabase
DATA cDbfPath init cFilePath(GetModuleFileName( GetInstance() )) + "Data\"
ENDCLASS
CLASS TSample from TXData
METHOD New()
ENDCLASS
METHOD New( lShared ) CLASS TSample
Default lShared := .t.
::super:New(,::cDbfPath + "Sample" ,"DBFCDX", lShared)
if ::use()
::setOrder(1)
::gotop()
endif
RETURN Self
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------//
Last edited by Silvio.Falconi on Fri Jan 19, 2024 8:44 am, edited 2 times in total.
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com