[ { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "IsAlpha()()", "text": "IsAlpha() - Checks if leftmost character in a string is an alphabetic character\nSintaxis: IsAlpha( ) --> lAlpha\nThis function return a logical true (.T.) if the first character in is an alphabetic character. If not, the function will return a logical false (.F.).\nEjemplo: ? IsAlpha( \"hello\" ) ? IsAlpha( \"12345\" )" }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "IsDigit()()", "text": "IsDigit() - Checks if leftmost character is a digit character\nSintaxis: IsDigit( ) --> lDigit\nThis function takes the character string and checks to see if the leftmost character is a digit, from 1 to 9. If so, the function will return a logical true (.T.); otherwise, it will return a logical false (.F.).\nEjemplo: ? IsDigit( \"12345\" ) // --> .T. ? IsDigit( \"abcde\" ) // --> .F." }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "IsUpper()()", "text": "IsUpper() - Checks if leftmost character is an uppercased letter.\nSintaxis: IsUpper( ) --> lUpper\nThis function checks to see if the leftmost character if is a uppercased letter. If so, the function will return a logical true (.T.); otherwise, it will return a logical false (.F.).\nEjemplo: ? IsUpper( \"Abcde\" ) // --> .T. ? IsUpper( \"abcde\" ) // --> .F." }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "IsLower()()", "text": "IsLower() - Checks if leftmost character is an lowercased letter.\nSintaxis: IsLower( ) --> lLower\nThis function takes the character string and checks to see if the leftmost character is a lowercased letter. If so, the function will return a logical true (.T.); otherwise, it will return a logical false (.F.).\nEjemplo: ? IsLower( \"ABCde\" ) // --> .F. ? IsLower( \"aBCde\" ) // --> .T." }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "LTrim()()", "text": "LTrim() - Removes leading spaces from a string\nSintaxis: LTrim( ) --> cReturn\nThis function trims the leading space blank\nEjemplo: ? \"|\" + LTrim( \"Hello \" ) + \"|\"" }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "At()()", "text": "At() - Locates the position of a substring in a main string.\nSintaxis: At( , ) --> nPos\nThis function searches the string for the characters in the first string . If the substring is not contained within the second expression, the function will return 0.\nEjemplo: ? At( \"cde\", \"abcdefgfedcba\" ) // --> 3" }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "hb_At()()", "text": "hb_At() - Locates the position of a substring in a main string.\nSintaxis: hb_At( , , [], [] ) --> nPos\nThis function searches the string for the characters in the first string . If the substring is not contained within the second expression, the function will return 0. The third and fourth parameters lets you indicate a starting and end offset to search in.\nEjemplo: ? hb_At( \"cde\", \"abcdefgfedcba\" ) // --> 3 ? hb_At( \"cde\", \"abcdefgfedcba\", 4 ) // --> 0" }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "RAt()()", "text": "RAt() - Searches for last occurrence a substring of a string.\nSintaxis: RAt( , ) --> nPos\nThis function searches for last occurrence a in . If the function is unable to find any occurrence of in , the return value is 0.\nEjemplo: ? RAt( \"cde\", \"abcdefgfcdeedcba\" ) // --> 9 ? RAt( \"cdr\", \"abcdefgfedcba\" ) // --> 0" }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "hb_RAt()()", "text": "hb_RAt() - Searches for last occurrence a substring of a string.\nSintaxis: hb_RAt( , , [], [] ) --> nPos\nThis function searches for last occurrence a in . If the function is unable to find any occurrence of in , the return value is 0. 3rd and 4th parameters define inclusive range for 2nd parameter on which operation is performed. If 3rd and 4th parameters is not specified, then hb_RAt() is equal to RAt().\nEjemplo: LOCAL cString := \"acdefcdeedcb\" LOCAL cSearch := \"cde\" LOCAL i, y, r LOCAL nLen := Len( cString ) FOR y := 1 TO nLen FOR i := 1 TO nLen IF ( r := hb_RAt( cSearch, cString, y, i ) )" }, { "src": "harbour/core · doc/en/string.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/string.txt", "title": "Left()()", "text": "Left() - Extract the leftmost substring of a character expression\nSintaxis: Left( , ) --> cReturn\nThis functions returns the leftmost characters of . It is equivalent to the following expression: ``` SubStr( , 1, ) ```\nEjemplo: ? Left( \"Hello Harbour\", 5 ) // --> \"Hello\"" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "Array()()", "text": "Array() - Create an uninitialized array of specified length\nSintaxis: Array( [, ...] ) --> aArray\nThis function returns an uninitialized array with the length of . Nested arrays are uninitialized within the same array pointer reference if additional parameters are specified. Establishing a memory variable with the same name as the array may destroy the original array and release the entire contents of the array. This depends, of course, on the data storage type of either the array or the variable with \nEjemplo: LOCAL aArray := Array( 10 ), tmp FOR tmp := 1 TO Len( aArray ) aArray[ tmp ] := Array( tmp ) NEXT ? hb_ValToExp( aArray ) // --> { { NIL }, { NIL, NIL }, ... }" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "AAdd()()", "text": "AAdd() - Dynamically add an element to an array\nSintaxis: AAdd( , [] ) --> xValue\nThis function dynamically increases the length of the by adding one new element to the end of the array and optionally stores the value to that newly created element. may be of an data type, including an array reference pointer, which in turn may be stored to an array's subscript position.\nEjemplo: LOCAL aArray := {}, tmp AAdd( aArray, 10 ) FOR tmp := 1 TO 10 AAdd( aArray, tmp ) NEXT ? hb_ValToExp( aArray ) // --> { 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "ASize()()", "text": "ASize() - Adjust the size of an array\nSintaxis: ASize( , ) --> aArray\nThis function will dynamically increase or decrease the size of by adjusting the length of the array to subscript positions. If the length of the array is shortened, the redundant elements are removed from the end of array. If the length of the array is lengthened the new elements are added to the end of array and they are assigned a NIL value.\nEjemplo: LOCAL aArray := { 1 } ? hb_ValToExp( aArray ) // --> { 1 } ASize( aArray, 3 ) ? hb_ValToExp( aArray ) // --> { 1, NIL, NIL } ASize( aArray, 1 ) ? hb_ValToExp( aArray ) // --> { 1 }" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "ATail()()", "text": "ATail() - Returns the last element of an array\nSintaxis: ATail( ) --> xValue\nThis function return the value of the last element in the array named . Same as `xValue := aArray[ Len( aArray ) ]`\nEjemplo: LOCAL aArray := { \"Harbour\", \"is\", \"Supreme\", \"Power\" } ? ATail( aArray ) // --> \"Power\"" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "AIns()()", "text": "AIns() - Insert a NIL value at an array subscript position.\nSintaxis: AIns( , ) --> aArray\nThis function inserts a NIL value in the array named at the th position. All array elements starting with the th position will be shifted down one subscript position in the array list and the last item in the array will be removed completely. In other words, if an array element were to be inserted at the fifth subscript position, the element previously in the fifth position would now be located a\nEjemplo: LOCAL aArray := { \"Harbour\", \"is\", \"Power!\", \"!!!\" } AIns( aArray, 4 ) ? hb_ValToExp( aArray )" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "hb_AIns()()", "text": "hb_AIns() - Inserts a value at an array subscript position and optionally increases the length of array.\nSintaxis: hb_AIns( , [], [], [] ) --> aArray\nThis function inserts in the position of the array, moving all the items one position down in the array list. If is .T., a new element will be added at the end of array, making room for the previous last element, which means the length of array will be increased by 1. If is .F. (or is not passed) the function behaves like AIns(), that is, the size of won't change and t\nEjemplo: LOCAL aArray := { \"Harbour\", \"Power!\" } hb_AIns( aArray, 2, \"is\", .F. ) ? hb_ValToExp( aArray ) // --> { \"Harbour\", \"is\" } hb_AIns( aArray, 2, \"is\", .T. ) ? hb_ValToExp( aArray ) /" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "ADel()()", "text": "ADel() - Delete an element from an array.\nSintaxis: ADel( , ) --> aArray\nThis function deletes the element found at subscript position in the array . All elements in the array below the given subscript position will move up one position in the array. In other words, what was formerly the sixth subscript position will become the fifth subscript position. The length of the array will remain unchanged, as the last element in the array will become a NIL\nEjemplo: LOCAL aArray := { \"Harbour\", \"is\", \"Power\" } ADel( aArray, 2 ) ? hb_ValToExp( aArray ) // --> { \"Harbour\", \"Power\", NIL }" }, { "src": "harbour/core · doc/en/arrayshb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/arrayshb.txt", "title": "hb_ADel()()", "text": "hb_ADel() - Delete an element from an array.\nSintaxis: hb_ADel( , [], [] ) --> aArray\nThis function deletes the element value (not the element itself!) stored in position and shifts all the following values, one position up. If is .T., then the last element is removed and the size of the array is decreased by one, otherwise the length of the array remains unchanged and a NIL value will be stored in the last element, just like in ADel().\nEjemplo: LOCAL aArray := { \"Harbour\", \"is\", \"Power\" } hb_ADel( aArray, 2 ) ? hb_ValToExp( aArray ) // --> { \"Harbour\", \"Power\", NIL } - length unchanged hb_ADel( aArray, 2, .T. ) ? hb_ValTo" }, { "src": "harbour/core · doc/en/datetime.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/datetime.txt", "title": "CDoW()()", "text": "CDoW() - Converts a date to the day of week\nSintaxis: CDoW( ) --> cDay\nThis function returns a character string of the day of the week, from a date expression passed to it. If a NULL date is passed to the function, the value of the function will be a NULL byte.\nEjemplo: ? CDoW( Date() ) IF CDoW( Date() + 10 ) == \"Sunday\" ? \"This is a sunny day.\" ENDIF" }, { "src": "harbour/core · doc/en/datetime.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/datetime.txt", "title": "CMonth()()", "text": "CMonth() - Return the name of the month.\nSintaxis: CMonth( ) --> cMonth\nThis function returns the name of the month (January, February, etc.) from a date expression passed to it. If a NULL date is passed to the function, the value of the function will be a NULL byte.\nEjemplo: ? CMonth( Date() ) IF CMonth( Date() + 10 ) == \"March\" ? \"Have you done your system backup?\" ENDIF" }, { "src": "harbour/core · doc/en/datetime.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/datetime.txt", "title": "Date()()", "text": "Date() - Return the Current OS Date\nSintaxis: Date() --> dCurDate\nThis function returns the current system date.\nEjemplo: ? Date() ? \"Today is\", hb_ntos( Day( Date() ) ), \"of\", CMonth( Date() ), \"of\", StrZero( Year( Date() ), 4 )" }, { "src": "harbour/core · doc/en/datetime.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/datetime.txt", "title": "CToD()()", "text": "CToD() - Converts a character string to a date expression\nSintaxis: CToD( ) --> dDate\nThis function converts a date that has been entered as a character expression to a date expression. The character expression will be in the form `MM/DD/YY` (based on the default value in `SET DATE`) or in the appropriate format specified by the `SET DATE TO` command. If an improper character string is passed to the function, an empty date value will be returned.\nEjemplo: Set( _SET_DATEFORMAT, \"yyyy-mm-dd\" ) ? CToD( \"2000-12-21\" )" }, { "src": "harbour/core · doc/en/datetime.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/datetime.txt", "title": "Day()()", "text": "Day() - Return the numeric day of the month.\nSintaxis: Day( ) --> nMonth\nThis function returns the numeric value of the day of month from a date.\nEjemplo: ? Day( Date() ) ? Day( Date() + 6325 )" }, { "src": "harbour/core · doc/en/datetime.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/datetime.txt", "title": "Days()()", "text": "Days() - Convert elapsed seconds into days\nSintaxis: Days( ) --> nDay\nThis function converts seconds to the equivalent number of days; 86399 seconds represents one day, 0 seconds being midnight.\nEjemplo: ? Days( 2434234 ) ? Days( 63251 )" }, { "src": "harbour/core · doc/en/math.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/math.txt", "title": "Abs()()", "text": "Abs() - Return the absolute value of a number.\nSintaxis: Abs( ) --> nAbsNumber\nThis function yields the absolute value of the numeric value or expression .\nEjemplo: LOCAL nNumber := 50 LOCAL nNumber1 := 27 ? nNumber - nNumber1 ? nNumber1 - nNumber ? Abs( nNumber - nNumber1 ) ? Abs( nNumber1 - nNumber ) ? Abs( -1 * 345 )" }, { "src": "harbour/core · doc/en/math.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/math.txt", "title": "Exp()()", "text": "Exp() - Calculates the value of e raised to the passed power.\nSintaxis: Exp( ) --> nValue\nThis function returns the value of e raised to the power of . It is the inverse of Log().\nEjemplo: ? Exp( 45 )" }, { "src": "harbour/core · doc/en/math.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/math.txt", "title": "Int()()", "text": "Int() - Return the integer port of a numeric value.\nSintaxis: Int( ) --> nIntNumber\nThis function converts a numeric expression to an integer. All decimal digits are truncated. This function does not round a value upward or downward; it merely truncates a number at the decimal point.\nEjemplo: Set( _SET_DECIMALS, 5 ) ? Int( 632512.62541 ) ? Int( 845414111.91440 )" }, { "src": "harbour/core · doc/en/math.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/math.txt", "title": "Log()()", "text": "Log() - Returns the natural logarithm of a number.\nSintaxis: Log( ) --> nLog\nThis function returns the natural logarithm of the number . If is 0 or less than 0, a numeric overflow occurs, which is depicted on the display device as a series of asterisks. This function is the inverse of Exp().\nEjemplo: ? Log( 632512 )" }, { "src": "harbour/core · doc/en/math.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/math.txt", "title": "Max()()", "text": "Max() - Returns the maximum of two numbers or dates.\nSintaxis: Max( , ) --> xMax\nThis function returns the larger of the two passed expressions. If and are numeric data types, the value returned by this function will be a numeric data type as well and will be the larger of the two numbers passed to it. If and are date data types, the return value will be a date data type as well. It will be the later of the two dates passed to it.\nEjemplo: ? Max( 214514214, 6251242142 ) ? Max( 0d20001111, 0d20140621 )" }, { "src": "harbour/core · doc/en/file.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/file.txt", "title": "FOpen()()", "text": "FOpen() - Open a file.\nSintaxis: FOpen( , [] ) --> nHandle\nThis function opens a file expressed as and returns a file handle to be used with other low-level file functions. The value of represents the status of the file to be opened; the default value is 0. The file open modes are as follows: nMode Meaning FO_READ Read only FO_WRITE Write only FO_READWRITE Read/write FO_EXCLUSIVE Exclusive read only FO_DENYWRITE Prevent others from writing FO_DENYREAD\nEjemplo: #include \"fileio.ch\" IF ( nH := FOpen( \"test.txt\", FO_READWRITE + FO_DENYNONE ) ) == F_ERROR ? \"File can't be opened\" ENDIF" }, { "src": "harbour/core · doc/en/file.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/file.txt", "title": "FCreate()()", "text": "FCreate() - Creates a file.\nSintaxis: FCreate( , [] ) --> nHandle\nThis function creates a new file with a file name of . The default value of is 0 and is used to set the attribute byte for the file being created by this function. The return value will be a file handle that is associated with the new file. This number will be between zero to 65535, inclusive. If an error occurs, the return value of this function will be F_ERROR. If the file already exists\nEjemplo: #include \"fileio.ch\" IF ( nh := FCreate( \"test.txt\" ) ) == F_ERROR ? \"Cannot create file\" ENDIF" }, { "src": "harbour/core · doc/en/file.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/file.txt", "title": "FRead()()", "text": "FRead() - Reads a specified number of bytes from a file.\nSintaxis: FRead( , @, ) --> nBytes\nThis function reads the characters from a file whose file handle is into a character memory variable expressed as . The function returns the number of bytes successfully read into . The value of is obtained from either a call to the FOpen() or the FCreate() function. The expression is passed by reference and must be defined before this function is called. It also must b\nEjemplo: #include \"fileio.ch\" cBuffer := Space( 500 ) IF ( nH := FOpen( \"test.txt\" ) ) == F_ERROR FRead( nH, @cBuffer, 500 ) ? cbuffer ENDIF FClose( nH )" }, { "src": "harbour/core · doc/en/file.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/file.txt", "title": "FWrite()()", "text": "FWrite() - Writes characters to a file.\nSintaxis: FWrite( , , [] ) --> nBytesWritten\nThis function writes the contents of to the file designated by its file handle . If used, is the number of bytes in to write. The returned value is the number of bytes successfully written to the file. If the returned value is 0, an error has occurred (unless this is intended). A successful write occurs when the number returned by FWrite() is equal to either `Len( cBuffer )` or <\nEjemplo: nHandle := FCreate( \"test.txt\" ) FOR x := 1 TO 10 FWrite( nHandle, hb_ntos( x ) ) NEXT FClose( nHandle )" }, { "src": "harbour/core · doc/en/file.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/file.txt", "title": "FError()()", "text": "FError() - Reports the error status of low-level file functions\nSintaxis: FError() --> nErrorCode\nAfter every low-level file function, this function will return a value that provides additional information on the status of the last low-level file function's performance. If the FError() function returns a 0, no error was detected. Below is a table of possibles values returned by the FError() function.\nEjemplo: IF ( nHandle := FCreate( \"test.txt\" ) ) == F_ERROR ? \"Cannot create file, OS error\", FError() ENDIF" }, { "src": "harbour/core · doc/en/file.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/file.txt", "title": "FClose()()", "text": "FClose() - Closes an open file\nSintaxis: FClose( ) --> lSuccess\nThis function closes an open file with a file handle of and writes the associated buffers to the disk. The value is derived from the FCreate() or FOpen() function.\nEjemplo: #include \"fileio.ch\" nHandle := FOpen( \"test.txt\" ) ? FSeek( nHandle, 0, FS_END ) FClose( nHandle )" }, { "src": "harbour/core · doc/en/hashfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hashfunc.txt", "title": "hb_Hash()()", "text": "hb_Hash() - Returns a hash table\nSintaxis: hb_Hash( [ , ], [ , ], ... ) -> hTable\n$EXAMPLES$\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/hashfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hashfunc.txt", "title": "hb_HHasKey()()", "text": "hb_HHasKey() - Determines whether a hash table has an entry with a give key\nSintaxis: hb_HHasKey( , ) -> lExists\n$EXAMPLES$\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/hashfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hashfunc.txt", "title": "hb_HPos()()", "text": "hb_HPos() - Locates the index of a key within a hash table\nSintaxis: hb_HPos( , ) -> nPosition\n$EXAMPLES$\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/hashfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hashfunc.txt", "title": "hb_HGet()()", "text": "hb_HGet() - Returns a hash value\nSintaxis: hb_HGet( , ) -> \n$EXAMPLES$\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/objfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/objfunc.txt", "title": "__objHasData()()", "text": "__objHasData() - Determine whether a symbol exist in object as VAR\nSintaxis: __objHasData( , ) --> lExist\n__objHasData() is a low-level class support function that let you find out if a symbol is an instance variable in a given object.\nEjemplo: LOCAL oB := TBrowseNew( 0, 0, 24, 79 ) ? __objHasData( oB, \"nLeft\" ) // --> .T. ? __objHasData( oB, \"lBugFree\" ) // --> .F. ? __objHasData( oB, \"Left\" ) // --> .F. since this is a " }, { "src": "harbour/core · doc/en/objfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/objfunc.txt", "title": "__objHasMethod()()", "text": "__objHasMethod() - Determine whether a symbol exist in object as METHOD\nSintaxis: __objHasMethod( , ) --> lExist\n__objHasMethod() is a low-level class support function that let you find out if a symbol is a class function in a given object.\nEjemplo: LOCAL oB := TBrowseNew( 0, 0, 24, 79 ) ? __objHasMethod( oB, \"nLeft\" ) // --> .F. since this is a VAR ? __objHasMethod( oB, \"FixBugs\" ) // --> .F. ? __objHasMethod( oB, \"Left\" ) //" }, { "src": "harbour/core · doc/en/objfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/objfunc.txt", "title": "__objGetMsgList()()", "text": "__objGetMsgList() - Return names of all VAR or METHOD for a given object\nSintaxis: __objGetMsgList( , [], [nClassType] ) --> aNames\n__objGetMsgList() is a low-level class support function that let you find all instance variable or method names for a given object. If specified, the following table shows the values for that allow you to distinguish between VAR and CLASS VAR:
hboo.ch Meaning HB_MSGLISTALL All types HB_MSGLISTCLASS CLASS VAR only HB_MSGLISTPURE VAR only
VAR are instance variable usable within each object\nEjemplo: #include \"hboo.ch\" // show information about TBrowse class LOCAL oB := TBrowseNew( 0, 0, 24, 79 ), tmp FOR EACH tmp IN __objGetMsgList( oB, .T. ) ? \"VAR name:\", tmp NEXT FOR EACH t" }, { "src": "harbour/core · doc/en/objfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/objfunc.txt", "title": "__objGetMethodList()()", "text": "__objGetMethodList() - Return names of all METHOD for a given object\nSintaxis: __objGetMethodList( ) --> aMethodNames\n__objGetMethodList() is a low-level class support function that let you find all class functions names for a given object. It is equivalent to `__objGetMsgList( oObject, .F. )`.\nEjemplo: // show information about TBrowse class LOCAL oB := TBrowseNew( 0, 0, 24, 79 ), tmp FOR EACH tmp IN __objGetMethodList( oB ) ? \"METHOD name:\", tmp NEXT" }, { "src": "harbour/core · doc/en/objfunc.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/objfunc.txt", "title": "__objGetValueList()()", "text": "__objGetValueList() - Return an array of VAR names and values for a given object\nSintaxis: __objGetValueList( , [] ) --> aData\n__objGetValueList() is a low-level class support function that return an array with VAR names and value, each array element is a pair of: `aData[ i ][ HB_OO_DATA_SYMBOL ]` contain the symbol name `aData[ i ][ HB_OO_DATA_VALUE ]` contain the value of VAR\nEjemplo: // FIXME // show information about TBrowse class #include \"hboo.ch\" LOCAL oB := TBrowseNew( 0, 0, 24, 79 ), tmp FOR EACH tmp IN __objGetValueList( oB ) ? ; \"VAR name:\", tmp[ HB_OO_" }, { "src": "harbour/core · doc/en/macro.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/macro.txt", "title": "hb_SetMacro()()", "text": "hb_SetMacro() - Enable/disable the macro compiler runtime features.\nSintaxis: hb_SetMacro( , [] ) --> lOldSetting\nThis function enables or disables some features of the macro compiler. The Harbour is extending the macro features compared to an original set available in CA-Cl*pper. Enabling/disabling some of them allows to keep strict CA-Cl*pper compatibility. Available features are: `HB_SM_HARBOUR` - enables Harbour extensions: operators: `++`, `--`, `+=`, `-=`, `*=`, `/=`, `^=` objects: assignments to an instance variable `HB_S\nEjemplo: #include \"hbmacro.ch\" INIT PROCEDURE IWANTCLIPPER() ? hb_SetMacro( HB_SM_HARBOUR, .F. ) ? hb_SetMacro( HB_SM_XBASE, .F. ) RETURN" }, { "src": "harbour/core · doc/en/errsys.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/errsys.txt", "title": "ErrorSys()()", "text": "ErrorSys() - Install default error handler\nSintaxis: ErrorSys() --> NIL\nErrorSys() is called upon startup by Harbour and installs the default error handler. Normally you should not call this function directly, instead use ErrorBlock() to install your own error handler." }, { "src": "harbour/core · doc/en/evalhb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/evalhb.txt", "title": "Eval()()", "text": "Eval() - Evaluate a code block\nSintaxis: Eval( [, [,...] ] ) --> xExpression\nThis function evaluates the code bloc expressed as and returns its evaluated value. If their are multiple expressions within the code block, the last expression will be value of this function. If the code block requires parameters to be passed to it, they are specified in the parameter list and following. Each parameter is separated by a comma within the expression list.\nEjemplo: LOCAL bBlock := {|| NIL } ? Eval( 1 ) ? Eval( @bBlock ) ? Eval( {| p1 | p1 }, \"A\", \"B\" ) ? Eval( {| p1, p2 | p1 + p2 }, \"A\", \"B\" ) ? Eval( {| p1, p2, p3 | p1 }, \"A\", \"B\" )" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "CLASS()", "text": "CLASS - Define a Class for Object Oriented Programming\nSintaxis: [CREATE] CLASS [ [, ] ] [STATIC]\nCLASS creates a class from which you can create objects. The CLASS command begins the class specification, in which the VAR elements (also known as instance variables) and METHODS of the class are named. The following scoping commands may also appear. They control the default scope of VAR and METHOD commands that follow them. EXPORTED: VISIBLE: HIDDEN: PROTECTED: The class specification ends with the\nEjemplo: #include \"hbclass.ch\" CREATE CLASS TBColumn VAR Block // Code block to retrieve data for the column VAR Cargo // User-definable variable VAR ColorBlock // Code block that determine" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "VAR()", "text": "VAR - Alternate syntax for VAR: instance variable for the objects.\nSintaxis: VAR [, ] [ AS ] [ INIT ] [[EXPORTED | VISIBLE] | [PROTECTED] | [HIDDEN]] [READONLY | RO]\nVAR elements can also be thought of as the \"properties\" of an object. They can be of any data type, including codeblock. Once an object has been created, the VAR elements are referenced with the colon `:` as in `MyObject:Heading := \"Last name\"`. Usually a class also defines methods to manipulate the VAR. You can use the `AS ` clause to enforce that the VAR is maintained as a certain type. Otherwise it will take\nEjemplo: #include \"hbclass.ch\" CREATE CLASS TBColumn VAR Block // Code block to retrieve data for the column VAR Cargo // User-definable variable VAR ColorBlock // Code block that determine" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "CLASS VAR()", "text": "CLASS VAR - Define a CLASS VAR variable for a class (NOT for an Object!)\nSintaxis: CLASS VAR [, ] [ AS ] [ INIT ]\n`CLASS VAR` variables can also be thought of as the \"properties\" of an entire class. Each `CLASS VAR` exists only once, no matter how many objects are created. A common usage is for a counter that is incremented whenever an object is created and decremented when one is destroyed, thus monitoring the number of objects in existence for this class. You can use the `AS ` clause to enforce that the `CLASS VAR` is ma\nEjemplo: #include \"hbclass.ch\" CREATE CLASS TWindow VAR hWnd, nOldProc CLASS VAR lRegistered AS LOGICAL ENDCLASS" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "METHOD()", "text": "METHOD - Declare a METHOD for a class in the class header\nSintaxis: METHOD ( [] ) [CONSTRUCTOR] METHOD ( [] ) INLINE METHOD ( [] ) BLOCK METHOD ( [] ) EXTERN ( [] ) METHOD ( [] ) SETGET METHOD ( [] ) VIRTUAL METHOD ( [] ) OPERATOR METHOD ( [] ) CLASS \nMethods are \"class functions\" which do the work of the class. All methods must be defined in the class header between the CLASS and ENDCLASS commands. If the body of a method is not fully defined here, the full body is written below the ENDCLASS command using this syntax: METHOD ( [] ) CLASS Methods can reference the current object with the keyword `Self:` or its shorthand version \nEjemplo: // FIXME #include \"hbclass.ch\" CREATE CLASS TWindow VAR hWnd, nOldProc METHOD New() CONSTRUCTOR METHOD Capture() INLINE SetCapture( ::hWnd ) METHOD End() BLOCK {| Self, lEnd | iif(" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "MESSAGE()", "text": "MESSAGE - Route a method call to another Method\nSintaxis: MESSAGE METHOD ( [] ) MESSAGE () METHOD ( [] )\nThe MESSAGE command is a seldom-used feature that lets you re-route a call to a method with a different name. This can be necessary if a method name conflicts with a public function that needs to be called from within the class methods. For example, your app may have a public function called BeginPaint() that is used in painting windows. It would also be natural to have a Window class method called `:BeginPaint()` th\nEjemplo: // FIXME #include \"hbclass.ch\" CREATE CLASS TWindow VAR hWnd, nOldProc METHOD New() CONSTRUCTOR MESSAGE BeginPaint METHOD xBeginPaint() ENDCLASS" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "ERROR HANDLER()", "text": "ERROR HANDLER - Designate a method as an error handler for the class\nSintaxis: ERROR HANDLER ( [] )\n`ERROR HANDLER` names the method that should handle errors for the class being defined.\nEjemplo: #include \"hbclass.ch\" CREATE CLASS TWindow ERROR HANDLER MyErrHandler() ENDCLASS METHOD MyErrHandler() CLASS TWindow RETURN Self" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "ON ERROR()", "text": "ON ERROR - Designate a method as an error handler for the class\nSintaxis: ON ERROR ( [] )\n`ON ERROR` is a synonym for `ERROR HANDLER`. It names the method that should handle errors for the class being defined.\nEjemplo: #include \"hbclass.ch\" CREATE CLASS TWindow ON ERROR MyErrHandler() ENDCLASS METHOD MyErrHandler() CLASS TWindow RETURN Self" }, { "src": "harbour/core · doc/en/command.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/command.txt", "title": "ENDCLASS()", "text": "ENDCLASS - End the declaration of a class.\nSintaxis: ENDCLASS\nENDCLASS marks the end of a class declaration. It is usually followed by the class methods that are not INLINE.\nEjemplo: #include \"hbclass.ch\" CREATE CLASS TWindow VAR hWnd, nOldProc ENDCLASS" }, { "src": "harbour/core · doc/en/var.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/var.txt", "title": "__mvPublic()()", "text": "__mvPublic() - This function creates a PUBLIC variable\nSintaxis: __mvPublic( )\nThis function can be called either by the Harbour compiler or by user. The compiler always passes the item of HB_IT_SYMBOL type that stores the name of variable. If a variable with the same name exists already then the new variable is not created - the previous value remains unchanged. If it is first variable with this name then the variable is initialized with .T. value." }, { "src": "harbour/core · doc/en/var.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/var.txt", "title": "__mvPrivate()()", "text": "__mvPrivate() - This function creates a PRIVATE variable\nSintaxis: __mvPrivate( )\nThis function can be called either by the Harbour compiler or by user. The compiler always passes the item of HB_IT_SYMBOL type that stores the name of variable. If a variable with the same name exists already then the value of old variable is hidden until the new variable is released. The new variable is always initialized to NIL value." }, { "src": "harbour/core · doc/en/var.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/var.txt", "title": "__mvXRelease()()", "text": "__mvXRelease() - This function releases value stored in PRIVATE or PUBLIC variable\nSintaxis: __mvXRelease( )\nThis function releases values stored in memory variable. It shouldn't be called directly, rather it should be placed into RELEASE command. If the released variable is a PRIVATE variable then previously hidden variable with the same name becomes visible after exit from the procedure where released variable was created. If you access the released variable in the same function/procedure where it was created the the NIL \nEjemplo: MEMVAR mPrivate PROCEDURE Main() PRIVATE mPrivate := \"PRIVATE from Main()\" ? mPrivate // --> PRIVATE from Main() Test() ? mPrivate // --> PRIVATE from Main() RETURN STATIC PROCEDUR" }, { "src": "harbour/core · doc/en/var.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/var.txt", "title": "__mvRelease()()", "text": "__mvRelease() - This function releases PRIVATE variables\nSintaxis: __mvRelease( , )\nThis function releases values stored in memory variables. It shouldn't be called directly, it should be placed into `RELEASE ALL` command. If the released variable is a PRIVATE variable then previously hidden variable with the same name becomes visible after exit from the procedure where released variable was created. If you access the released variable in the same function/procedure where it was created the the NIL " }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "__SetCentury()()", "text": "__SetCentury() - Set the Current Century\nSintaxis: __SetCentury([ | ] ) --> lPreviousValue\n" }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "Set()()", "text": "Set() - Changes or evaluated environmental settings\nSintaxis: Set( [, [, ] ] ) --> xPreviousSetting\n" }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "__SetFunction()()", "text": "__SetFunction() - Assign a character string to a function key\nSintaxis: __SetFunction( , [] ) --> NIL\n__SetFunction() assign a character string with a function key, when this function key is pressed, the keyboard is stuffed with this character string. __SetFunction() has the effect of clearing any SetKey() previously set to the same function number and vice versa. nFunctionKey Key to be set 1 .. 12 .. 13 .. 20 .. 21 .. 30 .. 31 .. 40 .. \nEjemplo: #include \"inkey.ch\" LOCAL cTest, GetList := {} // Associate with a string __SetFunction( 1, \"I Am Lazy\" + Chr( K_ENTER ) ) CLS cTest := Space( 20 ) @ 10, 0 SAY \"type something" }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "SET FUNCTION()", "text": "SET FUNCTION - Assign a character string to a function key\nSintaxis: SET FUNCTION TO []\nSet Function assign a character string with a function key, when this function key is pressed, the keyboard is stuffed with this character string. Set Function has the effect of clearing any SetKey() previously set to the same function number and vice versa.
nFunctionKey Key to be set 1 .. 12 .. 13 .. 20 .. 21 .. 30 .. 31 .. 40 .. with a string SET FUNCTION 1 TO \"I Am Lazy\" + Chr( K_ENTER ) CLS cTest := Space( 20 ) @ 10, 0 SAY \"type something o" }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "SetKey()()", "text": "SetKey() - Assign an action block to a key\nSintaxis: SetKey( [, [, ] ] )\nThe SetKey() function returns the current code-block assigned to a key when called with only the key value. If the action block (and optionally the condition block) are passed, the current block is returned, and the new code block and condition block are stored. A group of keys may be assigned the same code block/condition block by using an array of key values in place on the first parameter.\nEjemplo: #include \"getexit.ch\" #include \"inkey.ch\" LOCAL bOldF10 := SetKey( K_F10, {|| Yahoo() } ) LOCAL bBlock // some other processing ... SetKey( K_F10, bOldF10 ) // some other processin" }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "hb_SetKeyGet()()", "text": "hb_SetKeyGet() - Determine a set-key code block and condition-block\nSintaxis: hb_SetKeyGet( [, ] )\nThe hb_SetKeyGet() function returns the current code-block assigned to a key, and optionally assigns the condition-block to the return-parameter\nEjemplo: #include \"inkey.ch\" LOCAL bOldF10, bOldF10Cond bOldF10 := hb_SetKeyGet( K_F10, @bOldF10Cond ) // some other processing ... SetKey( K_F10, bOldF10, bOldF10Cond )" }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "hb_SetKeySave()()", "text": "hb_SetKeySave() - Returns a copy of internal set-key list, optionally overwriting\nSintaxis: hb_SetKeySave( [ ] )\nhb_SetKeySave() is designed to act like the Set() function which returns the current state of an environment setting, and optionally assigning a new value. In this case, the \"environment setting\" is the internal set-key list, and the optional new value is either a value returned from a previous call to hb_SetKeySave() - to restore that list, or the value of NIL to clear the current list.\nEjemplo: LOCAL aKeys := hb_SetKeySave( NIL ) // removes all current set=keys // some other processing ... hb_SetKeySave( aKeys )" }, { "src": "harbour/core · doc/en/set.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/set.txt", "title": "hb_SetKeyCheck()()", "text": "hb_SetKeyCheck() - Implements common hot-key activation code\nSintaxis: hb_SetKeyCheck( [, ][, ][, ] )\nhb_SetKeyCheck() is intended as a common interface to the SetKey() functionality for such functions as AChoice(), dbEdit(), MemoEdit(), ACCEPT, INPUT, READ, and WAIT\nEjemplo: // FIXME #include \"inkey.ch\" // within ReadModal() IF hb_SetKeyCheck( K_ALT_X, GetActive() ) // some other processing ... ENDIF // within TBrowse handler CASE hb_SetKeyCheck( nInke" }, { "src": "harbour/core · doc/en/rdddb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/rdddb.txt", "title": "dbEval()()", "text": "dbEval() - Performs a code block operation on the current Database\nSintaxis: dbEval( , [], [], [], [], [] ) --> NIL\nPerforms a code block operation on the current Database\nEjemplo: LOCAL nCount USE test dbGoto( 4 ) ? RecNo() COUNT TO nCount NEXT 10 ? RecNo(), nCount COUNT TO nCount ? RecNo(), nCount" }, { "src": "harbour/core · doc/en/rdddb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/rdddb.txt", "title": "Dbf()()", "text": "Dbf() - Alias name of a work area\nSintaxis: Dbf() --> cWorkArea\nThis function returns the same alias name of the currently selected work area.\nEjemplo: USE test SELECT 0 ? iif( Dbf() == \"\", \"No Name\", Dbf() ) ? test->( Dbf() ) ? Alias( 1 )" }, { "src": "harbour/core · doc/en/rdddb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/rdddb.txt", "title": "dbAppend()()", "text": "dbAppend() - Appends a new record to a database file.\nSintaxis: dbAppend( [] ) --> lSuccess\nThis function add a new record to the end of the database in the selected or aliased work area. All fields in that database will be given empty data values - character fields will be filled with blank spaces, date fields with hb_SToD(), numeric fields with 0, logical fields with .F., and memo fields with NULL bytes. The header of the database is not updated until the record is flushed from the buffer and the contents\nEjemplo: LOCAL cName := \"Harbour\", nAge := 15 USE test test->( dbAppend() ) test->first := cName test->age := nAge" }, { "src": "harbour/core · doc/en/rdddb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/rdddb.txt", "title": "dbClearFilter()()", "text": "dbClearFilter() - Clears the current filter condition in a work area\nSintaxis: dbClearFilter() --> NIL\nThis function clears any active filter conduction for the current or selected work area.\nEjemplo: USE test SET FILTER TO hb_LeftEq( test->first, \"An\" ) dbGoTop() dbEval( {|| QOut( test->first ) } ) dbClearFilter()" }, { "src": "harbour/core · doc/en/rdddb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/rdddb.txt", "title": "dbCloseAll()()", "text": "dbCloseAll() - Close all open files in all work areas.\nSintaxis: dbCloseAll() --> NIL\nThis function close all open databases and all associated indexes. In addition, it closes all format files and moves the work area pointer to the first position\nEjemplo: USE test NEW dbEdit() USE test1 NEW dbEdit() dbCloseAll()" }, { "src": "harbour/core · doc/en/rdddb.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/rdddb.txt", "title": "dbCloseArea()()", "text": "dbCloseArea() - Close a database file in a work area.\nSintaxis: dbCloseArea()\nThis function will close any database open in the selected or aliased work area.\nEjemplo: USE test dbEdit() test->( dbCloseArea() )" }, { "src": "harbour/core · doc/en/dbstrux.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/dbstrux.txt", "title": "__dbCopyStruct()()", "text": "__dbCopyStruct() - Create a new database based on current database structure\nSintaxis: __dbCopyStruct( , [] )\n__dbCopyStruct() create a new empty database file with a structure that is based on the currently open database in this work-area. If is empty, the newly created file would have the same structure as the currently open database. Else, the new file would contain only fields that exactly match . __dbCopyStruct() can be use to create a sub-set of the currently open database, based on a given fie\nEjemplo: // Create a new file that contain the same structure USE test __dbCopyStruct( \"mycopy.dbf\" ) // Create a new file that contain part of the original structure LOCAL aList USE test a" }, { "src": "harbour/core · doc/en/dbstrux.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/dbstrux.txt", "title": "COPY STRUCTURE()", "text": "COPY STRUCTURE - Create a new database based on current database structure\nSintaxis: COPY STRUCTURE TO [FIELDS ]\n`COPY STRUCTURE` create a new empty database file with a structure that is based on the currently open database in this work-area. `COPY STRUCTURE` can be use to create a sub-set of the currently open database, based on a given field list. `COPY STRUCTURE` command is preprocessed into __dbCopyStruct() function during compile time.\nEjemplo: // Create a new file that contains the same structure USE test COPY STRUCTURE TO MyCopy // Create a new file that contains part of the original structure USE test COPY STRUCTURE TO" }, { "src": "harbour/core · doc/en/dbstrux.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/dbstrux.txt", "title": "__dbCopyXStruct()()", "text": "__dbCopyXStruct() - Copy current database structure into a definition file\nSintaxis: __dbCopyXStruct( ) --> lSuccess\n__dbCopyXStruct() create a new database named with a pre-defined structure (also called \"structure extended file\"):
Field name Type Length Decimals FIELD_NAME C 10 0 FIELD_TYPE C 1 0 FIELD_LEN N 3 0 FIELD_DEC N 3 0
Each record in the new file contains information about one field in the original file. `CREATE FROM` could be used to create a database from the structure extended file. For pr\nEjemplo: // Open a database, then copy its structure to a new file, // Open the new file and list all its records USE test __dbCopyXStruct( \"teststru\" ) USE teststru LIST" }, { "src": "harbour/core · doc/en/dbstrux.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/dbstrux.txt", "title": "COPY STRUCTURE EXTENDED()", "text": "COPY STRUCTURE EXTENDED - Copy current database structure into a definition file\nSintaxis: COPY STRUCTURE EXTENDED TO \n`COPY STRUCTURE EXTENDED` create a new database named with a pre-defined structure (also called \"structure extended file\"): Field name Type Length Decimals FIELD_NAME C 10 0 FIELD_TYPE C 1 0 FIELD_LEN N 3 0 FIELD_DEC N 3 0
Each record in the new file contains information about one field in the original file. `CREATE FROM` could be used to create a database from the structure extended file\nEjemplo: // Open a database, then copy its structure to a new file, // Open the new file and list all its records USE test COPY STRUCTURE EXTENDED TO teststru USE teststru LIST" }, { "src": "harbour/core · doc/en/dbstrux.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/dbstrux.txt", "title": "__dbCreate()()", "text": "__dbCreate() - Create structure extended file or use one to create new file\nSintaxis: __dbCreate( , [], [], [], [] ) --> lUsed\n__dbCreate() works in two modes depending on the value of : 1) If is empty or not specified a new empty structure extended file with the name is created and then opened in the current work-area ( is ignored). The new file has the following structure: Field name Type Length Decimals FIELD_NAME C 10 0 FIELD_TYPE C 1 0 FIELD_LEN N 3 0 FIELD_DEC N 3 0
The C\nEjemplo: // CREATE a new structure extended file, append some records and // then CREATE FROM this file a new database file __dbCreate( \"template\" ) dbAppend() FIELD->FIELD_NAME := \"CHANNEL" }, { "src": "harbour/core · doc/en/menu.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/menu.txt", "title": "AChoice()()", "text": "AChoice() - Allows selection of an element from an array\nSintaxis: AChoice( , , , , , [ | ], [ | ], [], [] ) --> nPosition\nAllows selection of an element from an array. Please see standard CA-Cl*pper documentation for AChoice() for additional detail.\nEjemplo: LOCAL aItems := { \"One\", \"Two\", \"Three\" } LOCAL nChoice := AChoice( 10, 10, 20, 20, aItems ) IF nChoice == 0 ? \"You did not choose an item\" ELSE ? ; \"You chose element\", hb_ntos( n" }, { "src": "harbour/core · doc/en/menu.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/menu.txt", "title": "__AtPrompt()()", "text": "__AtPrompt() - Display a menu item on screen and define a message\nSintaxis: __AtPrompt( , , , [] ) --> .F.\nWith __AtPrompt() you define and display a menu item, each call to __AtPrompt() add another item to the menu, to start the menu itself you should call the __MenuTo() function (`MENU TO` command). You can define any row and column combination and they will be displayed at the order of definition. After each call to __AtPrompt(), the cursor is placed one column to the right of the last text displayed, and Row() and Col\nEjemplo: LOCAL nChoice // display a two line menu with status line at the bottom // let the user select favorite day SET MESSAGE TO 24 CENTER @ 10, 2 PROMPT \"Sunday\" MESSAGE \"This is the 1s" }, { "src": "harbour/core · doc/en/menu.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/menu.txt", "title": "@...PROMPT()", "text": "@...PROMPT - Display a menu item on screen and define a message\nSintaxis: @ , PROMPT [MESSAGE ]\nWith `@...PROMPT` you define and display a menu item, each call to `@...PROMPT` add another item to the menu, to start the menu itself you should call the __MenuTo() function (`MENU TO` command). You can define any row and column combination and they will be displayed at the order of definition. After each call to `@...PROMPT`, the cursor is placed one column to the right of the last text displayed, and Row() and Col\nEjemplo: LOCAL nChoice // display a two line menu with status line at the bottom // let the user select favorite day SET MESSAGE TO 24 CENTER @ 10, 2 PROMPT \"Sunday\" MESSAGE \"This is the 1s" }, { "src": "harbour/core · doc/en/menu.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/menu.txt", "title": "__MenuTo()()", "text": "__MenuTo() - Invoked a menu defined by set of `@...PROMPT`\nSintaxis: __MenuTo( , ) --> nChoice\n__MenuTo() invoked the menu define by previous __AtPrompt() call and display a highlight bar that the user can move to select an option from the menu. If does not exist or not visible, a PRIVATE variable named is created and hold the current menu selection. If there is a variable named , its value is used to select the first highlighted item. Menu prompts and messages are displayed \nEjemplo: LOCAL nChoice // display menu item on each screen corner and let user select one CLS SET MESSAGE TO MaxRow() / 2 CENTER SET WRAP ON @ 0 , 0 PROMPT \"1. Upper left\" MESSAGE \" One \" @" }, { "src": "harbour/core · doc/en/terminal.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/terminal.txt", "title": "__XSaveScreen()()", "text": "__XSaveScreen() - Save whole screen image and coordinate to an internal buffer\nSintaxis: __XSaveScreen()\n__XSaveScreen() saves the image of the whole screen into an internal buffer, it also save current cursor position. The information could later be restored by __XRestScreen(). Each call to __XSaveScreen() overwrite the internal buffer. `SAVE SCREEN` command is preprocessed into __XSaveScreen() function during compile time. Note that `SAVE SCREEN TO` is preprocessed into SaveScreen() function. __XSaveScreen() is a comp\nEjemplo: // save the screen, display list of files than restore the screen SAVE SCREEN DIR *.* RESTORE SCREEN" }, { "src": "harbour/core · doc/en/terminal.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/terminal.txt", "title": "SAVE SCREEN()", "text": "SAVE SCREEN - Save whole screen image and coordinate to an internal buffer\nSintaxis: SAVE SCREEN\n`SAVE SCREEN` saves the image of the whole screen into an internal buffer, it also save current cursor position. The information could later be restored by `RESTORE SCREEN`. Each call to `SAVE SCREEN` overwrite the internal buffer. `SAVE SCREEN` command is preprocessed into __XSaveScreen() function during compile time. Note that `SAVE SCREEN TO` is preprocessed into SaveScreen() function.\nEjemplo: // save the screen, display list of files than restore the screen SAVE SCREEN DIR *.* RESTORE SCREEN" }, { "src": "harbour/core · doc/en/terminal.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/terminal.txt", "title": "__XRestScreen()()", "text": "__XRestScreen() - Restore screen image and coordinate from an internal buffer\nSintaxis: __XRestScreen()\n__XRestScreen() restores saved image of the whole screen from an internal buffer that was saved by __XSaveScreen(), it also restore cursor position. After a call to __XRestScreen() the internal buffer is cleared. `RESTORE SCREEN` command is preprocessed into __XRestScreen() function during compile time. Note that `RESTORE SCREEN FROM` is preprocessed into RestScreen() function. __XRestScreen() is a compatibility func\nEjemplo: // save the screen, display list of files than restore the screen SAVE SCREEN DIR *.* RESTORE SCREEN" }, { "src": "harbour/core · doc/en/terminal.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/terminal.txt", "title": "RESTORE SCREEN()", "text": "RESTORE SCREEN - Restore screen image and coordinate from an internal buffer\nSintaxis: RESTORE SCREEN\n`RESTORE SCREEN` restores saved image of the whole screen from an internal buffer that was saved by `SAVE SCREEN`, it also restore cursor position. After a call to 'RESTORE SCREEN` the internal buffer is cleared. `RESTORE SCREEN` command is preprocessed into __XRestScreen() function during compile time. Note that `RESTORE SCREEN FROM` is preprocessed into RestScreen() function.\nEjemplo: // save the screen, display list of files than restore the screen SAVE SCREEN DIR *.* RESTORE SCREEN" }, { "src": "harbour/core · doc/en/hbinet.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hbinet.txt", "title": "hb_inetInit()()", "text": "hb_inetInit() - Activate Harbour INET support\nSintaxis: hb_inetInit() --> lResult\nActivates inet support; mainly used for winsock start up at the moment, but could be used in the future for many other purpose. Put it at the beginning of every program using INET functions.\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/hbinet.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hbinet.txt", "title": "hb_inetCleanup()()", "text": "hb_inetCleanup() - Terminate Harbour INET support\nSintaxis: hb_inetCleanup()\nCloses inet support; mainly used for Windows. Put it at the end of any program using Inet functions, just before the program exits.\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/hbinet.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hbinet.txt", "title": "hb_inetCreate()()", "text": "hb_inetCreate() - Create an INET socket\nSintaxis: hb_inetCreate( [ ] ) --> \nCreates the raw data of the socket, that can be passed to a asynchronous connection function (hb_inetConnect() or hb_inetConnectIP()). This will prevent the connection function from allocating some data that could be never used in certain cases, i.e. an asynchronously detected timeout.\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/hbinet.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hbinet.txt", "title": "hb_inetClose()()", "text": "hb_inetClose() - Close an INET socket\nSintaxis: hb_inetClose( ) --> nResult\nCloses the socket, notifying both ends of the communication pipe that the connection is over. If you have threads waiting for data to be read from this socket, this method will make them stop waiting and return an error (socket closed) to their callers. The method does not destroy the socket, which can be used by subordinate threads to check that the socket is closed, and so they should stop as soon as they can. Don'\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · doc/en/hbinet.txt", "url": "https://github.com/harbour/core/blob/master/doc/en/hbinet.txt", "title": "hb_inetFD()()", "text": "hb_inetFD() - ?\nSintaxis: hb_inetFD( [, ] ) --> nResult\n$EXAMPLES$\nEjemplo: $STATUS$ R" }, { "src": "harbour/core · README.md", "url": "https://github.com/harbour/core/blob/master/README.md", "title": "Cómo compilar Harbour (build)", "text": "# How to Build > Before reporting a problem to developers, make sure to read > [Troubleshooting](#troubleshooting) and try the suggestions > you find there. For all platforms you'll need: * Supported ANSI C compiler * GNU Make (3.81 recommended, minimum 3.79 required, see also platform details) * Harbour sources (2.0.0 or upper) ## on Windows hosts (possible cross-build targets: Windows CE, MS-DOS, OS/2, Linux) Platform specific prerequisites: 1. Windows XP or upper system is recommended to build Harbour. 2. Make sure to have your C compiler of choice properly installed in PATH. Refer to your C compiler installation and setup instructions for details. It's recommended to make sure no tools in your PATH belonging to other C compilers are interfering with your setup. It's also highly discouraged to keep multiple copies of the same compiler, or different versions of the same compiler in PATH at the same time. For the list of supported compilers, look up [Supported Platforms and C Compilers](#supported-platforms-and-c-compilers). 3. GNU Make 3.81 or upper is required. A copy of this tool" }, { "src": "harbour/core · README.md", "url": "https://github.com/harbour/core/blob/master/README.md", "title": "Compilar tu propia aplicación Harbour", "text": "# Build Your Own Harbour App For all platforms you'll need two things: * Harbour binaries Either a Harbour binary distribution or a local Harbour build will be okay. If you're reading this text, it's very likely you have one of these already. * Supported ANSI C compiler Your compiler of choice has to be placed in the PATH – and configured appropriately according to instructions. If you use official Harbour binary distribution on Windows, you already have MinGW compiler embedded in the installation, which will automatically be used, so you don't have to make any extra steps here. Use hbmk2 to build your app from source. It's recommended to put it in the PATH (f.e. by using `set PATH=C:\\harbour\\bin;%PATH%` on Windows). See hbmk2 [documentation, with examples](utils/hbmk2/doc/hbmk2.en.md). " }, { "src": "harbour/core · utils/hbmk2/doc/hbmk2.en.md", "url": "https://github.com/harbour/core/blob/master/utils/hbmk2/doc/hbmk2.en.md", "title": "hbmk2: herramienta de build de Harbour", "text": "Syntax: hbmk2 [options] [] Description: hbmk2 is an integrated and portable build tool, making it possible to create various types of executable binaries (executable, dynamic library, static library, Harbour portable binary) out of multiple types of source files (C, C++, Objective-C, Harbour, gettext translations, Windows resources)\\. 'Integrated' means that a single hbmk2 project file can control all or most aspects of the build process\\. 'Portable' means that a single hbmk2 project file can control the build on all supported OS platforms and across all supported C compilers\\. It also aims to cover the majority of build tasks via short and simple project files (options)\\. hbmk2 supports \nOpciones principales: " }, { "src": "harbour/core · doc/xhb-diff.txt", "url": "https://github.com/harbour/core/blob/master/doc/xhb-diff.txt", "title": "Diferencias Harbour vs xHarbour", "text": "This text describes most important differences between Harbour and xHarbour with some references to Clipper and other compatible compilers like Xbase++, CLIP, FlagShip. Many thanks to Pritpal and Viktor for updating this text. I hope that it will be updated in the future also by xHarbour developers, It describes status of both compiler at the end of October 2009: Harbour 2.0.0 beta3 (revision 12788) xHarbour 1.2.1 (revision 6629) Przemek, (Przemyslaw Czerpak, druzus /at/ priv.onet.pl) ### COMPILE TIME SUPPORT FOR MERGING MULTIPLE .PRG MODULES ### ==================================================================== Clipper allows to compile many .prg modules included by @.clp and/or SET PROCEDURE TO ... / DO ... [ WITH ... ] into single output object. In such compilation it supports, separated for each .prg file, file wide declarations when -n switch is used and allows to use more then one static function with the same name if each of them is declared in different .prg modules. This code illustrates such situation: /***** t1. prg *****/ static s := \"t01:s\" static s1 := \"t01:s1\" proc main() ? \"====\" ? s, s1 p1();p2();p3() ? \"====\" do t2 ? \"====\" return proc p1 ; ? \"t01:p1\" static proc p2 ; ? \"t01:p2\" static proc p3 ; ? \"t01:p3\" init proc pi ;" }, { "src": "harbour/core · doc/clipper.txt", "url": "https://github.com/harbour/core/blob/master/doc/clipper.txt", "title": "Compatibilidad con CA-Clipper", "text": "This document attempts to describe the features separating Harbour from CA-Cl*pper. /* TODO: @FunPointer(), and all other Harbour extensions. */ Harbour Macro Compiler ---------------------- The Harbour Macro Compiler offers 2 additional layers of functionality controlled by means of hb_SetMacro()* function, not available in CA-Cl*pper. hb_SetMacro( HB_SM_HARBOUR, .T. ) will enable macro compilation and evaluation of complex expressions not supported by CA-Cl*pper like: - exp++, exp--, var += exp, (exp), etc.. - Nested codeblocks. - Expressions longer then 254 characters. hb_SetMacro( HB_SM_XBASE, .T. ) will enable macro compilation and evaluation of comma separated lists in all contexts where lists are acceptable by CA-Cl*pper*, including: - { &cMacro } // Literal array elements list. - SomeArray[ &cMacro ] // Array index list. - SomeFun( &cMacro ) // Arguments list. - ( &cMacro ) // parenthesized list expression. *CA-Cl*pper only supports list macros within codeblocks context. Both these extra layers are activated by default. * See also -k Compiler switch. INIT/EXIT and startup procedures -------------------------------- In CA-Cl*pper the startup procedure is always the first procedure/function of the main module, even if such symbol is an INIT or EXIT sym" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-9343.html", "title": "Why Some Browses with ADS are slow?", "text": "P (nageswaragunupudi): Many times our friends keep expressing that some of the advanced browses are extremely slow while browsing *LARGE* ADS tables. This phenomenon is observed with tsbrowse, txbrowse and even hernan's browse. In fact the problem is not with the browses. These advanced browses go a step forward in setting up the codeblocks appropriate for the RDD being used. For ADS, by default, these browses use AdsKeyCount() (or similar functions) for the bLogicLen / bKeyCount codeblocks.\n\nThe real problem is in the AdsKeyCount ( also\nR (kokookao2007): hi nageswaragunupudi:\n\n#define ADS_RESPECTFILTERS 1 \n\n#define ADS_IGNOREFILTERS 2 \n\n#define ADS_RESPECTSCOPES 3 \n\n #xcommand SET FILTER TO ; \n\n ; AdsSetAof( ) \n\n #xcommand SET FILTER TO ; \n\n => if ( Empty( <(x)>) ) ; \n\n ; dbClearFilter() ; \n\n ; else ; \n\n ; AdsSetAof( <(x)> ) ; \n\n ; endif \n\nAdsGetRecordCount() ==> TRY AdsKeyCount(,, ADS_RESPECTSCOPES) \n\nAdsKeyNo()==>AdsKeyNo(,, ADS_RESPECTSCOPES) \n\nAdsKeyCount()==>AdsKeyCount(,, ADS_RESPECTSCOPES) \n\nMY BROWSE() work as fast as rdd \"DBFCDX\".\n\nBest Regards\n\nkokoo" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-30266.html", "title": "ADO RDD xHarbour", "text": "P (AHF): Hello,\n\nIs there a stable Rdd for ADO working for basic operations such as replaces, browses, like other rdds?\n\nRegards\n\nAntonio\nR (Antonio Linares): Antonio,\n\nYou don't need a RDD. Please review these easy examples:\n\nhttp://wiki.fivetechsoft.com/doku.php?id=ado_create_database\n\nhttp://wiki.fivetechsoft.com/doku.php?id=ado_import_dbf\n\nhttp://wiki.fivetechsoft.com/doku.php?id=ado_mdi_browse" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-43874.html", "title": "Fwh 23.10 TGet another problem (SOLVED)", "text": "P (Horizon): Hi,\n\nTurkish characters are displayed as question mark in fwh 23.10. when FW_SetUnicode( .F. )\n\nany help?\nR (nageswaragunupudi): Please help me to understand more about Turkish characters.\n\nPlease copy and paste a string of characters with which you are having problems now." }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-28845.html", "title": "List of donations already received to buy EasyReport", "text": "P (Antonio Linares): I will update this list as the donations arrive for EasyReport (we need 6.000 euros to buy it). Come on my friends, this is going to be really great! \n\nActualizaremos esta lista conforme se reciban las donaciones para EasyReport. Venga amigos, esto va a ser grandioso! \n\nThe ones that donate will have priority to get it when it is bought!\n\nLos que donen tendrán prioridad en recibirlo cuando se compre!\n\nKok Joek Hoa (100 euros)\nRüdiger Alich (100 euros)\nFelix Pablo Grande (50 euros)\nTim Stone (100 euros)\nOtto (Atzwan\nR (Antonio Linares): We need the help of all of you, please cooperate and donate whatever amount you can!\n\nNecesitamos la ayuda de todos vosotros, por favor cooperar con la cantidad que podais!\n\nGracias" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-45674.html", "title": "Hablando de un generador de Reportes para FWH", "text": "P (jose_murugosa): Como he visto este tema surgiendo en el foro, quisiera sugerir una posibilidad.\n\nExiste un generador de reportes en C++ bastante interesante, con barcodes, qrcodes y otros, con muchas prestaciones, llamado QtRPT Proyect, es Open Source, y parece funcionar bien.\n\nSería interesante considerar conectarlo con FWH, este generador de reportes tiene una interesante herramienta de diseño de reportes QRPTDesigner, y quizá sea más facil incorporarlo a FWH que un generador desarrollado en otro lenguaje.\n\nSolo es una sugerenci\nR (Antonio Linares): https://forums.fivetechsupport.com/viewtopic.php?p=279517#p279517" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-32657.html", "title": "FWH 16.08 : Built-in MySql/MariaDB functionality (Updated )", "text": "P (nageswaragunupudi): FWH now provides inbuilt connectivity to MariaDB/MySql server without using any 3rd party libs. Works with both MariaDB and MySql servers. The functionality is available with bcc7 xHarour and Harbour, bcc7 64 bit with Harbour and MSVC 32 and 64 bits with Harbour. Yet to test with xhb.com and gcc.\n\nThe application needs to be linked with either libmariadb.lib or libmysql.lib to be used with libmariadb.dll or libmysql.dll. It may be noted that 64 bit versions of the lib and dll are to be used with 64 bit applications\nR (vilian): Mr Rao,\n\nI did not see functions to do Backup/Restore in the list of functions. Is it possible ? In tDolphin this already exist, but i made some modifications to work better. If you want i can send to you." }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-43685.html", "title": "De *.C Para *.Obj en BCC74 no funciona más.", "text": "P (karinha): Maestros, porque esto no funciona más con BCC para xHarbour 7.40? y fwh1905\n\nCode (fw): Select all Collapse\nR (karinha): Enrico, estes dos archivos me genera estos errores:\n\nc:\\TTaskPan>C:\\BCC74\\bin\\bcc32 -c -Ic:\\XHBBCC74\\include;c:\\fwh1905\\include -D__HARBOUR__ -D__FLAT__ c_tthememanager.C \n\nEmbarcadero C++ 7.40 for Win32 Copyright (c) 1993-2018 Embarcadero Technologies, Inc.\n\nc_TThemeManager.c:\n\nWarning W8065 c_TThemeManager.c 282: Call to function 'FontHeight2Pt' with no prototype in function _i_GetSetFont\n\n*** 1 errors in Compile ***\n\nc:\\TTaskPan>C:\\BCC74\\bin\\bcc32 -c -Ic:\\XHBBCC74\\include;c:\\fwh1905\\include -D__HARBOUR__ -D__FLAT__ c_dibbmp.C \n\nEmbarcadero C++ 7.40 for Win32 Copyright (c) 1993-2018 Embarcadero Technologies, Inc.\n\nc_DibBmp.c:\n\nWarning W8012 c_DibBmp.c 488: Comparing signed and unsigned values in function DibB" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-12645.html", "title": "SQLWIN - RDD libre para SQL", "text": "P (Antonio Linares): Comenzamos aqui el desarrollo común de SQLWIN, un RDD libre para SQL.\n\nTodos los que quieran aprender y usar SQL son bienvenidos a unirse al proyecto \n\nhttp://www.fivetechsoft.com/files/sqlwin.zip\n\nEl código de este RDD en desarrollo se distribuye con la misma licencia de Harbour (de momento no incluida en el código). Partimos del código existente del ADORDD pero solo para reusar su estructura y rediseñarlo a fondo.\nR (Antonio Linares): Una nueva version que implementa los valores emulados \"sql_recno\" y \"sql_deleted\", y una primera version de DbGoTop():\n\nwww.fivetechsoft.com/files/sqlwin.zip" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-21723.html", "title": "MyRpt - Diseñador de Reportings - En desarrollo :-)", "text": "P (Carles): Hi,\n\nQuiero presentaros MyRpt.Lib. Una libreria para el diseño de reports.\n\nEl proyecto esta en fase beta, pero ya se puede probar. La idea básica, es que con poco esfuerzo, podamos generar reportings con resultados parecidos a este.\n\nNo pretende competir con ningun generador de reports comercial, pero si pretende algo q pocos pueden hacer y es la de integrarse si queremos a nuestras aplicaciones. En este breve documento describo la idea de como concibo la manera optima para trabjar con FWH. Me gustaria debatir la \nR (ruben Dario): Extraordinario Trabajo... Te pregunto se puede trabajar ADO sin ningun problema, segun veo el ejemplo parece que no hay problema." }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-17113.html", "title": "Choosing SQL database ...", "text": "P (Rimantas): Hi ,\n\nI want to get a small advice in this situation . I can choose MySQL , FireBird and SQLite . MySQL and FireBird I know and alreday tested - they all work pretty good . But I'm paying attenation to SQLite - how good this thing is ? My project will be in network env. - Win2003 server , ~ 12-15 PC users and and ~ 1-2 Gb size database . Program will be one - Fwh + Harbour - which will work with that database . Program of production - it will be using intensive . I read this chapter in SqLite ste : http://www.sqlit\nR (Rimantas): fraxzi wrote:Robust. Stable. Integrated with [x]Harbour. Fast.\n\nAdvantage Database Server.\n\nJust my 2Cents \n\nRegards\n\n And how many cost the \"Robust.Stable\" ADS ? ... Excuse for my irony , maybe it's free versions , bus as I remember , isn't free . I know that this is a good thing , but for limited budget project I'm prefering free DBMS . About 6-7 years ago I played with ADS local server and , remember , that performance was weaky place ... Maybe at this time and local server works good , I don't know . But ADS is working with the sames DBFs + CDXs . If you watched my latest topic in this forum , you will noticed that they concerned about how to insert new lines in xBrowse , a la blank line . The problem conce" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-24180.html", "title": "FiveDBU para 32/64 bits", "text": "P (Antonio Linares): En desarrollo... \n\nFiveDBU.prg\n\nCode (fw): Select all Collapse\nR (Antonio Linares): Implementada la auto edición de registros:\n\nCode (fw): Select all Collapse" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-45297.html", "title": "new Class TDeepSeek in next FWH 24.12", "text": "P (Antonio Linares): Next FWH 24.12 includes Class TDeepSeek\n\nDeepSeek is much cheaper than OpenAI and it offers the same AI quality. \n\nYou have to register in DeepSeek site and get your API key. Then from a cmd window do:\n\nset DEEPSEEK_API_KEY=sk-...\n\nsample of use:\nCode: Select all Collapse\nR (Antonio Linares): Has probado a preguntarle a chatgpt ?\n\nEn estos casos preguntar a varias IAs: chatgpt, claude, copilot, deepseek, es la mejor opción" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-12646.html", "title": "SQLWIN - a free RDD for SQL", "text": "P (Antonio Linares): We start the development of SQLWIN, a free and open source RDD for SQL.\n\nAll of you interested in learning and use SQL are welcome to join this project. You can already download a very early prototype, but that can be already compiled and tested:\n\nwww.fivetechsoft.com/files/sqlwin.zip \n\nThe source code is licenced with the same Harbour licence (not included yet in its code). We start from the ADORDD source code, but just to use its structure, that will be totally redesigned.\n\nPlease visit also the spanish thread wh\nR (Antonio Linares): At this stage we are not making a real connection yet.\n\nWe are focused to translate all the RDD Db...() functions into their equivalent SQL sentences.\n\nOn a next step we will create real connections to the database engines. By now, we are using a \"virtual\" DBF for testing purposes." }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-28843.html", "title": "EasyReport: Tenemos un acuerdo !!! :-)", "text": "P (Antonio Linares): Queridos amigos,\n\nHoy Timm me envió este email:\n\nHola Antonio!\n\nDe acuerdo, preferiría si establecemos una cantidad y 6.000 euros está bien para mi.\n\nAsí que vamos a conseguirlos! \n\nOrganizémoslo de esta forma (si alguno de vosotros tiene una mejor propuesta, por favor hacedmela saber, por aqui ó por email si preferis hablarlo confidencialmente):\n\n1. Mi cuenta de PayPal es: alinares@fivetechsoft.com\n\n2. Para todos vosotros que esteis interesados en conseguir EasyReport + código fuente completo: Me teneis que enviar\nR (Antonio Linares): Lista de donaciones recibidas hasta la fecha (mantendremos un post único con todas las donaciones recibidas para que asi todos veais lo que vamos recibiendo):\n\nviewtopic.php?f=3t=28845\n\n&" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-41671.html", "title": "Build your FWH app using hbmk2.exe and MSVC 32&64", "text": "P (Antonio Linares): Using hbmk2.exe to build our FWH app 32 bits using Microsoft Visual Studio Community 2022:\n\ntest.hbp\n\nCode (fw): Select all Collapse\nR (Antonio Linares): 64 bits version using FWH 64 and MSVC 64 bits:\n\ntest64.hbp\n\nCode (fw): Select all Collapse" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-46131.html", "title": "fwh 25.09 dialog bug[resolved]", "text": "P (ssbbs): A very strange problem.\n\nThe Dialog is wide enough to display the data,\n\nbut it can't display the TGet data?\n\nCode: Select all Collapse\nR (ssbbs): karinha wrote:\nGood morning, are you telling the program to start all GETs on LINE 0 = @ 0, ... ?????\n\nYes!!" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-26747.html", "title": "Comparativa de diseñadores de reportes", "text": "P (Antonio Linares): Me gustaria iniciar una conversación en la que comparemos los actuales diseñadores de reportes mas usados: FastReport, Crystal Reports, ?...\n\ny que hagamos una comparativa de lo mejor y peor que ofrecen.\n\nLa idea es saber exactamente que necesitamos y como tener uno (o completar uno existente, como el de Carles) para que no necesitemos ningún diseñador de reportes externo y que FWH lo incluya\nR (Antonio Linares): Alguien que tenga destreza con alguno de ellos que comente como se hace el reporte mas simple, y visualmente que pasos requiere\n\nGracias!" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-22427.html", "title": "Windows 8 Metro style - A Class TMetro test", "text": "P (Antonio Linares): This is just an early prototype of a Class TMetro to get a little feeling of Windows 8 Metro for our apps \n\nFull source code provided...\n\nmetro.prg\n\nCode (fw): Select all Collapse\nR (Antonio Linares): Using some bitmaps...\n\nmetro.prg\n\nCode (fw): Select all Collapse" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-33286.html", "title": "FWH MySQL/MariaDB native support docs", "text": "P (Antonio Linares): FWH Built-in MySql/MariaDB functionality\n\nviewtopic.php?f=3t=32657\n\nFWH MariaDb/MySql Backup and Restore\n\nviewtopic.php?f=3t=32791\n\nFWH MySql/MariaDB: RowSet object\n\nviewtopic.php?f=3t=32737\n\nFWH Parent Child RowSets (MySql/MariaDB)\n\nviewtopic.php?f=3t=32736\n\nFWH MYSQL/MARIADB Stored Procedures and Functions\n\nviewtopic.php?f=3t=33280\n\n&&&&&\nR (Antonio Linares): Lubin,\n\nLlevamos años manteniendo los mismos precios y eso en si es una muy buena oferta \n\nTenemos que traducir esa documentación. Gracias por el recordatorio" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-5567.html", "title": "Menus tipo office 2003 y XP", "text": "P (Arturo Tamayo Daza): Aqui les dejo las fuentes para crear menus tipo office 2003 y Xp, basado en las fuentes originales de Fivewin\n\nPueden descargar de www.quark-costos.com\n\nFelices fiestas\n\nSaludos\n\nArturo Tamayo Daza\nR (Silvio): This is a good idea but .....\n\nPaco's Menu is the best menu control Xp office \n\nU can set from one to 14 style type menus" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-8496.html", "title": "FWH - New Office 2007 menus !!!", "text": "P (Antonio Linares): We are currently testing and completing the new FWH 7.11 Office 2007 menus. No need to change your source code at all \n\nIf you want to test them and help to fine tune them, please send me an email and specify is you use Harbour or xHarbour. You have to be already a FWH 7.10 user in order to test them.\nR (Antonio Linares): James,\n\nWell, its not that bad. Those bitmaps are automatically painted by Windows, and I guess most users don't use them that way\n\nMany thanks for your feedback" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-26245.html", "title": "bug in FW 13.04 combobox", "text": "P (lucasdebeltran): Hello,\n\nThis code, in previous FW 13.03 showed Lucas on the combobox.\n\nCode (fw): Select all Collapse\nR (Antonio Linares): Lucas,\n\nPlease provide the RC for your example, thanks. I have answered you in that xbrowse thread.\n\nGunther,\n\nYour changes were breaking already working code. I answered you by email" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-5674.html", "title": "Report generator", "text": "P (Nop): hi, i would like know about report generator used by fwh users? whats the best? thanks\nR (R.F.): There are at least 3 options to go\n\n1) EasyReport (www.reportdesigner.info) Written in FiveWin, includes the visual designer along with a LIB that let you print your reports designed in ER.\n\n2) The most common used (I think) Crystal Reports, which is the \"standard\" for visual report designers under Windows, the most of the programming languages use it. FiveWin provides two ways to use Crystal, one usign a TCRPE class and other via ActiveX.\n\n3) You can also use List&Label the european equivalent of Crystal Reports, you can handle from FiveWin using ActiveX also (http://en.combit.net/reporting_tool/page1122.aspx)" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-25706.html", "title": "Tablet and form style for Windows 8 (desktop ver.)", "text": "P (Antonio Martinez): Hi all, especially Otto,\n\nI recently purchased an Asus tablet with Windows 8 desktop version.\n\nHe had thought about making a CRM program for this tablet. I had thought to start doing a form. This had thought of using ScrollDlg class. I've seen that I need the virtual keyboard automatically show when the user is positioned at a Get.\n\nAny hit is welcome.\n\nregards\nR (Antonio Linares): Antonio,\n\nPlease review FWH\\samples\\keybsim.prg as it implements a virtual keyboard" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-32737.html", "title": "FWH: MySql/MariaDB: RowSet object", "text": "P (nageswaragunupudi): Rowset object is similar to RecordSet of ADO, TDatabase for DBF and oQuery of TMySql and TDolphin.\n\nRowSet works more like DBF and RecordSet and differences from oQuery of TMySql and Dolphin are discussed here. \n\nThis documentation includes improvements made after release of 16.05.\n\nCreating RowSet: \n\nOptions\n\n1) oRs := oCn:RowSet( cTable(or)cSql, [lShowError] ) // simple and normal\n\n2) oRs := oCn:RowSet( cTable(or)cSql, NumRows, [lShowError] )\n\n3) oRs := oCn:RowSet( cSql, aParams, [lShowEror] ) //where oCn is the \nR (nageswaragunupudi): Navigation methods and datas:\n\nNavigation behaves similar to DBF and RecordSet than oQuery of other libs.\n\nLastRec() --> Total number of records at the time of reading the rowset\n\nThis number remains constant even after deletion of some records. Behavior similar to DBF. Adding records increases the number.\n\nRecCount()/RecordCount(): Actual number of records. This is equal to LastRe() less number of deleted records. In the present version deleted records are totally removed. (Future plans: To retain the deleted records with facility to restore like in DBF)\n\nRecNo() (or) BookMark: Serial number of the Record at the time of reading the rowset.\n\nThis number uniquely identifies a record and does not change through o" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-45352.html", "title": "dialogo resizable desde recursos?", "text": "P (D.Fernandez): Hola amigos:\n\nEstoy buscando unos ejemplos que habían con REDEFINE Dialog.....bla,bla \n\nque se podían cambiar el tamaño incluyendo los elementos incluidos en el dialog.\n\nEsto ya está pronto? \n\nYa se, estoy medio pesado y perdido, disculpen.\n\nSaludos\n\nRuben Dario Fernandez\nR (D.Fernandez): Gracias Joao, pero no es esto.\n\nIncluso Mr. Rao publicó unos ejemplos con animaciones\n\npero ahora no los encuentro y no se si esta totalmente funcional.\n\nGracias \n\nSaludos.\n\nRuben Dario Fernandez" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-28842.html", "title": "EasyReport: We have a deal !!! :-)", "text": "P (Antonio Linares): Dear friends,\n\nToday Timm sent me this email:\n\nHi Antonio!\n\nAlright, I would prefer if we set an amount and 6000 Euro is fine for me.\n\nSo lets go for it! \n\nLets organize it this way (if someone of you has a better proposal, please let me know it, here or by email if you prefer to talk confidentially):\n\n1. My PayPal account is: alinares@fivetechsoft.com\n\n2. For all of you that are interested to get EasyReport + Full source code: You have to send me a 100 euros donation. Important: you will not receive it until the t\nR (Antonio Linares): Donations list up to date (we will keep this single post with all the received donations so you all see its progress):\n\nviewtopic.php?f=3t=28845\n\n&" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-32263.html", "title": "Windows Toast notifications - second try", "text": "P (Antonio Linares): This is a portion of code required to create a standard Windows Toast notification.\n\nTo build it you must use FWH\\samples\\buildh32.bat toast\n\nHere it is failing in hr = GetActivationFactory( hs, &toastStatics ); so you will get a MessageBox()\n\nAny hint to solve it ? thanks\n\ntoast.prg\n\nCode (fw): Select all Collapse\nR (Antonio Linares): Solved \n\nI continue testing it\n\ntoast.prg\n\nCode (fw): Select all Collapse" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-19204.html", "title": "TDolphin Clase para manejar MySql", "text": "P (Daniel Garcia-Gil): Saludos.\n\nTDolphin, es una clase diseñada para los compiladores de Harbour/xHarbour para el manejo de MySql.\n\nTDolphin esta pensada para reducir lineas de codigo, hacer mejor depuracion y facil manejo del poder de MySql.\n\nNo tiene la intencion de usar o simular a MySql como DBF, pues no queremos perdernos de toda la capacidad de MySql, aunque se pueda encontrar con codigo muy similar a clases que manejan DBFs\n\nSi han usado TMySql les sera mas facil adaptarce a TDolphin, aunque ya por si misma es de muy facil uso.\n\n\nR (Lautaro): Daniel,\n\nPor lo que vi, la idea es la misma de la tmysql, pero estrujando al mysql.\n\nEn el codigo vi que se puede usar el servidor embebido de mysql, ¿ esta operacional esa opcion ?\n\na otra pregunta, el codigo en c usa como base la contrib de harbour o las otras contrib que dan vueltas, ( la de xharbour ).\n\nSaludos \n\nLautaro Moreira" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-31426.html", "title": "Warning: Error detected (LME288)", "text": "P (surGom): Hola estoy tratando de compilar con harbour junio 2015 y bcc7 y me da el siguiente error:\n\nCode (fw): Select all Collapse\nR (Antonio Linares): http://stackoverflow.com/questions/28929516/c-builder-xe7-lme288-error\n\nI found a workaround that seems to work.\n\nIt seems to have something to do with corrupted temporary files. I managed to get it to work again after I did a \"Disk Cleanup\" on my system disk.\n\nI Deleted all files in the list (all checkboxes checked) and also the \"Clean up system files\"\n\nAfter that I could compile and link, even without rebooting. Even the incremental link began to work again!" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-43528.html", "title": "Lost connection to MySQL server during query", "text": "P (vilian): Hi Guys,\n\nSometimes, my customer is getting an error with the message \"Lost connection to MySQL server during query\". Nowaday, i already have an implementation to surround this problem, so i would like this message was not showed. Is it possible ?\nR (nageswaragunupudi): Nowaday, i already have an implementation to surround this problem, \nWhat is your implementation please?\n\nThis message is displayed if and when the connection with the server is lost when the application is trying to access the server.\n\nThis mostly happens due to physical disconnection of cables or loss of internet in case of cloud servers, etc.\n\nThis message is intended to advise the user to restore the physical connection and try the operation again. We considered this important instead of just keeping the application hanging and keeping the user in suspense." }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-34918.html", "title": "Building Harbour 3.4 for BCC outside MSYS", "text": "P (andijahja): Hi All:\n\nAs we all know, Harbour developers are killing BCC support next year. Furthermore, Harbour 3.4, the superset of of original Harbour, does not provide tools to build the compiler without MSYS. Personally, I hate to use MSYS for Harbour creation.\n\nThose, particularly BCC users, who wish to try to build Harbour 3.4, I have made simple tools to create it without MSYS.\n\nFollowings are steps how to build Harbour 3.4 without MSYS:\n\n1. Download/clone the latest source code from https://github.com/vszakats/harbour-\nR (Antonio Linares): Harbour works great using Microsoft Visual Studio\n\nFurther more, Harbour 3.4 is not the official Harbour. It is just a Harbour fork developed by Viktor\n\nThere is no reason to worry at all \n\nTime to consider to migrate to Microsoft Visual Studio" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-23665.html", "title": "Windows Metro UI", "text": "P (Otto): One sometimes forgets the huge base of Windows users, it sometimes seems that Apple Macs are the market leader and Linux clients are running Microsoft close for second place. \n\n The truth is Microsoft has an 85%+ market share.\n\nhttp://www.computerperformance.co.uk/win8/windows-metro-ui.htm\n\nBut the important bit is that this Metro-style interface isn't an app, it's the Windows shell. It's Windows. So get used to it. It's not going away. But it will get better.\nR (Antonio Linares): Dear Otto,\n\nThere are all kind of opinions about Windows 8. I am neutral about it, anyhow its good to keep an open mind about it \n\nhttp://www.zdnet.com/blog/hardware/windows-8-consumer-preview-the-good-the-bad-and-the-ugly/18674\n\nhttp://www.brightsideofnews.com/news/2012/2/27/exclusive-windows-8-launch-in-fourth-quarter-20122c-arm-in-second-quarter-2013.aspx\n\nAccording to some experts, Windows will decrease its market share below 60% in the next two years:\n\nhttp://eliax.com/index.cfm?post_id=9246\n\nThe truth is that still there are lots of Windows computers using XP. In my opinion Windows 7 is much better, but regarding Windows 8 I really don't know what the users reactions will be. I think it has no sense to pr" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-31147.html", "title": "DBF to SQL converter program", "text": "P (pieter): Hello,\n\nI am making a program which reads all the dbf files in a folder, and then each dbf file will have corresponding sql table in a MYSQL database.\n\n1: Choose a SQL database name\n\n2: Choose a folder, to find all dbf's in it.\n\n3: Make a MYSQL database with the name given by step 1.\n\n4: Each dbf file becomes a table in the MYSQL database. each sql table has the name of the dbf file. (So a file customer.dbf becomes customer in MySQL)\n\n5: import the data from each dbf file to the sql tables.\n\nThe code look like this\nR (Antonio Linares): Pieter,\n\nhttp://www.fivetechsoft.com/harbour-docs/harbour-reference-guide.htm#ADir" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-32791.html", "title": "FWH 16.06: MariaDb/MySql Backup and Restore (Updated 16.08)", "text": "P (nageswaragunupudi): (Note: Enhancements and additions in FWH16.08 are noted in Red Color in this post)\n\nFWMariaConnection object provides 3 methods for backup and restore operations. As already mentioned, all features of FWH co-exist with other libraries like TMySql, TDolphin, etc and also ADO. Applications mainly relying on other libs can also use these methods for backup and restore.\n\nFor using these features we need to obtain a new FWH connection and close after use. In case the application is already connected using TMySql or ADO,\nR (nageswaragunupudi): Main purpose of backup/restore is to backup all objects of database with the ability to reconstruct the full database in case of need.\n\nFWH's backup/restore feature is greatly enhanced to meet this requirement fully. \n\nBackup of full database backsup Tables, Views, Triggers, Functions and Procedures. Restoring restores all these objects in proper order making it on par with other professional backup/restore tools.\n\nThis enhancement is available in the next build due for release any time now." }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-29861.html", "title": "Migrando de FWH 32 a FWH 64 - windows.h", "text": "P (Verhoven): Migrando a 64 bits nos encontramos que al intentar compilar un archivo con funciones en C nos dice que no encuentra el archivo de cabecera windows.h\n\nEl error es: wbrwline.c .\\sourceh\\function\\twbrowse\\wbrwline.c(7) : fatal error C1083: No se puede abrir el archivo incluir: 'Windows.h': No such file or directory\n\nEste archivo windows.h es de Borland y como al pasar a 64 bits tenemos que usar el MSVC++ no encuentro cual es el equivalente para MSVC++ para hacer la sustitución.\n\nPaso las líneas de compilación que tení\nR (Antonio Linares): Antes de llamar a cl.exe tienes que llamar a este fichero bat si usas un Windows de 32 bits:\n\ncall \"%ProgramFiles%\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat\"\n\nSi usas un Windows de 64 bits entonces tienes que llamar a este:\n\ncall \"%ProgramFiles(x86)%\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat\"\n\nEso hace que las trayectorias a los ficheros de cabecera de MSVC queden definidos" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-30582.html", "title": "Compilando una rutina de menu", "text": "P (horacio): Colegas, estoy queriendo utilizar una rutina de menus del año 2007. Al compilarlo con harbour correspondiente a la versión FWH 14.12 obtengo varios errores. Me interesa estos menues porque son muy configurables. Pongo aquí la rutina en C que genera el error.\n\nCode (fw): Select all Collapse\nR (horacio): Gracias Carlos, funcionó perfectamente> Ahora tengo el siguiente error en otra de las rutinas en C. Aquí el código\n\nCode (fw): Select all Collapse" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-2874.html", "title": "ways to save report to a file and easily open", "text": "P (ShumingWang): Hi, \n\n One of our customers asked me if fwh app can offer a way to save a report to a file, email it to his customers and his customers can open the file and print it in a easily way. \n\n Now they print out then send a fax to his customer, but fax not 100% reliable.\n\nBest regard!\n\nShuming Wang\nR (RuFer): Shuming:\n\nTry EasyPreview from \n\nwww.reportdesigner.info\n\nYou can save the report in JPG, BMP, WMF, EMF, PNG\n\nand you can send it by mail.\n\nIf you have more than 1 page you can save it and compress it and \n\nsend the file.zip by mail too.\n\nRegards. \n\nRuben Fernandez" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-32550.html", "title": "Ver PDF dentro de la aplicación", "text": "P (fgondi): Hola,\n\nHasta ahora los pdf's los muestro dentro de la aplicación con el ActiveX de Acrobat Reader.\n\nPero cada vez que hay una actualización del Acrobat Reader, suele generar problemas y ya no se ven los PDF.\n\nTengo que andar cambiando condiciones en Acrobat Reader para que se puedan ver y en cada versión son distintas.\n\nMe gustaría poder dejar de usar Acrobat, para dejar de tener problemas.\n\n¿Alguno usa algún visor de PDF dentro de las aplicaciones?, ¿Cúal?\n\nMuchas gracias\nR (Antonio Linares): Fernando,\n\nYo suelo usar Chrome como visor de PDFs.\n\nImagino que modificando samples\\webexp.prg podrias usarlo de visor de PDFs. \n\nNo lo he probado pero debería funcionar" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-10643.html", "title": "A Question Abot DIALOGs", "text": "P (xProgrammer): Hi FiveWinnners\n\nI have some questions about DIALOGs that I probably should have asked some time ago, and maybe just shows that I don't quite understand, but here goes:\n\nOK I have DIALOGS (objects of class TDialog) which I create programmatically. In other words my code looks something like this:\n\nCode: Select all Collapse\nR (Antonio Linares): Doug,\n\nYou can hide it ( oDlg:Hide() ) and later on show it ( oDlg:Show() ) again instead of end it.\n\nYou may need to create it as non modal, and to simulate modal behavior, disable other windows and dialogs doing oWnd:Disable(). Later on enable them doing oWnd:Enable()" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-1612.html", "title": "TdosPrn con Preview e impresoras laser", "text": "P (ralph): Estimados amigos del foro:\n\nComo muchos de ustedes uso la clase TdosPrn modificada por Ednaldo Rolim que nos da la opcion de previsualizar los reportes (una excelente clase) antes de imprimirlas en impresoras matriciales. \n\nSin embargo me encontre con clientes que tenian impresoras Laser USB, u otras con tarjeta de red y se quejaban de que no podian imprimir desde este preview. Habia que hacer algunos trucos con NET USE LPTx para que se pudiera redireccionar la impresion a esas impresoras, lo que resultaba un tanto\nR (goosfancito): Sobre esta clase,\n\nAmigo, trate de varias formas de crear la clase y ejemplo que esta en ese zip pero me saltan errores, los que detallo.\n\nCode: Select all Collapse" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-28917.html", "title": "Pasar a SQL paso a paso para Novatos..", "text": "P (cuatecatl82): Saludos foro:\n\nEstoy intentando usar SQL, pero con tanta información ya me confundi, creo que como muchos no damos el paso de usar DBF a SQL porque la información es muy confusa, demasiado técnica y hasta cierto punto fastidiante como me ha pasado a mi varias veces con este proceso, hasta ahora tengo entendido que necesito un motor para gestionar las bases de datos, sea MySQL, MariaDb y las funciones que se comuniquen con el motor como Eagle, TDolphin, TSql.\n\nYo opte por usar MariaDB y TDolphin, ya tengo el instala\nR (Antonio Linares): Victor,\n\nNo necesitas instalar nada. ADO viene ya en Windows por defecto \n\nY si quieres probar con el motor local de Access pues tampoco tienes que descargar ó instalar nada, puesto que tambien viene con Windows" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-23554.html", "title": "What is the best of MySql (lib or class) TMySql, TDolphin", "text": "P (dutch): Dear All,\n\nI would like to know, the best way to move to MySql?\n\nTMySql (LibMySql)\n\nTDolphin\n\nADO\n\netc.\n\nThanks for all idea and recommendation.\n\nRegards,\n\nDutch\nR (Rick Lipkin): I like ADO as well for the very same reason Enrico noted.. and if you are using ado you can specify the cursor location. ( local .. very fast ) \n\nUnfortunately ADO for MySql is not native and you have to download ( or pay for .. last time I looked ) a run-time client. If you have plans to distribute your app with ADO and have many computers .. you have a distribution problem.\n\nOn the flip side, you can use the MySql library that you can ( conveniently ) link into your app ( much like advantage database ) but the syntax is nothing like the standard ADO methodology which is consistent with Sql Server, Oracle, IBM DB2, Access .. \n\nPros and cons both ways.\n\nRick Lipkin" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-11704.html", "title": "[TExplorerBar() v1.0] Control Freeware xharbour/fivewin", "text": "P (andresreyes_mzt): ExplorerBar() permite la creacion de barras de exploracion similares a las utilizadas en el explorador de archivos de Windows XP, clase creada y compilada con (x)Harbour y probada con Fivewin 8.03.\n\nScreenShot\n\nCrear una Barra es tan facil como agregar la siguiente linea.\n\nCode: Select all Collapse\nR (wmormar): Andrés,\n\nsimplemente excelente aportación, he estado checando y es un control totalmente novedoso.\n\nse comporta igual que la barra de windows XP.\n\nsaludos\n\nandresreyes_mzt wrote:ExplorerBar() permite la creacion de barras de exploracion similares a las utilizadas en el explorador de archivos de Windows XP, clase creada y compilada con (x)Harbour y probada con Fivewin 8.03.\n\nScreenShot\n\nCrear una Barra es tan facil como agregar la siguiente linea.\n\nCode: Select all Collapse" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-45336.html", "title": "xbrowse, dbf and codeblock", "text": "P (JoséQuintas): Using DBF.\n\nWhen define a codeblock for skip, xbrowse update fail.\n\nCode: Select all Collapse\nR (JoséQuintas): nageswaragunupudi wrote:\nXBrowse automatically generates all navigation codeblocks internally and correctly for all known datasources like arrays, hashes, dbf, ado-recordsets and all other known classes.\n\nPlease do not write our own navigation codeblocks.\n\nYes, for a standard navigation.\n\nWhat to do when I need a not default navigation for dbf?\n\nI think codeblocks are available on xbrowse to do things like this, in same way as harbour tbrowse.\n\nAm I wrong ?" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-33304.html", "title": "FWH MySQL/MariaDB soporte nativo docs", "text": "P (Antonio Linares): FWH Built-in MySql/MariaDB functionality\n\nviewtopic.php?f=3t=32657\n\nFWH MariaDb/MySql Backup and Restore\n\nviewtopic.php?f=3t=32791\n\nFWH MySql/MariaDB: RowSet object\n\nviewtopic.php?f=3t=32737\n\nFWH Parent Child RowSets (MySql/MariaDB)\n\nviewtopic.php?f=3t=32736\n\nFWH MYSQL/MARIADB Stored Procedures and Functions\n\nviewtopic.php?f=3t=33280\n\n&&&&&\nR (Antonio Linares): Todos los wikis estan ahora aqui:\n\nhttps://github.com/FiveTechSoft/FiveTech_wiki" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-45121.html", "title": "HDBC para SQLite", "text": "P (xmanuel): Hola mi gente...\n\nEstoy preparando una nueva clase para trabajar con bases de datos.\n\nLa primera será para SQLite, luego vendrá PostgreSQL, MySQL, SQLServer y ODBC.\n\nEstará hecha en C++ para ser usada como clases Harbour.\n\nPodéis sugerirme cualquier cosa para implementarla,\n\nSaludos y atentos a las pantalla!!!\n\n :roll:\nR (Marcelo Via Giglio): Manuel,\n\nbuenos dias alla creo, que buena noticia, yo siempre ando esperando algo para Postgres, un par de preguntas:\n\nse podra utilizar un solo codigo para interacturar con las diferentes DBs?\n\nhabra un active record? esto creo que si, pienso que es casi inevitable?\n\nsuerte, estare pendiente a tus novedades\n\nsaludos cordiales\n\nMarcelo Via" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-25086.html", "title": "PROBLEMS ??? installing new Windows 8 - release", "text": "P (ukoenig): Hello,\n\ntoday I baught Windows 8 full version.\n\nMy old system is Vista.\n\nBecause of some messages about scripting problems I wanted to change to Windows 8.\n\nI started the install with option include existing Progs ( Vista-installs ).\n\nAfter 20 reboots the message : Not possible to install \n\nWhy ? NO idea. Free diskspace on C: 200 GB \n\nThe computer I wanted to install is a new computer with Quatro-processor and 2 Gigs memory\n\nNow, I'm using my broken Vista, to connect to the Forum, but cannot write / read any\n\nEmail\nR (Antonio Linares): Uwe,\n\nMy best advise is to use the cloud as much as possible. \n\nI don't keep any important data on my computers, so I can use any computer and in some minutes I become fully productive. \n\nDon't rely neither be dependant on local stored data, so do a backup, format and say bye to Windows Vista" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-28779.html", "title": "Next target: EasyReport !!! :-)", "text": "P (Antonio Linares): I just sent this email to Timm Sodtalbers (EasyReport owner and developer) \n\nDear Timm,\n\nLong time we don't talk. How are you ? I hope everything is fine on your side.\n\nI would like to comment you something:\n\nWould you be interested in selling EasyReport source code ? My idea is to make it open source and to integrate it with FWH.\n\nThis way we could have a free and open source report designer for all the FWH users community \n\nHopefully we could find an agreement and this way we would give EasyReport a long long lif\nR (Antonio Linares): Richard,\n\nWe must have full source code for the visual report designer to include in FWH as we don't want to depend on closed commercial products that sooner or later may become obsolete or discontinued.\n\nThis way I understand that the best choice is EasyReport" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-29832.html", "title": "New Rating Class", "text": "P (Silvio.Falconi): Friends,\n\n I made a new class : TRating class \n\nIt is a beta test but now it is working ... \n\nIt not need images or bitmap to build stars !!!\n\nWe can insert symbol and bitmaps \n\nSample:\n\n @ 16 ,10 SAY \"My Rating :\" Of oWnd PIXEL\n\n oRating := TRating():New( 10, 75, 80, 20, oWnd,oFont)\n\n oRating:nType=1 // Stars\n\nwe can assign a Value for each symbols\n\nsimply with oRating:AssignValues( oRating:AssignValues(aValoracion))\n\nwhere aValoracion is an array with values \n\nyou're seeing the number 50.... is the value it retur\nR (Antonio Linares): Silvio,\n\nLook at Uwe's so nice screenshot. Look at a star that is half painted with two colors.\n\nEach half star can be painted as a poligon. So thats the solution \n\nThe half of a star is also a poligon" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-26748.html", "title": "Reports designers comparison", "text": "P (Antonio Linares): I would like to start a new thread comparing the most commonly reports designers in use: FastReport, Crystal Reports, EasyReport, etc...\n\nWhat is the best and worse of each one ? What is needed and what is extra and not needed.\n\nTne idea is to develop or complete a reports designer for FWH, so we don't need to include an external one\nR (Antonio Linares): If you master one of these, please explain the basic steps to create a simple report and show the visual steps to do, thanks!" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-30904.html", "title": "Preview of a file", "text": "P (Silvio.Falconi): Can I show the preview of a file with Image class ?\n\nsample I have namedoc.doc or noname.pdf can I show the preview on dialog ?\nR (Silvio.Falconi): error in compilation\n\nline 31\n\nIPreviewHandler* GetIPreviewHandler(const wchar_t* cExtension)\n\nProgetto: test, Ambiente: xFive_Pelles:\n\n[1]:Harbour.Exe test.prg /m /n0 /gc1 /es2 /iC:\\Work\\fwh\\include /ic:\\work\\xHarbour\\Include /jC:\\Work\\Errori\\PREVIE~1\\I18n\\Main.hil /iinclude;c:\\work\\fwh\\include;c:\\work\\xHarbour\\include /oObj\\test.c\n\nxHarbour 1.2.3 Intl. (SimpLex) (Build 20140725)\n\nCopyright 1999-2014, http://www.xharbour.org http://www.harbour-project.org/\n\nCompiling 'test.prg'...\n\nGenerating international list to 'C:\\Work\\Errori\\PREVIE~1\\I18n\\Main.hil'...\n\nGenerating C source output to 'Obj\\test.c'...\n\nDone.\n\nLines 18, Functions/Procedures 1, pCodes 100\n\n[1]:Bcc32.Exe -M -c -O2 -tW -v- -X -DHB_FM_STATISTICS_O" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-23011.html", "title": "UE Studio Config - Harbour 3.0, MSVC, FWH", "text": "P (TimStone): For those of you who use Ultra Edit Studio, it is very convenient to have it actually build your application. You create an application, add all the files you will use, and then you can have it generate and run the make file.\n\nWe now have this successfully running using FiveWin Harbour ( 11.11 ), Microsoft Visual Studio 2010 ( VC ), and Harbour 3.0. To do this, when you configure your compiler, use the Harbour config ( its included in your FWH distribution if its not already on your system ) and make sure it is set\nR (Antonio Linares): Tim,\n\nThanks for sharing it \n\nInstead of:\n\n L:\\vc98\\bin\\rc.exe \n\nbetter use:\n\n %ProgramFiles%\\Microsoft SDKs\\Windows\\v7.0A\\bin\\rc.exe\n\nImportant: Borland brc32.exe is NOT compatible with MSVC and a generated res with it could corrupt the EXE that usually won't boot" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-45362.html", "title": "Focus en window MDICHILD", "text": "P (FiveWiDi): Hola a todos,\n\n¿Cómo puedo saber si una de las window MDICHILD tiene el foco?\n\nGracias,\nR (Antonio Linares): Carlos,\n\nbuenos dias\n\nPrueba con oWndChild:hWnd == GetFocus()\n\nTambien podrias usar oWndChild:bGotFocus = { || MsgBeep() } y oWndChild:bLostFocus = { || MsgBeep() }\n\nPuedes usar OutputDebugString( \"foco recibido\" ) y dbwin32 en vez de MsgBeep(). Si usas MsgInfo() alteraras la secuencia de foco" }, { "src": "Foro FiveTech · FiveWin for Harbour/xHarbour (EN)", "url": "https://fivetechsoft.github.io/forums/topic-19334.html", "title": "Refreshing xbrowse when dataset is closed and re-opened", "text": "P (Rick Lipkin): To All\n\nI have a xBrowse list box already established .. I have a change motorpool option that worked fine under fwh txbrowse ..\n\nWhat happends is the record set is completely changed because the dataset is closed and re-opened with a new set of values .. did not have a problem pryor to migrating my listbox to xbrowse..\n\nHere is the jist of the code :\n\nCode (fw): Select all Collapse\nR (James Bott): Rick,\n\nYour code is quite complex for us to easily debug.\n\nNote that the parameters for listboxes and TXBrowse are quite different, so you can't just plug in TXBrowse.\n\nThe error you are getting seems to indicate that the new recordset is not opened. Try verifying that it is.\n\nYou could try a call to oBrw:setADO( oRecordset ) after opening the new recordset.\n\nPerhaps you could make a very simple example of switching the recordset and using the same TXBrowse.\n\nRegards,\n\nJames" }, { "src": "Foro FiveTech · FiveWin para Harbour/xHarbour (ES)", "url": "https://fivetechsoft.github.io/forums/topic-4897.html", "title": "ACTIVEX PDF y fusión de datos", "text": "P (Manuel Aranda): Con ACTIVEX PDF logro visualizar por pantalla un formulario PDF con campos editables para rellenar. Sería un gran avance poder rellenar esos campos automáticamente con los datos contenidos en un registro de una BD. ¿Es posible esto? Alguien sabe cómo se hace o existe documentación al respecto?\n\nUn saludo,\n\nManuel Aranda\n\nFWH 2.8 Octubre/2006\nR (sjingo): Hola Manuel\n\nNo sé exactamente cómo funciona el activeX PDF, pero te puedo dar una pista que espero te funcione.\n\nComo sabes al crear el PDF con campos editables se crea un archivo similar de extensión FDF (Forms Data Format) qe es el que guarda los nombres de los campos y su contenido. Entonces el truco está en acceder a este archivo con funciones de bajo nivel y modificar sus datos. Y eso sería todo.\n\nA continuación te muestro el código que hace esto pero en PHP (lo encontré en Internet), con el que te puedes guiar, pasarlo a Harbour y probar:\n\n value)\naBuffer\nArray\nRecord buffer for optimistic locking\nnBufRecNo\nNumeric\n0\nRecord number of the current buffer content\nbBoF\nBlock\nCode block evaluated at beginning of file\nbEoF\nBlock\nCode block evaluated at end of file\nbNetError\nBlock\nCode block evaluated on network error\nbTrigger\nBlock\nTrigger block evaluated on record changes\nlADS\nLogical\n.F.\nTrue when using Advantage Database Server RDD\nlHasMemos\nLogical\n.F.\nWhether the DBF has memo fields (READONLY)\noCn\nObject\nConnection object for SQL queries (since FWH 13.03)\noReplServer\nObject\nReplication server (MySQL/MS SQL, since FWH 18.11)\nConstructors\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdatabase2.html", "title": "TDBase", "text": "Source:\nsource/classes/tdbase.prg\nStandalone class\nTDBase represents SQL database metadata, storing the database name and up to eight\nrelation definitions with their corresponding INTO clauses. It is used by the SQL\nquery and reporting engine to resolve table relationships in SELECT statements.\nKey DATA Members\nDATA\nType\nDescription\ncDatabase\nCharacter\nName of the SQL database\naRelations\nArray\nArray of relation definitions (up to 8)\naIntos\nArray\nArray of INTO clause definitions (up to 8)\nMethods\nMethod\nDescription\nNew( cDb, cRel01, cRel02, cRel03, cRel04, cRel05, cRel06, cRel07, cRel08, cInto01, cInto02, cInto03, cInto04, cInto05, cInto06, cInto07, cInto08 )\nCreate a new database metadata object with up to 8 relation/INTO pairs\nExample: Define Database Relations\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oDb\n\n // Define a \"sales\" database with two relations\n oDb := TDBase():New( \"sales\", ;\n \"CUSTOMER.ID = ORDERS.CUSTID\", \"ORDERS.ID = ITEMS.ORDERID\", , , , , , , ;\n \"CUSTOMERS\", \"ORDER_ITEMS\" )\n\n ? \"Database:\", oDb:cDatabase\n ? \"Relation 1:\", oDb:aRelations[ 1 ]\n ? \"Into 1:\", oDb:aIntos[ 1 ]\n ? \"Relation 2:\", oDb:aRelations[ 2 ]\n ? \"Into 2:\", oDb:aIntos[ 2 ]\n\nreturn nil\nNotes\nTDBase is a lightweight metadata container primarily used to configure the SQL query generator with table relationships.\nUp to eight relation/INTO pairs can be defined. Unused positions should be left empty (skipped).\nThe\naRelations\narray stores JOIN condition strings (e.g., \"TABLE1.COL = TABLE2.COL\"), while\naIntos\nstores the alias or target table names.\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdatabasecomp.html", "title": "TDataBaseComp", "text": "Source:\nsource/classes/tdatabasecomp.prg\nOverview\nTDataBaseComp class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdatarow.html", "title": "TDataRow", "text": "Source:\nsource/classes/datarow.prg\nStandalone class\nTDataRow is a data-record editor that provides a convenient interface for viewing and editing\nindividual records from a data source. It works with DBF work areas, ADO recordsets, arrays,\nand hashes, making it a versatile tool for record-level operations. TDataRow maintains an\noriginal copy of the data and can detect modifications.\nKey DATA Members\nDATA\nType\nDescription\naData\nArray\nArray of current field values\naOrg\nArray\nArray of original field values (for change detection)\naPrompts\nArray\nArray of field prompt/label strings\nuSource\nVariant\nSource data: alias (N), ADO recordset, array, or hash\ncSrcType\nCharacter\nSource type string: \"DBF\", \"ADO\", \"ARR\", or \"HSH\"\nbSave\nBlock\nCode block evaluated on successful save\nbValid\nBlock\nCode block for record validation before save\nbEdit\nBlock\nCode block evaluated when edit begins\nMethods\nMethod\nDescription\nNew( uSource, cFieldList, lBlank, aInitVals )\nCreate a data row from a source and optional field list\nLoad( lBlank )\nLoad current values from the source into aData\nSave( lCheck, lSilent )\nWrite changes back to the source; optional validation\nEdit( lReadOnly, lNavigate, cTitle, cMsg )\nOpen a dialog for interactive record editing\nUndo( fld )\nRevert a field to its original value\nCopy()\nCreate a copy of the current record data\nPaste( hRec )\nPaste a previously copied record into the buffer\nModified( fld )\nCheck if a field (or any field) has been modified\nFieldGet( fld )\nGet a field value by name or position\nFieldPut( fld, uVal )\nSet a field value by name or position\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdbase.html", "title": "TDBase", "text": "Source:\nsource/classes/tdbase.prg\nOverview\nTDBase class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdbcombo.html", "title": "TDBCombo", "text": "Source:\nsource/classes/dbcombo.prg\nInherits from:\nTComboBox\nTDBCombo is a database-aware ComboBox that displays values from a DBF field and can return a different value to the bound variable. It supports an incremental search as the user types, and can auto-populate its items from the database when no explicit array is provided.\nKey DATA Members\nDATA\nType\nDescription\ncAlias\nCharacter\nWorkarea alias for the database table (default: current alias)\ncFldList\nCharacter\nField name whose values are displayed in the combo\ncFldItem\nCharacter\nField name whose value is returned to the bound variable\naList\nArray\nArray of display strings shown in the dropdown\naItems\nArray\nArray of return values corresponding to aList entries\ncSearchKey\nCharacter\nIncremental search buffer for keyboard navigation\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, aItems, nW, nH, oWnd, nHelpId, bChange, bValid, nClrFore, nClrBack, lPixel, oFont, cMsg, lUpdate, bWhen, lDesign, acBitmaps, bDrawItem, cAlias, cFldItem, cFldList, aList, nHGet )\nCreate a new DBF-aware ComboBox\nReDefine( nId, bSetGet, aItems, oWnd, ... )\nRedefine from a dialog resource\nFill()\nPopulate aItems and aList from the database (called automatically on New/ReDefine if no explicit arrays given)\nRefill()\nRe-read the database and repopulate the combo items\nSetItems( aItems, aList, lChanged )\nSet display and return value arrays manually\nAdd( cItem, nAt, cList )\nAdd an item to the combo at position nAt\nDel( nAt )\nDelete item at position nAt\nListGet()\nReturn the selected element of ::aList\nKeyChar( nKey, nFlags )\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdbfcomp.html", "title": "TDbfComp", "text": "Source:\nsource/classes/tdbfcomp.prg\nOverview\nTDbfComp class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdbodbc.html", "title": "TDbOdbc / TDbOdbcDirect", "text": "Source:\nsource/classes/tdbodbc.prg\n/\nsource/classes/tdbodbcd.prg\nTDbOdbc provides RDD-compatible ODBC access to SQL databases. It wraps ODBC statement handles\nand presents a DBF-like interface (GoTop, Skip, FieldGet, etc.), making it possible to browse\nSQL tables using the same navigation patterns as DBF files. TDbOdbcDirect is a lighter\nalternative that works directly with TDatabase-compatible ODBC connections without the full RDD emulation layer.\nTDbOdbc - Key DATA Members\nDATA\nType\nDescription\nhStmt\nHandle\nODBC statement handle\noOdbc\nObject\nTODBC connection object\naFields\nArray\nArray of field definition arrays\naFldPrimary\nArray\nPrimary key field names\naBuffer\nArray\nCurrent record buffer\naIndex\nArray\nIndex/sort order definition\ncSource\nCharacter\nSource table name or SQL\ncSelect\nCharacter\nGenerated SELECT statement\ncOrder\nCharacter\nCurrent ORDER BY clause\ncFilter\nCharacter\nCurrent WHERE filter\nnRecno\nNumeric\nCurrent record number\nnFields\nNumeric\nNumber of fields\nlBof / lEof\nLogical\nBoundary indicators\nlReadOnly\nLogical\nRead-only mode\nlFound\nLogical\nResult of last Seek\nTDbOdbc - Methods\nMethod\nDescription\nNew( cSource, oOdbc, nArea, cAlias, lShared, lReadOnly )\nCreate and open ODBC table access\nEnd()\nClose statement handle and release resources\nExecute( cCommand )\nExecute an SQL command directly\nGoTop() / GoBottom()\nNavigate to first/last record\nSkip( nRecs )\nMove relative by n records\nGoTo( nRecNo )\nGo to a specific record by ID\nFieldGet( nField )\nGet field value from current buffer\nFieldPut( nField, uValue )\nSet field value (marks for update)\nFieldName( nField )\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdbodbcdirect.html", "title": "TDbOdbcDirect", "text": "Source:\nsource/classes/tdbodbcdirect.prg\nOverview\nTDbOdbcDirect class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tdict.html", "title": "TDict - Data Dictionary", "text": "Source:\nsource/classes/tdict.prg\nStandalone class\nTDict implements a data dictionary system that manages a collection of database tables (DBFs), menus, and reports. It stores metadata across 15+ system tables (\noTables\n) covering table definitions, field definitions, indexes, relations, menus, reports, users, and security. The dictionary can auto-build missing system tables (\nlAutoBuild\n) and provides methods for creating tables, opening databases, loading menus, running reports, and importing files.\nKey DATA Members\nDATA\nType\nDescription\ncPath\nCharacter\nBase path where dictionary files are stored\nlAutoBuild\nLogical\n.T. to automatically create missing system tables\noTables\nArray\nArray of 15+ TDatabase objects for system tables\nMethods\nMethod\nDescription\nNew( cPath )\nCreate a new data dictionary at the given path\nActivate()\nOpen all system tables and activate the dictionary\nCreateTable( cTbl )\nCreate a new user table defined in the dictionary\nOpenDataBase( cDbName )\nOpen a named database and all its tables\nOpenTable( cTbl )\nOpen a specific table by name\nLoadMenu( cMenu )\nLoad a menu definition from the dictionary; returns TMenu\nReport( cReport )\nRun a report defined in the dictionary\nImport( cMask )\nImport files matching a file mask into the dictionary\nLoadWebBrowse( cTbl )\nLoad web browse configuration for a table\nLoadWebRecord( cTbl )\nLoad web record form configuration for a table\nWebRecSave( cTbl )\nSave web record configuration for a table\nExample: Create and Use Dictionary\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oDict\n\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tindex.html", "title": "TIndex", "text": "Source:\nsource/classes/tindex.prg\nOverview\nTIndex class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tlocks.html", "title": "TLocks", "text": "Source:\nsource/classes/tlocks.prg\nStandalone class\nTLocks provides a record-locking mechanism for ODBC tables. It manages a lock table\nwithin the database that tracks which records are locked and by which connection.\nThis enables basic pessimistic concurrency control for ODBC data sources that do not\nprovide native record-level locking.\nKey DATA Members\nDATA\nType\nDescription\noOdbc\nObject\nTODBC connection object for database access\ncTable\nCharacter\nName of the table being locked\nnId\nNumeric\nConnection or session identifier\nMethods\nMethod\nDescription\nNew( oOdbc, cTable )\nCreate a new lock manager for the specified ODBC connection and table\nCreateEnviroment()\nCreate the lock tracking environment (lock table) if it does not exist\nLock( nRecNo )\nLock a pseudo-record by record number\nUnLock( nRecNo )\nRelease a lock on a pseudo-record\nRefreshLock( nRecNo )\nRefresh the lock timestamp to prevent timeout expiration\nSeekRegLock( nRecNo )\nCheck if a pseudo-record is currently locked\nExample: Lock/Unlock a Pseudo-Record\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oOdbc, oLocks\n\n oOdbc := TODBC():New( \"MyDSN\", \"user\", \"pass\" )\n\n if oOdbc:lSuccess\n oLocks := TLocks():New( oOdbc, \"CUSTOMERS\" )\n\n // Ensure the lock environment exists\n oLocks:CreateEnviroment()\n\n // Lock record number 101\n if oLocks:Lock( 101 )\n MsgInfo( \"Record 101 locked\" )\n\n // Do work with the record...\n\n // Release the lock\n oLocks:UnLock( 101 )\n MsgInfo( \"Record 101 unlocked\" )\n else\n MsgAlert( \"Could not lock record 101\" )\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tmariaconnect.html", "title": "FWMariaConnection + FRecSet", "text": "Source:\nsource/internal/fwmaria.prg\nFWMariaConnection provides a comprehensive native connection to MariaDB and MySQL\nservers through the\nlibmariadb.dll\nC client library. The companion FRecSet\nclass wraps SQL result sets with navigation, paging, sorting, and editing capabilities.\nTogether they form the backbone of FiveWin's MariaDB/MySQL data access layer.\nFWMariaConnection\nThe connection class manages TCP/IP connections to MariaDB/MySQL servers. It supports\nconnection pooling, automatic reconnection, prepared statements, transactions, backup/restore,\nand full DDL/DML execution.\nKey DATA Members\nDATA\nType\nDescription\npMySql\nPointer\nInternal C library connection handle (read-only)\ncServer\nCharacter\nServer hostname or IP address\ncDB\nCharacter\nCurrent database name\ncUser\nCharacter\nDatabase user name\nnPort\nNumeric\nTCP port (default 3306)\nlUnicode\nLogical\nUnicode mode (UTF-8 charset)\nnError\nNumeric\nLast error code (0 = success)\ncError\nCharacter\nLast error message text\nlOpen\nLogical\nACCESS: .T. if connection handle is valid\nlConnected\nLogical\nACCESS: .T. if connected and not disconnected\ncServerInfo\nCharacter\nServer version string (read-only)\nIsMariaDB\nLogical\nACCESS: .T. if server is MariaDB\nIsMySQL\nLogical\nACCESS: .T. if server is MySQL\nnLastPing\nNumeric\nTimestamp of last successful ping\nMethods\nMethod\nDescription\nNew( cServer, cDB, cUser, cPassword, nPort, nFlags, chr_set, cMsgLang, cLocale )\nCreate and open a connection to the server\nConnect( lShowErr )\nEstablish (or re-establish) the TCP/IP connection\nQueryResult( cSql, aParams )\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tmariarecord.html", "title": "FWMariaRecord", "text": "Source:\nsource/classes/mariarec.prg\nInherits from:\nTDataRow\nFWMariaRecord provides single-record ORM-style access to MariaDB/MySQL tables.\nIt extends TDataRow to automatically detect table structure, primary keys, and\nauto-increment columns. The class handles the complete CRUD lifecycle: loading\na record from the database, editing field values via TDataRow's property access,\nand saving changes with automatic upsert (INSERT or UPDATE as appropriate).\nKey DATA Members\nDATA\nType\nDescription\noCn\nObject\nFWMariaConnection object\ncTable\nCharacter\nTable name\ncWhere\nCharacter\nWHERE clause identifying the current record\naStruct\nArray\nTable column structure (name, type, length, decimals, flags)\naBlank\nArray\nBlank values for new record creation\naPrimary\nArray\nIndices of primary key columns in aStruct\nnAutoIncFld\nNumeric\nPosition of auto-increment field (0 if none)\nlValidData\nLogical\nACCESS: .T. when record data is loaded\nMethods\nMethod\nDescription\nNew( oCn, cTable, cWhere )\nCreate and load a record. If cWhere is nil or empty, creates a blank record for new entry.\nRead( cWhere )\nLoad a specific record identified by the WHERE clause\nBlank()\nReset the record to a blank template for inserting a new row\nLoad( lBlank )\nLoad record from server (or blank template if lBlank is .T.)\nSave()\nSave changes using automatic upsert: INSERT if new, UPDATE if existing\nMakePrimaryWhere()\nBuild a WHERE clause from current primary key field values\nField Access\nSince FWMariaRecord inherits from TDataRow, field values are accessible via the\nFieldGet()\nand\nFieldPut()\nmethods using either field names\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/todbc.html", "title": "TODBC", "text": "Source:\nsource/classes/todbc.prg\nTODBC provides direct ODBC (Open Database Connectivity) access from Harbour applications. Unlike TRecSet\nwhich relies on ADO/COM, TODBC calls the Windows ODBC API functions directly through Harbour's C-level\ninterface. This makes it lightweight and suitable for connecting to any ODBC-compliant data source\nincluding SQL Server, MySQL, PostgreSQL, Oracle, SQLite, and more.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\nhEnv\nNumeric\nODBC environment handle\nhDbc\nNumeric\nODBC connection handle\ncConnect\nCharacter\nFull connection string (after successful connect)\ncDSN\nCharacter\nData Source Name\ncUser\nCharacter\nUsername for authentication\ncPassword\nCharacter\nPassword for authentication\nlSuccess\nLogical\n.T.\nWhether the last operation succeeded\nlShowError\nLogical\n.T.\nShow error dialogs automatically\nlAbort\nLogical\n.F.\nAbort on error\nlCsrDyn\nLogical\n.T.\nUse dynamic cursors\nlDateAsStr\nLogical\n.F.\nReturn dates as strings\naErrors\nArray\n{}\nArray of error messages\nMethods\nConstructor\nCÓDIGO:\nMETHOD New( cDSN, cUser, cPassword )\nCreates a new ODBC connection. The\ncDSN\nparameter can be either a DSN name registered in\nthe ODBC Data Source Administrator, or a full connection string starting with\n\"DRIVER=\"\n.\nThe constructor allocates the ODBC environment and connection handles and immediately attempts to connect.\nCheck\noOdbc:lSuccess\nafter creation.\nStatement Methods\nMethod\nDescription\nAllocStatement()\nAllocate a new SQL statement handle. Returns hStmt or 0 on error.\nDropStatement( hStmt )\nFree a statement handle\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tordinfo.html", "title": "TOrdInfo", "text": "Source:\nsource/classes/tordinfo.prg\nStandalone class\nTOrdInfo encapsulates index order metadata for DBF tables. It stores the tag name,\nindex bag (file) name, key expression, uniqueness flag, field names, and filter\nconditions. It can also generate SQL-equivalent ORDER BY and DECLARE statements\nfor migrating indexed DBF logic to SQL backends.\nKey DATA Members\nDATA\nType\nDescription\ncTagName\nCharacter\nIndex tag name\ncBagName\nCharacter\nIndex bag (file) name, e.g. \"customers.cdx\"\ncExpKey\nCharacter\nIndex key expression as a string\nbExpKey\nBlock\nIndex key expression as a code block\nlUnique\nLogical\n.T. if the index enforces unique keys\naFieldName\nArray\nArray of field names used in the index key\nMethods\nMethod\nDescription\nNew( cTag, cBag, cExpKey, bExpKey, lUniq, cFilt, aAscDsc, cFldRec )\nCreate a new index order information object\nSqlOrder()\nGenerate an SQL ORDER BY clause from the index key expression\nSqlDeclare()\nGenerate an SQL DECLARE statement for the index\nExample: Translate DBF Index to SQL ORDER BY\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oIdx\n\n // Describe a DBF index\n oIdx := TOrdInfo():New( \"NAME\", \"customers.cdx\", ;\n \"UPPER(LAST)+UPPER(FIRST)\", .F. )\n\n ? \"Tag:\", oIdx:cTagName\n ? \"Bag:\", oIdx:cBagName\n ? \"Key expr:\", oIdx:cExpKey\n ? \"Unique:\", oIdx:lUnique\n\n // Generate equivalent SQL ORDER BY\n ? \"SQL ORDER BY:\", oIdx:SqlOrder()\n // Output: ORDER BY UPPER(LAST), UPPER(FIRST)\n\n // Generate SQL DECLARE\n ? \"SQL DECLARE:\", oIdx:SqlDeclare()\n\nreturn nil\nNotes\nSqlOrder()\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/torm.html", "title": "ORM_Connection + ORM_Table", "text": "Source:\nsource/classes/fworm.prg\nThe ORM (Object-Relational Mapping) classes provide a multi-backend abstraction layer\nthat works with ADO, FWH (MariaDB), and Dolphin (DLP) connections. ORM_Connection\nmanages the database link and exposes tables as ORM_Table objects. ORM_Table provides\na fluent query-building interface with chainable Where/OrderBy/Select methods,\naggregation functions, relationship navigation, and dynamic field access via an\nerror handler.\nArchitecture\n[diagrama]\nORM_Connection\nORM_Connection abstracts database connections across three backends: ADO (for any\nODBC-compliant RDBMS), FWH (native MariaDB via FWMariaConnection), and DLP (Dolphin\nlibrary for MariaDB). It accepts either connection parameters or an existing connection\nobject.\nDATA Members\nDATA\nType\nDescription\nrdbms\nCharacter\nRDBMS type (\"MYSQL\", \"MSSQL\", \"DBASE\", \"ORACLE\", etc.)\noCn\nObject\nUnderlying connection object (ADO/FWH/DLP)\nnLib\nNumeric\nLibrary constant: LIB_ADO(1), LIB_FWH(2), LIB_DLP(4)\ncServer\nCharacter\nServer hostname\ncDataBase\nCharacter\nDatabase name\ncUserName\nCharacter\nDatabase user name\nMethods\nMethod\nDescription\nNew( rdbms, cServer, cDataBase, cUserName, cPassword )\nCreate and connect to a database. If first parameter is an object, wraps an existing connection.\nConnect( cPassWord )\nEstablish the connection\nTables()\nReturn an FW_Array of table names in the database\nTable( cTable )\nReturn an ORM_Table object for the given table name\nHasTable( cTable )\nCheck if a table exists\nClose()\nClose the connection\nORM_Table\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tpostgres.html", "title": "TPostgreSQL + FWPG_* Functions", "text": "Source:\nsource/function/pgsuport.prg\nFiveWin provides PostgreSQL integration via the\npgsuport.prg\nmodule, which bridges\nthe Harbour\nhbpgsql\nlibrary (a\nlibpq\nwrapper) with FWH components such\nas\nTXBrowse\nand\nTDataRow\n. Rather than requiring a compile-time link to\nhbpgsql\n, the module uses a lazy-loading mechanism to resolve\nlibpq\nfunction pointers at runtime, making the library dependency optional.\nPGLinked() - Lazy-Loading Function Resolution\nThe internal static function\nPGLinked()\nis called automatically on the first invocation\nof any\nFWPG_\nfunction. It uses\nHB_FUNCPTR()\nto locate the Harbour-level\nlibpq\nwrappers provided by the\nhbpgsql\nlibrary. If\nPQEXEC\nis found, pointers are cached for the following operations:\nPointer Variable\nhbpgsql Function\nPurpose\npPQExec\nPQEXEC\nSynchronous command execution\npPQExecParams\nPQEXECPARAMS\nParameterized command execution\npPQMetaData\nPQMETADATA\nResult set schema retrieval\npPQGetValue\nPQGETVALUE\nData retrieval for specific row/column\npPQResultStatus\nPQRESULTSTATUS\nStatus check (Success / Tuples / Error)\npPQlastrec\nPQLASTREC\nRow count retrieval\npPQFCount\nPQFCOUNT\nColumn count retrieval\npPQcmdTuples\nPQCMDTUPLES\nAffected rows for DML\npPQresultErrorMessage\nPQRESULTERRORMESSAGE\nDetailed server error text\nThese resolved function pointers are invoked via the\nHB_ExecFromArray()\nmechanism\nthrough\n#xtranslate\nmacros (\nPQ_Exec\n,\nPQ_ExecParams\n,\nPQ_MetaData\n, etc.).\nFWPG_Execute() - Query Execution\nThe central function for all PostgreSQL interaction is\nFWPG_Execute\n:\nSignature:\nCÓDIGO:\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/trddodbc.html", "title": "TRDDODBC", "text": "Source:\nsource/classes/trddodbc.prg\nOverview\nTRDDODBC class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/trecset.html", "title": "TRecSet", "text": "Source:\nsource/classes/trecset.prg\n— Since FWH 14.07\nTRecSet is FiveWin's wrapper around ADO (ActiveX Data Objects) RecordSet objects. It provides a\nHarbour-friendly interface to access any data source supported by ADO providers -- including Microsoft\nAccess (.mdb/.accdb), SQL Server, Excel files, and any OLE DB-compatible database. TRecSet uses\nTOleAuto\ninternally to communicate with the ADODB.RecordSet COM object.\n[diagrama]\nKey DATA Members\nDATA\nType\nDescription\noRs\nTOleAuto\nThe underlying ADODB.RecordSet COM object\naStruct\nArray\nField structure array (compatible with DbStruct())\ncTable\nCharacter\nSource table name\nlReadOnly\nLogical\nRead-only access mode\nlFound\nLogical\nResult of last Seek/Find operation\nlPadRead\nLogical\nPad character fields to full length on read\nlTrimRead\nLogical\nTrim character fields on read\nhFieldPos\nHash\nHash of field names to positions (case-insensitive)\nbEdit\nBlock\nCode block for record editing\ncDBMS\nCharacter\nDatabase management system name\nClass DATA\nCLASSDATA\nDescription\nDefaultConnection\nDefault ADO connection for all new instances\nAllMsgAsFields\nTreat message names as field names (default\n.T.\n)\nnMemoSizeLimit\nFields wider than this are treated as memo (default 80)\nMethods\nMethod\nDescription\nNew( oRs, cSql, oCn, nCursorType, nLockType )\nCreate TRecSet from existing RecordSet, SQL, or connection\nOpen( cSql, oCn, nCursorType, nLockType, nOpt )\nOpen the RecordSet with SQL query or table name\nClose()\nClose the RecordSet\nEnd()\nClose and release the RecordSet object\nFieldGet( uFld )\nGet field value by name or position\nFieldPut( nFld, uValue )\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tsqlerror.html", "title": "TSqlError", "text": "Source:\nsource/classes/sqlerror.prg\nStandalone class\nTSqlError encapsulates ODBC SQL error information. It captures error details at the\nenvironment, connection, and statement handle levels, providing structured access to\nnative SQL state codes, error messages, and error types. It is used internally by\nthe TODBC class and can be used directly for custom error handling.\nKey DATA Members\nDATA\nType\nDescription\nhErrEnv\nHandle\nODBC environment handle where the error occurred\nhErrDbc\nHandle\nODBC connection handle where the error occurred\nhErrStmt\nHandle\nODBC statement handle where the error occurred\ncClassError\nCharacter\nSQL state class code (e.g., \"42S02\" for table not found)\nnType\nNumeric\nError type numeric code\ncMsgError\nCharacter\nHuman-readable error message\nMethods\nMethod\nDescription\nNew( hEnv, hDbc )\nCreate a new TSqlError object; captures errors from environment and connection handles\nInit()\nInitialize the error object and retrieve diagnostic records\nGenerateError( hStmt )\nCapture error details from a statement handle after a failed SQL operation\nCreateError( cClass, nType, cMsg )\nCreate a synthetic error with explicit class, type, and message\nClassError()\nReturn the SQL state class code\nType()\nReturn the error type numeric code\nMsgError()\nReturn the human-readable error message\nExample: Detect and Display SQL Error\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oOdbc, oErr\n\n oOdbc := TODBC():New( \"MyDSN\", \"user\", \"pass\" )\n\n if ! oOdbc:lSuccess\n // Create and display the error\n oErr := TSqlError():New( oOdbc:hEnv, oOdbc:hDbc )\n oErr:Init()\n\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/tstruct.html", "title": "TStruct / TField / TIndex", "text": "Source:\nsource/classes/tstruct.prg\n,\nsource/classes/tfield.prg\n,\nsource/classes/tindex.prg\nThese three utility classes provide object-oriented representations for C-style memory structures\n(TStruct), DBF field definitions (TField), and DBF index definitions (TIndex). They are used\nwhen working with low-level data structures, defining DBF schemas programmatically, or creating\nindex files from Harbour code.\nTStruct - C Structure Builder\nTStruct models a C-language structure in Harbour memory. It maintains a binary buffer and a\nlist of member definitions, allowing members to be added and accessed by name or position.\nDATA Members\nDATA\nType\nDescription\ncBuffer\nCharacter\nBinary raw memory buffer\naMembers\nArray\nArray of\n{ cName, nType, nLen, nOffset }\nType Constants\nConstant\nDescription\nBYTE\n/\nCHAR\n1-byte unsigned integer\nWORD\n/\nINT\n/\nBOOL\n2-byte signed integer\nLONG\n/\nDWORD\n/\nPTR\n/\nLPSTR\n4-byte signed integer or pointer\nLONGLONG\n8-byte signed integer\nMethods\nMethod\nDescription\nNew()\nCreate empty structure\nAddMember( cName, nType, nLen )\nAdd a member with type and optional length\nSetMember( nMember, uData )\nSet member value by index\nGetMember( nMember )\nGet member value by index\nSizeOf()\nReturn total buffer length in bytes\nExample: Define and Use a C Structure\nCÓDIGO:\n#include \"FiveWin.ch\"\n#include \"Struct.ch\"\n\nfunction Main()\n\n local oStru := TStruct():New()\n\n // Add members: name, type, length\n oStru:AddMember( \"nId\", LONG, 4 )\n oStru:AddMember( \"cName\", CHAR, 20 )\n oStru:AddMember( \"nAge\", BYTE ) // defaults to 1 byte\n\n […]" }, { "src": "FWH docs · en/data", "url": "https://fivetechsoft.github.io/FWH_docs/en/data/ttable.html", "title": "TTable / TAccTable", "text": "Source:\nsource/classes/ttable.prg\n,\nsource/classes/tacctbl.prg\nTTable provides DBF table metadata management — it stores the table name, alias, field definitions and index list, and can create or import DBF structures. TAccTable manages Windows accelerator tables, allowing keyboard shortcuts (virtual key + modifier state) to be associated with control IDs.\nTTable — DBF Table Metadata\nKey DATA Members\nDATA\nType\nDescription\ncName\nCharacter\nTable file name (without extension)\ncAlias\nCharacter\nAlias used when opening the table\nlShared\nLogical\nOpen table in shared mode\naFields\nArray\nArray of TField objects defining the structure\naIndexes\nArray\nArray of index definitions\nMethods\nMethod\nDescription\nNew( cName, cAlias, lShared, cComments )\nCreate a new table metadata descriptor\nImport( cDbfFile )\nImport the field structure from an existing DBF file\nCreate( cPath )\nPhysically create the DBF file on disk from the stored field definitions\nTAccTable — Accelerator Table\nKey DATA Members\nDATA\nType\nDescription\nnHandle\nNumeric\nWindows accelerator table handle (returned by SetAccTable)\naItems\nArray\nArray of items, each is\n{ nVirtKey, nVKState, nId }\nMethods\nMethod\nDescription\nNew()\nCreate an empty accelerator table\nAdd( nVK, nState, nId )\nAdd an accelerator entry (virtual key + modifier state + command ID)\nDel( nVK, nState )\nRemove an accelerator entry by virtual key and state\nActivate()\nSet this accelerator table as active for the calling thread\nDeActivate()\nRestore the previous accelerator table (pass nil to SetAccTable)\nEnd()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/more-controls.html", "title": "More Controls", "text": "Additional FiveWin UI controls for labels, progress, layout, timers, and more\n[diagrama]\nTSay -- Static Text\nSource:\nsource/classes/say.prg\n|\nParent:\nTControl\nTSay\ndisplays a static text label. It supports centered, right-aligned, bordered, 3D shaded, and transparent styles. The text can be data-bound via a code block and refreshed automatically.\nProperty\nType\nDescription\nbGet\nBlock\nCode block returning the text to display. Re-evaluated on\nRefresh()\n.\ncPicture\nString\nFormat picture string (e.g.\n\"999,999.99\"\n)\nl3D\nLogical\n3D appearance (shaded, raised, or boxed)\nlAdjust\nLogical\nAuto-adjust width to text content\nlWantClick\nLogical\nIf\n.T.\n, the label responds to click events\nnClrBorder\nNumeric\nCustom border color (overrides standard border)\nbClrText\nBlock\nDynamic text color block, re-evaluated on\nRefresh()\nCommand Syntax\nCÓDIGO:\n@ nRow, nCol SAY [ oSay PROMPT ] cText ;\n [ OF oWnd ] ;\n [ PICTURE cPicture ] ;\n [ FONT oFont ] ;\n [ CENTERED | RIGHT ] ;\n [ BORDER ] ;\n [ SIZE nWidth, nHeight ] ;\n [ COLOR nClrText, nClrBack ] ;\n [ SHADED | BOX | RAISED ] ;\n [ TRANSPARENT ] ;\n [ ADJUST ]\nExample\nCÓDIGO:\n@ 1, 1 SAY oSay PROMPT \"Total:\" OF oDlg ;\n FONT oBold COLOR CLR_BLUE, CLR_WHITE\n\n@ 1, 10 SAY oTotal PROMPT nTotal OF oDlg ;\n PICTURE \"999,999.99\" UPDATE\nTMeter / TMeterEx -- Progress Meter\nSource:\nsource/classes/meter.prg\n|\nParent:\nTControl\nTMeter\ndisplays a progress bar with optional percentage text. It supports standard linear bars, circular meters, and bitmap-array styles. The\nTMeterEx\nvariant adds enhanced visual effects with custom bitmaps.\nProperty\nType\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tactivex.html", "title": "TActiveX", "text": "Source:\nsource/classes/activex.prg\nInherits from:\nTControl\nTActiveX is FiveWin's ActiveX/COM container control that enables embedding\nActiveX components (such as WebBrowser, Windows Media Player, Adobe Reader,\nor any registered COM component) inside FiveWin windows and dialogs. It\nprovides direct access to the underlying\nOleObject\nfor invoking\nmethods, reading and writing properties, and handling events.\nKey DATA Members\nDATA\nType\nDescription\nhActiveX\nHandle\nWindow handle of the embedded ActiveX control\ncProgID\nCharacter\nProgID string (e.g. \"Shell.Explorer\", \"WMPlayer.OCX\")\naProperties\nArray\nList of property names browsable via OLE\naMethods\nArray\nList of method names browsable via OLE\naEvents\nArray\nList of event names provided by the control\nbOnEvent\nBlock\nCode block executed on each fired event\noOleAuto\nObject\nUnderlying OLE automation object\nMethods\nMethod\nDescription\nNew( oWnd, cProgID, nRow, nCol, nW, nH )\nCreate a new ActiveX control instance\nReDefine( nId, oWnd, cProgID )\nRedefine from a dialog resource placeholder\nDo( cMethod, ... )\nInvoke a method of the underlying OLE object\nGetProp( cName )\nRead a property value from the OLE object\nSetProp( cName, uVal )\nWrite a property value to the OLE object\nOnEvent( nEvent, aParams )\nEvent handler called on each ActiveX event\nExample: Embedding a WebBrowser Control\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oActiveX\n\n DEFINE WINDOW oWnd TITLE \"WebBrowser Embedded\" SIZE 800, 600\n\n oActiveX := TActiveX():New( oWnd, \"Shell.Explorer\", 10, 10, 780, 550 )\n\n // Navigate to a URL using the OLE object\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tanimate.html", "title": "TAnimate", "text": "Source:\nsource/classes/tanimate.prg\nInherits from:\nTControl\nTAnimate wraps the Windows animation common control to display AVI (Audio Video Interleaved)\nclip files. It is typically used to provide visual feedback during longer operations such as\nfile copying, searching, or printing. The control plays silent AVI clips in a fixed-size\nwindow and supports preset system animations.\nKey DATA Members\nDATA\nType\nDescription\ncAvi\nCharacter\nAVI file path or system animation resource name\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, lPixel, lDesign, nW, nH )\nCreate a new TAnimate control\nOpen( cAvi )\nOpen an AVI file or system animation for playback\nPlay( nFrom, nTo, nRepeat )\nPlay the animation from frame\nnFrom\nto\nnTo\n, repeating\nnRepeat\ntimes\nStop()\nStop the current playback\nClose()\nClose the AVI and release resources\nSeek( nFrame )\nSeek to a specific frame in the animation\nPreset System Animations\nThe following system AVI resource names can be passed to\nOpen()\nfor standard shell animations:\nName\nDescription\nAVI_FINDFILE\nMagnifying glass searching animation\nAVI_COPYFILE\nDocument being copied animation\nAVI_SEARCH\nSearch disk animation\nAVI_DELETE\nDocument being deleted (recycle) animation\nExample: File Copy Animation\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oAnimate\n\n DEFINE WINDOW oWnd TITLE \"Copying Files...\" SIZE 300, 150\n\n @ 10, 10 ANIMATE oAnimate SIZE 280, 80 OF oWnd\n\n oAnimate:Open( AVI_COPYFILE )\n oAnimate:Play( 1, 100, 0 ) // 0 = repeat indefinitely\n\n // Simulate a long operation\n // ... file copy code here ...\n\n oAnimate:Stop()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tautoget.html", "title": "TAutoGet / TGetList", "text": "Source:\nsource/classes/autoget.prg\nTAutoGet inherits from:\nTGet\n| TGetList inherits from:\nTControl\nTAutoGet extends TGet with an autocomplete dropdown list that appears as the user types, showing matching items from a data source (array or hash). The dropdown is implemented by TGetList, a companion class that renders a scrollable, gradient-styled item list with hover highlighting and keyboard navigation.\nTAutoGet DATA Members\nDATA\nType\nDescription\nuDataSource\nArray/Hash\nSource data for autocomplete suggestions\ncField\nCharacter/Numeric\nField or column index within the data source\noList\nObject\nReference to the TGetList dropdown window\nnLHeight\nNumeric\nMaximum height of the dropdown list (default 170)\nbCreateList\nBlock\nCode block to re-filter the list as the user types\naGradList\nArray\nGradient definition for the list background\naGradItem\nArray\nGradient definition for individual items\nnClrLine\nNumeric\nBorder/separator line color\nnClrSel\nNumeric\nHighlight color for selected item\nnClrText\nNumeric\nText color in the list\nTGetList DATA Members\nDATA\nType\nDescription\noGet\nObject\nReference to the parent TAutoGet control\nnRowHeight\nNumeric\nHeight of each list item row in pixels\nnMaxHeight\nNumeric\nMaximum allowed height for the list window\nnFirstRow\nNumeric\nFirst visible row index (for scrolling)\nnRowAt\nNumeric\nCurrently highlighted row\nMethods\nClass\nMethod\nDescription\nTAutoGet\nNew( nRow, nCol, bSetGet, oWnd, nW, nH, cPict, ... )\nCreate a new autocomplete GET control\nTAutoGet\nReDefine( nId, bSetGet, oWnd, ... )\nRedefine from a dialog resource\nTAutoGet\nSetList( uDataSource, cField )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbar.html", "title": "TBar", "text": "Source:\nsource/classes/bar.prg\nInherits from:\nTControl\nTBar is a button bar container that displays a horizontal or vertical strip of bitmap buttons\nwith optional group separators. It supports multiple visual styles including flat 3D, Office\n2007/2010/2013/2015 themes, GDI+ rendering, dark theme, and floating/dockable toolbars.\nKey DATA Members\nDATA\nType\nDescription\nnGroups\nNumeric\nNumber of button groups in the bar\nnMode\nNumeric\nDocking position: BAR_TOP(1), BAR_LEFT(2), BAR_RIGHT(3), BAR_DOWN(4), BAR_FLOAT(5)\nnBtnWidth\nNumeric\nButton width (default 28 pixels)\nnBtnHeight\nNumeric\nButton height (default 28 pixels)\nl3D\nLogical\nEnable 3D button borders\nl2007\nLogical\nOffice 2007 theme look\nl2010\nLogical\nOffice 2010 theme look\nl2013\nLogical\nOffice 2013 flat theme look\nl2015\nLogical\nOffice 2015 theme look\nlGDIP\nLogical\nEnable GDI+ rendering (read-only)\nlBorder\nLogical\nShow bar border\nbClrGrad\nCodeblock\nGradient color codeblock\nMethods\nMethod\nDescription\nNew( oWnd, nBtnW, nBtnH, l3D, cMode, oCursor, l2007, l2010, l2013, lBorder, oBrush, aGrad, nColor, lHScroll, l2015, nAlto, lGDIP, lDesign, cVarName )\nCreate a new TBar attached to\noWnd\nNewAt( nRow, nCol, nWidth, nHeight, nBtnW, nBtnH, oWnd, l3D, cMode )\nCreate a TBar at a specific position and size\nAdd( oBtnBmp, nPos )\nAdd a TButtonBmp to the bar\nAddGroup( nPos )\nInsert a visual group separator\nDel( nPos, lRefresh )\nRemove a button from the bar\nAdjust()\nRecalculate button positions and bar size\nFloat()\nUndock the bar into a floating window\nGoDown() / GoLeft() / GoRight() / GoTop()\nDock the bar to the specified edge\nSetDarkTheme()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbartabs.html", "title": "TBarTabs", "text": "Source:\nsource/classes/bartabs.prg\nStandalone class (not descendant of TControl)\nTBarTabs combines TTabs with TBar to create a ribbon-like tabbed toolbar interface.\nEach tab is associated with a separate toolbar that becomes visible when the tab is selected.\nThis provides a compact way to organize toolbar buttons into functional groups, similar to\nthe ribbon pattern found in modern desktop applications.\nKey DATA Members\nDATA\nType\nDescription\naBars\nArray\nArray of TBar objects, one per tab\noTabs\nObject\nTTabs control for switching between toolbars\noPanel\nObject\nTPanel container holding the tabs and buttons\noWnd\nObject\nParent window\nnBar\nNumeric\nIndex of the currently active toolbar tab\nMethods\nMethod\nDescription\nNew( oWnd, nBtnWidth, nBtnHeight, aPrompts, acBitmaps, nOption, l3D, l2007 )\nCreate a new TBarTabs control with initial tabs\nAddBar( cPrompt, cBitmap )\nAdd a new tab with its associated toolbar. Returns the TBar object.\nExample: Three-Tab Toolbar\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oBarTabs, oBar\n local aPrompts := { \"Home\", \"Insert\", \"View\" }\n local acBitmaps := {}\n\n DEFINE WINDOW oWnd TITLE \"BarTabs Demo\" SIZE 600, 200\n\n oBarTabs := TBarTabs():New( oWnd, 64, 32, aPrompts, acBitmaps, 1, .F., .T. )\n\n // Home tab buttons\n oBar := oBarTabs:aBars[ 1 ]\n DEFINE BUTTON OF oBar PROMPT \"Cut\"\n DEFINE BUTTON OF oBar PROMPT \"Copy\"\n DEFINE BUTTON OF oBar PROMPT \"Paste\"\n\n // Insert tab buttons\n oBar := oBarTabs:aBars[ 2 ]\n DEFINE BUTTON OF oBar PROMPT \"Table\"\n DEFINE BUTTON OF oBar PROMPT \"Image\"\n\n // View tab buttons\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbitmap.html", "title": "TBitmap", "text": "Source:\nsource/classes/bitmap.prg\nInherits from:\nTControl\nTBitmap is a control that displays a bitmap image from a file, resource, or handle. It supports zoom, transparency, alpha blending, stretch modes, and scrollable large images. The control can display BMP files embedded as resources or loaded from disk.\nKey DATA Members\nDATA\nType\nDescription\nhBitmap\nHandle\nHandle to the bitmap GDI object\nhPalette\nHandle\nHandle to the bitmap color palette\ncBmpFile\nCharacter\nBitmap file path on disk\ncResName\nCharacter\nBitmap resource name embedded in the EXE\nnZoom\nNumeric\nZoom factor (1 = original size)\nlTransparent\nLogical\nEnable transparent background drawing\nlStretch\nLogical\nStretch bitmap to fit the control dimensions\nlAspectRatio\nLogical\nScale proportionally, center the image and leave the remaining area in the control background color; off by default\nnImgWidth\nNumeric\nOriginal bitmap width in pixels\nnImgHeight\nNumeric\nOriginal bitmap height in pixels\nlHasAlpha\nLogical\nWhether the bitmap has an alpha channel\naHotAreas\nArray\nArray of clickable hot areas on the bitmap\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, cRes, cFile, lNoBorder, oWnd, bLClicked, bRClicked, lScroll, lStretch, oCursor, cMsg, lUpdate, bWhen, lPixel, bValid, lDesign, lAspectRatio )\nCreate a new bitmap control\nReDefine( nId, cRes, cFile, oWnd, ... )\nRedefine from a dialog resource placeholder\nLoadImage( cResName, cBmpFile )\nLoad bitmap from resource name or disk file\nLoadBMP( cBmpFile )\nLoad a bitmap from disk by filename\nSetBMP( cResName )\nLoad a bitmap from a resource name\nZoom( nZoom )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbtnbmp.html", "title": "TBtnBmp", "text": "Source:\nsource/classes/tbtnbmp.prg\nOverview\nTBtnBmp class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbtnclr.html", "title": "TBtnClr", "text": "Source:\nsource/classes/tbtnclr.prg\nOverview\nTBtnClr class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbtnflat.html", "title": "TBtnFlat", "text": "Source:\nsource/classes/btnflat.prg\nInherits from:\nTControl\nTBtnFlat is a flat borderless button with a hover highlight effect. It draws its caption centered over a solid color background and reacts to mouse clicks via a code block action. The button can optionally display a border, and its text and pane colors are fully customizable.\nKey DATA Members\nDATA\nType\nDescription\ncCaption\nCharacter\nButton caption text\nbAction\nBlock\nCode block executed when the button is clicked\nnClrText\nNumeric\nText color (RGB value, default CLR_WHITE)\nnClrPane\nNumeric\nBackground pane color (RGB value, default CLR_BLUE)\noFont\nObject\nFont object for the caption text\nlBorder\nLogical\nShow a border around the button\nlTransparent\nLogical\nTransparent background (no fill)\nlPressed\nLogical\nWhether the button is currently pressed\nnClrTextDis\nNumeric\nText color when disabled\nnClrPaneDis\nNumeric\nPane color when disabled\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, cPrompt, oWnd, oFont, bAction, bWhen, lUpdate, lBorder, nClrText, nClrPane, lCancel, lDefault )\nCreate a new flat button\nReDefine( nId, bAction, oWnd, ... )\nRedefine from a dialog resource\nClick()\nExecute the button action (evaluates bWhen, then bAction)\nPaint()\nDraw the button background and centered caption\nLButtonDown( nRow, nCol, nFlags )\nHandle mouse down with working state tracking\nLButtonUp( nRow, nCol )\nHandle mouse up and trigger click if within control\nDrawMultiLine( cText, oFont, nColor, nAlign )\nDraw multi-line caption text with alignment\nExample: Flat Button with Hover\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbutton.html", "title": "TButton / TBtnBmp", "text": "Standard push buttons and bitmap buttons for dialogs and toolbars\nTButton\nSource:\nsource/classes/button.prg\n|\nParent:\nTControl\nTButton\nwraps the standard Windows push button control. It is the most basic interactive element -- a labeled rectangle that executes an action when clicked. Buttons can be designated as the\ndefault\nbutton (activated by Enter) or the\ncancel\nbutton (activated by Escape).\nClass Hierarchy\n[diagrama]\nTButton Properties\nProperty\nType\nDescription\nbAction\nBlock\nCode block executed when the button is clicked\nlDefault\nLogical\nIf\n.T.\n, this is the default button (Enter key activates it)\nlCancel\nLogical\nIf\n.T.\n, this is the cancel button (Escape key activates it)\ncCaption\nString\nText displayed on the button face\nlProcessing\nLogical\nInternal reentrancy guard -- prevents double-clicks from firing the action twice\nTButton Methods\nMethod\nDescription\nNew( nRow, nCol, cCaption, oWnd, bAction, nWidth, nHeight, ... )\nConstructor. Creates a new button at the given position.\nReDefine( nId, bAction, oWnd, ... )\nRedefine a button from a dialog resource (RC file).\nClick()\nProgrammatically trigger the button's action.\nSetFocus()\nMove keyboard focus to this button.\nTButton Command Syntax\nCÓDIGO:\n@ nRow, nCol BUTTON oBtn PROMPT \"text\" ;\n [ OF oWnd ] ;\n [ SIZE nWidth, nHeight ] ;\n [ ACTION codeblock ] ;\n [ DEFAULT ] ;\n [ CANCEL ] ;\n [ FONT oFont ] ;\n [ WHEN bWhen ]\nButton State Machine\n[diagrama]\nTBtnBmp\nSource:\nsource/classes/btnbmp.prg\n|\nParent:\nTControl\nTBtnBmp\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tbuttonbmp.html", "title": "TButtonBmp", "text": "Source:\nsource/classes/buttonb.prg\nInherits from:\nTButton\nTButtonBmp is a push button that displays a bitmap image alongside or instead of text.\nIt supports multiple image formats, alpha-channel transparency, GDI+ rendering, color\nmapping, and flexible text positioning. TButtonBmp is commonly used inside TBar and\nTRibbonBar controls.\nKey DATA Members\nDATA\nType\nDescription\naPalBmp\nArray\nInternal array holding bitmap handles, palette, alpha info, and file name\ncPosText\nCharacter\nText position:\nTEXTTOP\n,\nTEXTBOTTOM\n,\nTEXTLEFT\n,\nTEXTRIGHT\ncLayOut\nCharacter\nLayout string for image/text arrangement\nlBmpTransparent\nLogical\nEnable bitmap transparency (default .T.)\nlGDIP\nLogical\nEnable GDI+ rendering (read-only)\nbColorMap\nCodeblock\nColor mapping codeblock for image recoloring\nbAlphaLevel\nCodeblock\nAlpha transparency level codeblock\nlHasAlpha\nLogical\nWhether loaded bitmap has alpha channel (read-only access)\ncBitmap\nCharacter\nBitmap file name or resource name (read-only access)\nMethods\nMethod\nDescription\nNew( nRow, nCol, cCaption, oWnd, bAction, nW, nH, nHelpId, oFont, lDefault, lPixel, lDesign, cMsg, lUpdate, bWhen, bValid, lCancel, cBitmap, cPosText, cToolTip, lFlat, cLayOut, lGDIP, lRelPix )\nCreate a new bitmap button\nReDefine( nId, bAction, oWnd, nHelpId, cMsg, lUpdate, bWhen, bValid, cPrompt, lCancel, cBitmap, cPosText, cToolTip, lGDIP )\nRedefine from dialog resource\nLoadBitmap( cBmpName )\nLoad a bitmap from file or resource\nPaint()\nRender the button with its bitmap and text\nHasAlpha()\nReturn\n.T.\nif the bitmap has an alpha channel\nnAlphaLevel( uNew )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcalendar.html", "title": "TCalendar", "text": "Source:\nsource/classes/tcalenda.prg\nInherits from:\nTControl\nTCalendar wraps the Windows month calendar common control for date selection.\nIt supports single and multi-select date ranges, week number display, day state highlighting,\ntoday indicator suppression, and extensive color customization of all calendar elements.\nCommand Syntax\nCÓDIGO:\n@ nRow, nCol CALENDAR oCal VAR dDate OF oWnd SIZE nW, nH ON CHANGE bBlock\nKey DATA Members\nDATA\nType\nDescription\ndDate\nDate\nCurrently selected date\ndDateEnd\nDate\nEnd date in multi-select mode\nlMultiselect\nLogical\nEnable multiple date selection\nlWeekNumbers\nLogical\nShow week number column\nlNoToday\nLogical\nHide the \"Today\" date footer\nlNoTodayCircle\nLogical\nHide the circle around today's date\nbAction\nCode block\nExecuted on double-click\nbLDblClick\nCode block\nLeft double-click handler\naDayState\nArray\nArray of day state bitmaps for bold/highlight\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, bSetGet2, oWnd, nWidth, nHeight, bValid, nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg, lUpdate, lMultiselect, bWhen, bChange, nHelpId, bAction, bLDblClick, lWeekNumbers, lNoTodayCircle, lNoToday, lDayState )\nCreate a new TCalendar control\nReDefine( nId, oWnd, bSetGet, bSetGet2, oWnd, nHelpId, nClrFore, nClrBack, oFont, oCursor, cMsg, lUpdate, lMultiselect, bWhen, bValid, bChanged, bAction, bLDblClick )\nRedefine from dialog resource\nGetDate()\nRetrieve the currently selected date\nSetDate( dDate )\nSet the calendar to a specific date\nSetRange( dDateStart, dDateEnd, nFlags )\nRestrict selectable date range\nGetDateRange()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcalex.html", "title": "TCalEx", "text": "Source:\nsource/classes/tcalex.prg\nInherits from:\nTControl\nTCalEx is the base class for FiveWin's extended calendar and scheduling controls.\nIt provides a full-featured date navigation system with support for multiple views\n(month, week, day), appointment/event management, custom gradient rendering, and\ninteractive mouse-based selection. The class is designed to handle complex scheduling\nUIs with configurable time intervals, date ranges, and visual styling.\nTCalEx manages three sub-view objects --\noMonthView\n,\noWeekView\n,\nand\noDayView\n-- which handle the actual rendering and event handling for\neach specific view mode. The active view is controlled via\nSetMonthView()\n,\nSetWeekView()\n, and\nSetDayView()\nmethods.\nKey DATA Members\nDATA\nType\nDescription\ndStart\nDate\nStart date of the visible range\ndEnd\nDate\nEnd date of the visible range\ndDate\nDate\nCurrently displayed date\ndDateSelected\nDate\nDate currently selected by the user\nhCalInfo\nHash\nHash table of calendar info (appointment/event) objects\noMonthView\nObject\nTMonthView sub-view for month display\noWeekView\nObject\nTWeekView sub-view for week display\noDayView\nObject\nTDayView sub-view for day display\nnStartHour\nNumeric\nFirst visible hour (0-23)\nnEndHour\nNumeric\nLast visible hour (0-23)\nnInterval\nNumeric\nTime slot interval in minutes (5, 10, 15, 20, 30, 60)\nlAmPm\nLogical\nDisplay time in AM/PM format\nlLeftLabel\nLogical\nShow/hide left time labels\nnColorGrid\nNumeric\nGrid line color\nnColorGridToday\nNumeric\nToday grid line color\naGradCellNormal\nArray\nGradient colors for normal cells\naGradCellSelected\nArray\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcalviews.html", "title": "TCalViews: TDayView, TWeekView, TMonthView", "text": "Source:\nsource/classes/tdayv.prg\n,\nsource/classes/tweekv.prg\n,\nsource/classes/tmonthv.prg\nEach inherits from:\nTCalEx\nTDayView, TWeekView, and TMonthView are the three sub-view classes used by TCalEx\nto render different calendar perspectives. Each view inherits from TCalEx and provides\nspecialized rendering, navigation, and event handling for its specific time granularity.\nThe active view is set via TCalEx methods\nSetDayView()\n,\nSetWeekView()\n,\nand\nSetMonthView()\n.\nTDayView - Day View\nTDayView displays a single day with a time-slot grid. The grid is divided into rows\nrepresenting time intervals (controlled by\nnInterval\nin TCalEx) between\nnStartHour\nand\nnEndHour\n. Each appointment or event appears as\na colored block spanning its duration. Users can click on empty slots to create new\nevents and drag existing events to reschedule.\nKey DATA\nDATA\nType\nDescription\nnRowCount\nNumeric\nTotal number of time-slot rows in the grid\nnRowHeight\nNumeric\nHeight of each time-slot row in pixels\nMethods\nMethod\nDescription\nNew( oCalex )\nCreate a TDayView bound to a TCalEx parent\nGoNextDay()\nNavigate to the next day\nGoPrevDay()\nNavigate to the previous day\nSetDate( dDate )\nSet the view to a specific date\nExample: Switch to Day View\nCÓDIGO:\n// Assume oCal is a TCalEx instance\noCal:SetDayView( dDate(), 30 ) // 30-minute intervals\nTWeekView - Week View\nTWeekView displays a full week (7 days) with time-slot rows for each day. Each column\nrepresents one day of the week, and each row represents a time interval. Events are\nrendered as colored blocks spanning their time range within each day column. […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcbrowse.html", "title": "TCBrowse", "text": "Source:\nsource/classes/tcbrowse.prg\nInherits from:\nTWBrowse\nTCBrowse is a column-based browse control that extends TWBrowse with multi-column\nsupport, column drag-reorder, frozen columns, incremental seek, inline editing,\nbitmap columns, and built-in report generation. It can be bound to both arrays and\nDBF objects, making it a versatile data-browsing control for tabular data.\nKey DATA Members\nDATA\nType\nDescription\naColumns\nArray\nArray of TCColumn objects defining each column\naArray\nArray\nData array when browsing array data\nlNoHScroll\nLogical\nHide horizontal scroll bar\nnFreeze\nNumeric\nNumber of leftmost frozen columns (0 = none)\nnColOrder\nNumeric\nCurrent sort column index\naImages\nArray\nArray of bitmap file names for image columns\naBitmaps\nArray\nArray of bitmap handles for image columns\noDbf\nObject\nBound TDatabase object (when browsing DBF)\nlColDrag\nLogical\nEnable column drag-reorder\ncSeek\nCharacter\nIncremental seek string\nbSeekChange\nCodeblock\nCodeblock fired when seek string changes\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, bLine, aHeaders, aColSizes, oWnd, cField, uVal1, uVal2, bChange, bLDblClick, bRClick, oFont, oCursor, nClrFore, nClrBack, cMsg, lUpdate, cAlias, lPixel, bWhen, lDesign, bValid )\nCreate a new TCBrowse control\nReDefine( nId, bLine, oDlg, aHeaders, aColSizes, ... )\nRedefine from dialog resource\nAddColumn( oColumn )\nAdd a TCColumn to the browse\nSetArray( aArray )\nSet the data source to an array\nSetoDBF( oDbf )\nSet the data source to a TDatabase object\nLoadFields()\nAuto-create columns from the current DBF structure\nReport( cTitle, lPreview )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tccolumn.html", "title": "TCColumn", "text": "Source:\nsource/classes/tccolumn.prg\nStandalone class\nTCColumn defines a single column within a TCBrowse control. Each column has a heading,\ndata codeblock, picture clause, alignment, width, optional foreground/background colors,\ninline editing support, and bitmap display capability. Columns can be serialized for the\nVisual FiveWin IDE designer.\nKey DATA Members\nDATA\nType\nDescription\ncHeading\nCharacter\nColumn header text displayed in the browse header row\nbData\nCodeblock\nCodeblock that returns the cell value for each row\ncPicture\nCharacter\nPicture clause for formatting cell values\nbClrFore\nCodeblock\nCodeblock returning foreground color per cell\nbClrBack\nCodeblock\nCodeblock returning background color per cell\nnAlign\nNumeric\nText alignment:\nDT_LEFT\n(0),\nDT_CENTER\n(1),\nDT_RIGHT\n(2)\nnWidth\nNumeric\nColumn width in dialog units (auto-calculated if not specified)\nlBitMap\nLogical\nColumn displays bitmaps instead of text\nlEdit\nLogical\nAllow in-place editing of cells\nbValid\nCodeblock\nEdit validation codeblock (return\n.T.\nto accept)\ncOrder\nCharacter\nIndex tag name for ordering\ncMsg\nCharacter\nStatus bar message when editing this column\ncError\nCharacter\nError message displayed when validation fails\nMethods\nMethod\nDescription\nNew( cHeading, bData, cPicture, bClrFore, bClrBack, uAlign, nWidth, lBitMap, lEdit, cMsg, bValid, cError, lNoLite, cOrder )\nCreate a new TCColumn definition\nLoad( cInfo )\nLoad column properties from a string (VisualFW designer)\nSave()\nSerialize column properties to a string (VisualFW designer)\nExample: Column with Conditional Color\nCÓDIGO:\n#include \"FiveWin.ch\"\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcheckbox.html", "title": "TCheckBox / TRadio", "text": "Boolean checkboxes and mutually-exclusive radio button groups\nTCheckBox\nSource:\nsource/classes/checkbox.prg\n|\nParent:\nTControl\nTCheckBox\nwraps the standard Windows checkbox control. It binds to a logical variable --\n.T.\nwhen checked,\n.F.\nwhen unchecked. Checkboxes are independent; any number can be checked simultaneously.\nTCheckBox Properties\nProperty\nType\nDescription\nbSetGet\nBlock\nData-binding block that reads/writes the logical variable\ncCaption\nString\nText displayed beside the checkbox\nlChecked\nLogical\nCurrent checked state\nTCheckBox Methods\nMethod\nDescription\nNew( nRow, nCol, cCaption, bSetGet, oWnd, ... )\nConstructor.\nClick()\nToggle the check state and evaluate\nbSetGet\n.\nCheck()\nSet checked state to\n.T.\nUnCheck()\nSet checked state to\n.F.\nSetCheck( lOnOff )\nSet checked state to the given value.\nlIsChecked()\nReturns the current visual check state from the Windows API.\nRefresh()\nRe-read the bound variable and update the visual state.\nTCheckBox Command\nCÓDIGO:\n@ nRow, nCol CHECKBOX oChk VAR lVar ;\n PROMPT \"Label text\" ;\n [ OF oWnd ] ;\n [ SIZE nWidth, nHeight ] ;\n [ ON CHANGE bChange ] ;\n [ WHEN bWhen ] ;\n [ FONT oFont ]\nTRadio and TRadMenu\nSource:\nsource/classes/radio.prg\n|\nParent:\nTControl\nTRadio\nrepresents a single radio button. Radio buttons are\nmutually exclusive\nwithin a group -- selecting one deselects all others. The group is managed by a\nTRadMenu\nobject, which binds to a numeric variable indicating which option is selected (1-based).\nRadio Group Architecture\n[diagrama]\nTRadio Properties\nProperty\nType\nDescription\noRadMenu\nObject\nReference to the\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tchoosegradient.html", "title": "TChooseGradient", "text": "Source:\nsource/classes/tchoosegradient.prg\nOverview\nTChooseGradient class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tclipget.html", "title": "TClipGet", "text": "Source:\nsource/classes/tclipget.prg\nInherits from:\nTGet\nTClipGet is a clipboard-aware GET control that extends the standard TGet with enhanced clipboard operations. It is created via the convenience function\nFWGetNew()\nwhich returns a configured GET object. TClipGet provides standard cut, copy, and paste behavior with proper handling of formatted clipboard content.\nKey DATA Members\nTClipGet inherits all DATA members from\nTGet\nincluding\nbVar\n,\ncVar\n,\ncPicture\n,\ncColor\n, and standard edit control properties. It does not introduce additional DATA members beyond the TGet inheritance chain.\nMethods\nMethod / Function\nDescription\nFWGetNew( nRow, nCol, bVar, cVar, cPic, cColor )\nConvenience function that creates and returns a TClipGet object bound to a variable with optional picture and color clauses.\nExample: Clipboard-Enabled GET\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oGet\n local cName := Space( 30 )\n\n DEFINE WINDOW oWnd TITLE \"Clipboard GET\" SIZE 400, 150\n\n @ 40, 20 GET oGet VAR cName SIZE 200, 20 OF oWnd\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTClipGet inherits all standard TGet clipboard functionality:\nCtrl+C\ncopies,\nCtrl+V\npastes,\nCtrl+X\ncuts. The class adds safeguards for formatted clipboard content.\nThe\nFWGetNew()\nfunction provides a compact one-call constructor alternative to the standard\n@ ... GET\ncommand syntax.\nLike all TGet-based controls, the picture clause (\ncPicture\n) controls input masking and formatting. Standard TGet picture tokens (\n9\n,\nN\n,\nA\n,\n!\n, etc.) apply.\nUse\nSET GET oGet FOCUS\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcombobox.html", "title": "TComboBox", "text": "Drop-down selection control with multiple styles and data binding\nSource:\nsource/classes/combobox.prg\n|\nParent:\nTControl\nOverview\nTComboBox\nwraps the Windows ComboBox control, providing a drop-down list from which the user selects one item. It supports three styles:\nCBS_DROPDOWN\n(default) -- editable text field with a drop-down list\nCBS_DROPDOWNLIST\n-- non-editable; the user can only select from the list\nCBS_SIMPLE\n-- editable text field with an always-visible list\nThe combo can bind to either a\nstring variable\n(the selected item text) or a\nnumeric variable\n(the selected item index). It supports incremental search, custom drawing, and data-driven item lists.\nComboBox Styles\n[diagrama]\nKey Properties\nProperty\nType\nDescription\naItems\nArray\nArray of strings displayed in the drop-down list\nbSetGet\nBlock\nData-binding block. For string combos: reads/writes the selected text. For numeric combos: reads/writes the selected index.\nbChange\nBlock\nCode block executed when the selection changes\nnAt\nNumeric\nIndex of the currently selected item (1-based)\nlIncSearch\nLogical\nEnable incremental search as the user types\nlOwnerDraw\nLogical\nEnable custom item drawing via\nbDrawItem\nbDrawItem\nBlock\nCustom drawing block for owner-draw mode\ncCueText\nString\nPlaceholder text when nothing is selected\nnDropWidth\nNumeric\nWidth of the drop-down list (can be wider than the control itself)\nKey Methods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, aItems, ... )\nConstructor. Creates a new combo at the given position.\nReDefine( nId, bSetGet, aItems, oWnd, ... )\nRedefine from a dialog resource.\nSet( cText )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcombometro.html", "title": "TComboMetro", "text": "Source:\nsource/classes/tcombometro.prg\nOverview\nTComboMetro class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tcoverflow.html", "title": "TCoverFlow", "text": "Source:\nsource/classes/tcvrflow.prg\nInherits from:\nTControl\nTCoverFlow is a cover-flow image browser control inspired by the iTunes / Apple Cover Flow\nuser interface. It displays a horizontal row of images with the center item enlarged and\nthe side items angled outward. Users can navigate left and right via mouse clicks, keyboard\narrows, or programmatic calls.\nKey DATA Members\nDATA\nType\nDescription\naCovers\nArray\nArray of cover definitions (bitmap, text, color)\nnAt\nNumeric\nIndex of the currently selected cover\nnAngle\nNumeric\nAngle (in degrees) applied to side covers\nnSeparation\nNumeric\nPixel separation between covers\nnCoverWidth\nNumeric\nWidth of each cover image\nbAction\nBlock\nCode block evaluated when a cover is selected\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight, oWnd )\nCreate a new TCoverFlow control\nAddCover( cBmp, cText, nClrText )\nAdd a cover with bitmap, caption, and text color\nGoLeft()\nNavigate one cover to the left\nGoRight()\nNavigate one cover to the right\nGoTo( n )\nJump directly to the cover at index\nn\nAtCover( nRow, nCol )\nReturn the cover index at the given pixel coordinates\nExample: Album Browser\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oCover, aCovers := { \"cover1.jpg\", \"cover2.jpg\", \"cover3.jpg\" }\n\n DEFINE WINDOW oWnd TITLE \"Album Browser\" SIZE 800, 400\n\n @ 20, 20 COVERFLOW oCover ;\n SIZE 760, 320 OF oWnd ;\n ACTION ( MsgInfo( \"Selected cover #\" + Str( oCover:nAt ) ) )\n\n oCover:AddCover( \"cover1.jpg\", \"Album One\", CLR_WHITE )\n oCover:AddCover( \"cover2.jpg\", \"Album Two\", CLR_WHITE )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tdlgfind.html", "title": "TDlgFind", "text": "Source:\nsource/classes/dlgfind.prg\nInherits from:\nTDialog\nTDlgFind wraps the standard Windows Find Text common dialog (\nFindText\nAPI). It is a modeless dialog managed by Windows that allows users to search for text within an application. The dialog sends notification messages back to the caller when the user clicks \"Find Next\".\nMethods\nMethod\nDescription\nNew( cText, oWnd, bSearch )\nCreate the Find dialog with initial text, owner window, and search action block\nFree Function\nFunction\nDescription\nDlgFindText( cText, oWnd, bSearch )\n-> oDlg\nConvenience function that creates and returns a TDlgFind object\nExample: Find Dialog with Search Callback\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oDlg\n\n DEFINE WINDOW oWnd TITLE \"Find Demo\" SIZE 600, 400\n\n oDlg = DlgFindText( \"search text\", oWnd, {|cText,lDir| MySearch( cText, lDir ) } )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\n\nfunction MySearch( cText, lForward )\n\n // Perform search in your edit control\n ? \"Searching for:\", cText, If( lForward, \"forward\", \"backward\" )\n\nreturn nil\nNotes\nThe Find dialog is modeless (\nlModal = .F.\n). The application continues processing while it is open.\nThe\nbSearch\nblock receives the search text and a logical direction flag (.T. = forward, .F. = backward).\nThe dialog is automatically centered within its owner window.\nInternally, the\nFindText()\nWindows API creates the dialog; TDlgFind subclasses it via\nRegDialog()\nto handle events.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tdtpicker.html", "title": "TDatePick", "text": "Source:\nsource/classes/tdtpicke.prg\nInherits from:\nTControl\nTDatePick wraps the Windows date and time picker common control (\nSysDateTimePick32\n).\nIt provides a drop-down calendar for date selection and supports both date-only and date-time\nmodes with configurable display formats, range restrictions, and multi-select capability.\nCommand Syntax\nCÓDIGO:\n@ nRow, nCol DTPICKER oDtp VAR dDate SIZE nW, nH PIXEL OF oWnd ;\n PICTURE cFmt ON CHANGE bBlock\nKey DATA Members\nDATA\nType\nDescription\nlDateTime\nLogical\nEnable date-time mode (T value) instead of date-only\ncPicture\nCharacter\nDisplay format picture (e.g., \"dd/mm/yyyy\")\nlMultiSelect\nLogical\nEnable multi-date selection in the drop-down calendar\nlNoToday\nLogical\nHide the \"Today\" button at the bottom of the drop-down\nnMaxSelDays\nNumeric\nMaximum number of selectable days in multi-select mode\nlWeekNumbers\nLogical\nShow week numbers in the drop-down calendar\nlNoTodayCircle\nLogical\nHide the circle around today's date in the drop-down\nlNoTrailingDates\nLogical\nHide dates from previous/next months\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, oWnd, nWidth, nHeight, bValid, nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg, lUpdate, bWhen, bChange, nHelpId, cPic, nStyle )\nCreate a new TDatePick control\nReDefine( nId, bSetGet, oWnd, nHelpId, nClrFore, nClrBack, oFont, oCursor, cMsg, lUpdate, bWhen, bValid, bChanged, cPic )\nRedefine from dialog resource\nSetDate( dDate, lEmpty )\nSet the picker to a specific date (optionally allow empty)\nGetDate()\nRetrieve the currently selected date or datetime value\nSetRange( dFrom, dUpto )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tedit.html", "title": "TEdit", "text": "Source:\nsource/classes/edit.prg\nInherits from:\nTControl\nTEdit wraps the standard Windows EDIT control, supporting both single-line and multi-line text editing. It features picture clause formatting, password mode, read-only mode, cue banners, character limits, and alignment options (left, right, center). TEdit is especially useful for multi-line text wherever TGet is too constrained.\nKey DATA Members\nDATA\nType\nDescription\nbSetGet\nBlock\nCode block to get/set the bound variable\nlReadOnly\nLogical\nWhen true, the edit text cannot be modified\nlPassword\nLogical\nPassword mode (displays bullets instead of characters)\nlMultiLine\nLogical\nMulti-line edit mode with scrollbars\nnLimitChars\nNumeric\nMaximum number of characters allowed\ncPicture\nCharacter\nPicture clause for formatted display (e.g. \"999.99\")\ncCueText\nCharacter\nWatermark/cue banner text shown when empty\nbHScroll\nBlock\nCode block evaluated on horizontal scroll events\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, oWnd, nW, nH, lPixel, oFont, cPict, bChanged, bUpdate, bHScroll, lMultiLine, lReadOnly, lPassword, lRight, lCenter, lNumber, lUpper, lUpdate, bWhen, bValid, lLimitText, nLimitChars, cCueText )\nCreate a new EDIT control\nReDefine( nId, oWnd, bSetGet, ... )\nRedefine from a dialog resource\nSetSel( nStart, nEnd )\nSelect a range of text characters\nSelectAll()\nSelect all text in the control\nSetLimitText( n )\nSet the maximum text length (EM_LIMITTEXT)\nSetCueBanner( lOnFocus, cText )\nSet the cue banner (watermark) text\nVarPut( uVal )\nSet the bound variable to a new value\ncText( uVal )\nGet or set the edit window text\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/texplorerbar.html", "title": "TExplorerBar", "text": "Source:\nsource/classes/texplbar.prg\nInherits from:\nTControl\nTExplorerBar is an Outlook-style vertical task panel with collapsible sections and gradient headers.\nEach section is represented by a TTaskPanel child object that can be expanded or collapsed by clicking\nits title bar. The panel supports vertical scrolling when content exceeds the visible area, making\nit suitable for navigation menus, task lists, and property groups.\nCommand Syntax\nCÓDIGO:\n@ nRow, nCol EXPLORERBAR oBar OF oWnd SIZE nW, nH\nKey DATA Members\nDATA\nType\nDescription\naPanels\nArray\nArray of TTaskPanel objects added to the bar\nnTopColor\nNumeric\nTop gradient color for the bar background (default RGB(122,161,230))\nnBottomColor\nNumeric\nBottom gradient color for the bar background (default RGB(99,117,214))\noVScroll\nObject\nVertical scrollbar control for scrolling panel content\nnVPos\nNumeric\nCurrent vertical scroll position\nnVirtualHeight\nNumeric\nTotal virtual height of all panels combined\nnVirtualTop\nNumeric\nCurrent scroll offset from the top\nlSBVisible\nLogical\nScrollbar visibility flag\naGradient\nArray\nCustom gradient definition for panel headers\nbClrGrad\nBlock\nCode block returning custom gradient colors\nTTaskPanel Class (Child of TExplorerBar)\nDATA\nType\nDescription\ncTitle\nCharacter\nPanel section title displayed in the header\nnTitleHeight\nNumeric\nHeight of the clickable title bar (default 25)\nnBodyHeight\nNumeric\nHeight of the body area when expanded (default 50)\nlCollapsed\nLogical\nWhether the panel is currently collapsed\naLinks\nArray\nArray of TUrlLink controls added via AddLink()\naGradient\nArray\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/texplorerlist.html", "title": "TExplorerList", "text": "Source:\nsource/classes/texplorerlist.prg\nOverview\nTExplorerList class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tfline.html", "title": "TFLine", "text": "Source:\nsource/classes/fline.prg\nStandalone class\nTFLine (Formatted Line) is a utility class for composing a formatted line from multiple\nstyled text fragments. Each fragment can have its own font, color, and alignment. TFLine\nis used in conjunction with\nTSay:oLine\nto render rich text labels and with\nTReport\n's\nformatted line output. The class maintains an array of text, font, and color triplets that\nare drawn as a single line with word wrap controlled by\nlCrLf\n.\nKey DATA Members\nDATA\nType\nDescription\noUp\nObject\nLinked upstream object (used in line chains)\noDown\nObject\nLinked downstream object\nnalign\nNumeric\nLine alignment value (0 = default)\naText\nArray\nArray of text strings for each fragment\naFonts\nArray\nArray of font objects or indexes for each fragment\naColors\nArray\nArray of color values for each fragment\nlCrLf\nLogical\nInsert carriage return/line feed after this line\nMethods\nMethod\nDescription\nNew( nalign, aText, aFonts, aColors, lCrLf )\nCreate a formatted line with the given fragments. Defaults:\n{}\n,\n{}\n,\n{}\n,\n0\n,\n.F.\nEnd()\nRelease linked objects (sets\noUp\nand\noDown\nto NIL)\nExample: Styled Text Fragments\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction FormattedLabel()\n\n local oSay, oLine\n\n DEFINE FONT oFont1 NAME \"Arial\" SIZE 0, -24\n DEFINE FONT oFont2 NAME \"Arial\" SIZE 0, -18 BOLD\n\n oLine := TFLine():New( 0, ;\n { \"Welcome \", \"FiveWin \", \"User\" }, ;\n { oFont1, oFont2, oFont1 }, ;\n { CLR_BLUE, CLR_RED, CLR_BLACK } )\n\n // Use oLine with TSay for display\n @ 10, 10 SAY oSay PROMPT \"\" OF oWnd SIZE 300, 50\n oSay:oLine := oLine\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tfolder.html", "title": "TFolder", "text": "Tab folder control for organizing complex dialogs into pages\nSource:\nsource/classes/folder.prg\n|\nParent:\nTControl\nOverview\nTFolder\nimplements a Windows tab control. Each tab page is an independent\nTDialog\nobject, so you can place any controls on each page using standard dialog syntax. The folder manages which page is visible when the user clicks a tab.\nKey features:\nEach page is a full\nTDialog\n-- any control can be placed on it\nTab icons via\noImageList\nProgrammatic page switching via\nnOption\nTabs at top or bottom\nDynamic page adding/removing at runtime\nPage Composition\n[diagrama]\nKey Properties\nProperty\nType\nDescription\naPrompts\nArray\nArray of strings for each tab label (e.g.\n{\"General\", \"Details\", \"Notes\"}\n)\naDialogs\nArray\nArray of\nTDialog\nobjects, one per tab page\nnOption\nNumeric\nIndex of the currently selected tab (1-based). Set this to switch pages programmatically.\noImageList\nObject\nOptional\nTImageList\nproviding icons for each tab\nbChange\nBlock\nCode block executed when the user switches tabs\nlBottom\nLogical\nWhen\n.T.\n, tabs appear at the bottom instead of the top\nnTabHeight\nNumeric\nHeight of the tab strip in pixels\nKey Methods\nMethod\nDescription\nNew( nRow, nCol, oWnd, aPrompts, ... )\nConstructor. Creates the folder with the given tab labels.\nAddPage( cPrompt, oDlg )\nAdd a new page at runtime.\nDelPage( nPage )\nRemove a page at runtime.\nSetOption( n )\nSwitch to page\nn\nprogrammatically. If the control with focus on the current page has a pending\nVALID\n(e.g. a\nTGet\n), it is evaluated first; when it returns\n.F.\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tfolderex.html", "title": "TFolderEx", "text": "Source:\nsource/classes/tfoldex.prg\nInherits from:\nTControl\nTFolderEx is an extended tabbed folder control that supports multiple tab layouts (top, left, bottom, right), gradient rendering, bitmaps per tab, animation, drag-reordering, per-tab enable/disable/hide, and multi-line tabs. It is the primary tab control used in modern FWH applications, offering a rich alternative to the standard TFolder.\nKey DATA Members\nDATA\nType\nDescription\naDialogs\nArray\nArray of child dialog objects for each tab page\naPrompts\nArray\nArray of tab caption strings\naEnable\nArray\nArray of logical values: enabled state per tab\naBitmaps\nArray\nArray of bitmap handles for each tab icon\naAlign\nArray\nPer-tab text alignment: AL_LEFT, AL_RIGHT, AL_CENTER\nnLayOut\nNumeric\nTab position: TOP (1), LEFT (2), BOTTOM (3), RIGHT (4)\nnOption\nNumeric\nCurrently selected tab index (1-based)\nnOver\nNumeric\nTab index that the mouse is currently hovering over\nnSeparator\nNumeric\nPixel gap between adjacent tabs\nnRound\nNumeric\nCorner radius for tab backgrounds\naGradSel\nArray\nGradient for the selected tab\naGradUnsel\nArray\nGradient for unselected tabs\naGradOver\nArray\nGradient for the hovered tab\naGradDis\nArray\nGradient for disabled tabs\nlAnimation\nLogical\nEnable animated transition when switching tabs\nlMultiLine\nLogical\nAllow tabs to wrap to multiple rows\nlStretch\nLogical\nStretch tabs to fill the available width\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, oWnd, aBitmaps, lPixel, lDesign, aPrompts, nFolH, nLayOut, ... )\nCreate an extended folder with prompts, bitmaps, layout direction and gradients\nSetOption( nOption )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tgantt.html", "title": "TGantt", "text": "Source:\nsource/classes/gantt.prg\nInherits from:\nTControl\nTGantt is FiveWin's Gantt chart control for project scheduling and timeline visualization.\nIt displays horizontal bars across a time-based grid, where each bar represents a task\nwith its start and end dates. The control supports interactive mouse operations, month-day\ngrid views, and dynamic recalculation.\nKey DATA Members\nDATA\nType\nDefault\nDescription\naItems\nArray\n{}\nArray of TGanttItem objects\nnCellWidth\nNumeric\n28\nWidth of each grid cell in pixels\nnCellHeight\nNumeric\n25\nHeight of each grid cell in pixels\nnCols\nNumeric\n31\nNumber of grid columns (typically days in month)\nnRows\nNumeric\n6\nNumber of grid rows (tasks)\nlGridMonth\nLogical\n.F.\nShow month-day header grid\nbChange\nBlock\nCode block executed when an item is changed\nbPressed\nBlock\nCode block executed on item press\nnTopOffset\nNumeric\n5\nTop offset for grid rendering\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nWidth, nHeight, oWnd, lBorder, lVScroll, lHScroll, nClrFore, nClrBack, bChange, bPressed, oLbx )\nCreate a new TGantt control\nRedefine( nId, oWnd, nClrFore, nClrBack, bChange, bPressed, oLbx )\nRedefine from dialog resource\nAddItem( nRow, nStart, nEnd, nClrBack )\nAdd a Gantt bar item to the specified row with start/end columns and background color\nAtItem( nRow, nCol )\nGet the TGanttItem at the specified grid position\nSetGridMonth( nRows )\nSwitch to month-day header grid mode. nRows = number of weeks to display.\nReCalculate()\nRecalculate grid dimensions and item positions after resizing\nGridMonth()\nDraw the month-day header labels\nPaint()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tget.html", "title": "TGet / TMGet", "text": "Text input controls with PICTURE formatting, validation, and multi-line editing\nTGet Overview\nSource:\nsource/classes/tget.prg\n|\nParent:\nTControl\nTGet\nis the FiveWin equivalent of the classic Clipper GET command -- a single-line text input control that supports PICTURE masks, validation blocks, and data binding via\nbSetGet\n. It is the workhorse of data-entry forms.\nTMGet Overview\nSource:\nsource/classes/mget.prg\n|\nParent:\nTControl\nTMGet\n(also known as a memo GET) provides multi-line text editing. It is used for free-form text fields such as notes, comments, and descriptions. It wraps the Windows EDIT control with the\nES_MULTILINE\nstyle.\nArchitecture\n[diagrama]\nTGet Key Properties\nProperty\nType\nDescription\nbSetGet\nBlock\nData-binding block.\nEval( bSetGet )\nreads the value;\nEval( bSetGet, x )\nwrites it.\ncPicture\nString\nPICTURE mask controlling input formatting (e.g.\n\"@E 999,999.99\"\n,\n\"@!\"\n,\n\"99/99/9999\"\n)\nbValid\nBlock\nValidation block evaluated when the user leaves the GET. Must return\n.T.\nto allow exit.\nbWhen\nBlock\nCondition block evaluated when focus approaches. If\n.F.\n, the GET is skipped (read-only).\nlReadOnly\nLogical\nWhen\n.T.\n, the field is not editable.\nlPassword\nLogical\nWhen\n.T.\n, input is masked with bullet characters.\ncCueText\nString\nPlaceholder text shown when the GET is empty and unfocused (watermark).\nlSpinner\nLogical\nWhen\n.T.\n, adds up/down spinner arrows for numeric input.\nnMin\nNumeric\nMinimum value for spinner.\nnMax\nNumeric\nMaximum value for spinner.\nbChange\nBlock\nBlock evaluated each time the text changes (live update).\nlRight\nLogical\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tgif.html", "title": "TGif", "text": "Source:\nsource/classes/tgif.prg\nHierarchy:\nTGif\n→\nTControl\nTGif is a control for displaying animated GIF images within FiveWin windows and dialogs.\nIt supports play, stop, restart operations and three sizing modes for controlling how the\nGIF frames fit within the control's bounding rectangle. The control can load GIFs from\nfiles or from embedded resources.\nGIF Command\nCÓDIGO:\n@ nRow, nCol GIF oGif FILE cGifFile SIZE nW, nH OF oWnd\nKey DATA Members\nDATA\nType\nDefault\nDescription\nhGif\nNumeric\nHandle to the internal GIF animation window\ncFilename\nCharacter\nPath to the GIF file (or resource name)\nlAdjust\nLogical\n.F.\nStretch GIF to fill the control dimensions when\n.T.\nnSizingType\nNumeric\nFWGIF_SIZING_FILE\nOne of\nFWGIF_SIZING_FILE\n,\nFWGIF_SIZING_CLIP\n, or\nFWGIF_SIZING_STRETCH\nSizing Modes\nConstant\nValue\nDescription\nFWGIF_SIZING_FILE\nDefault\nUse the GIF's natural dimensions. Control auto-sizes to match.\nFWGIF_SIZING_CLIP\nClip the GIF to fit the control's bounding rectangle at its natural size.\nFWGIF_SIZING_STRETCH\nStretch the GIF to fill the control dimensions (same as\nlAdjust := .T.\n).\nMethods\nMethod\nDescription\nNew( oWnd, cGifFile, nRow, nCol, nHeight, nWidth, oCursor, lAdjust, bAction )\nConstructor. Creates the GIF control and begins animation.\nPlay()\nStart or resume the GIF animation.\nStop()\nPause the GIF animation at the current frame.\nRestart()\nRestart the animation from the first frame.\nIsRunning()\nReturn\n.T.\nif the animation is currently playing.\nSetFile( cFile )\nLoad a new GIF file into the control.\nSetSizing( nType )\nChange the sizing mode at runtime.\nGetData()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tgraph.html", "title": "TGraph", "text": "Source:\nsource/classes/tgraph.prg\nInherits from:\nTControl\nTGraph is FiveWin's charting control that supports bar, line, point, pie, and XY scatter charts.\nIt provides a comprehensive set of graphing capabilities directly within FiveWin windows and dialogs,\nwith support for multiple series, 3D rendering, legends, grid lines, and export to image or printer.\nGraph Types\nTGraph supports the following chart types, defined as numeric constants:\nConstant\nValue\nDescription\nGRAPH_TYPE_BAR\n1\nVertical bar chart (default)\nGRAPH_TYPE_LINE\n2\nLine chart connecting data points\nGRAPH_TYPE_POINT\n3\nScatter/point chart\nGRAPH_TYPE_PIE\n4\nPie chart\nGRAPH_TYPE_XY_LINES\n6\nXY scatter chart with connecting lines\nGRAPH_TYPE_XY_POINTS\n7\nXY scatter chart with points only\nKey DATA Members\nDATA\nType\nDescription\nnType\nNumeric\nGraph type (GRAPH_TYPE_BAR, GRAPH_TYPE_LINE, etc.)\naSeries\nArray\nArray of series definition objects\naData\nArray\nChart data values\nl3D\nLogical\nEnable 3D rendering\nlxGrid\nLogical\nShow X-axis grid lines\nlyGrid\nLogical\nShow Y-axis grid lines\nlxVal\nLogical\nShow X-axis value labels\nlyVal\nLogical\nShow Y-axis value labels\ncTitle\nCharacter\nMain chart title\ncSubTit\nCharacter\nChart subtitle\ncTitX\nCharacter\nX-axis title\ncTitY\nCharacter\nY-axis title\ncPicture\nCharacter\nPicture mask for value formatting\nlViewVal\nLogical\nShow data values on chart\nlLegends\nLogical\nShow series legends\nnBarSep\nNumeric\nBar separation gap\nnPoint\nNumeric\nPoint marker type (POINT_TYPE_1..3)\nnMaxVal\nNumeric\nMaximum Y-axis value\nnMinVal\nNumeric\nMinimum Y-axis value\nnClrBack\nNumeric\nBackground color\ncBitmap\nCharacter\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tgroup.html", "title": "TGroup", "text": "Source:\nsource/classes/group.prg\nInherits from:\nTControl\nTGroup provides a group box control that visually groups related controls inside a rectangular frame with an optional label in the upper-left corner. It supports 3D etched or raised borders, transparent backgrounds, custom text and pane colors, and can host child controls. Group boxes are commonly used in dialogs to organize input fields into logical sections.\nKey DATA Members\nDATA\nType\nDescription\ncCaption\nCharacter\nLabel text displayed in the upper-left corner of the group box frame.\naControls\nArray\nArray of child controls hosted inside the group box area.\nlTransparent\nLogical\nIf\n.T.\n, the group box background is transparent, allowing the parent background to show through.\nnClrText\nNumeric\nText color for the caption label (RGB value).\nnClrPane\nNumeric\nBackground fill color for the group box area (RGB value).\nl3D\nLogical\nIf\n.T.\n, the border is drawn with a 3D etched or raised effect. Default is\n.T.\n.\ncMsg\nCharacter\nMessage bar text displayed when the group box receives focus.\nlDesign\nLogical\nIf\n.T.\n, the control operates in design mode, allowing child repositioning.\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight, cLabel, oWnd, lPixel, lDesign, nClrT, nClrP, cMsg, lTransparent, oFont, l3D )\nCreate a new group box. Coordinates define the frame rectangle.\ncLabel\nis the caption text. The frame is drawn with a 3D etched border by default.\nReDefine( nId, cLabel, oWnd )\nRedefine a group box from a dialog resource. The control is linked to an existing Win32 group box by its control ID.\nPaint()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tgroupex.html", "title": "TGroupEx", "text": "Source:\nsource/classes/tgroupex.prg\nOverview\nTGroupEx class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/theader.html", "title": "THeader", "text": "Source:\nsource/classes/theader.prg\nInherits from:\nTControl\nTHeader is a wrapper for the Win32 SysHeader32 common control. It provides a clickable,\nresizable column header bar typically used above list views or custom grid controls.\nEach column can display a prompt, have a specific width, support click-to-sort arrows,\nand fire an action when clicked. The control supports hot-track highlighting and full-drag\ncolumn resizing.\nKey DATA Members\nDATA\nType\nDescription\naPrompts\nArray\nArray of column header caption strings\naSizes\nArray\nArray of column widths in pixels\nbAction\nBlock\nCode block executed on column click. Receives nItem index and Self.\nMethods\nMethod\nDescription\nNew( oWnd, nTop, nLeft, nW, nH, aPrompts, aSizes, oFont, nClrFore, nClrBack, bAction )\nCreate a new THeader control\nReDefine( nId, oWnd, aPrompts, aSizes, oFont, nClrFore, nClrBack, bAction )\nRedefine from dialog resource\nInsertItem( nIndex, cCaption, nWidth, nAlign )\nInsert a new column at the specified position\nSetItem( nIndex, cCaption, nWidth, nAlign, nSort )\nModify an existing column's properties\nGetItem( nIndex )\nRetrieve column information (caption, width, alignment)\nExample: Three-Column Header with Click Action\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oHeader, aPrompts, aSizes\n\n aPrompts := { \"Name\", \"Date\", \"Size\" }\n aSizes := { 150, 100, 80 }\n\n DEFINE WINDOW oWnd TITLE \"Header Demo\" SIZE 400, 200\n\n oHeader := THeader():New( oWnd, 10, 10, 380, 22, aPrompts, aSizes,,, ;\n , { | nItem, oCtrl | MsgInfo( \"Column \" + Str( nItem ) ) } )\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/thorzscroll.html", "title": "THorzScroll", "text": "Source:\nsource/classes/hrzscrol.prg\nInherits from:\nTPanel\nTHorzScroll extends TPanel with a built-in horizontal scrollbar that scrolls a collection of child panels. It is designed for horizontally scrollable layouts such as dashboard card rows, toolbar panels, or image galleries where content exceeds the visible width.\nKey DATA Members\nDATA\nType\nDescription\noHScroll\nObject\nTScrollBar object managing the horizontal scrollbar\nnHPos\nNumeric\nCurrent horizontal scroll position\nnMaxWidth\nNumeric\nTotal content width; determines the scroll range\naPanels\nArray\nArray of child TPanel objects managed by the container\nnBetween\nNumeric\nSpacing in pixels between consecutive panels (default 10)\nlBorder\nLogical\nShow a border around the container\nnClrBorder\nNumeric\nBorder color (RGB value)\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight, oWnd, nClrPane, lHScroll, lBorder, nClrBorder )\nCreate a new horizontal scroll panel\nRedefine( nId, oWnd, nClrPane, lHScroll, lBorder, nClrBorder )\nRedefine from a dialog resource\nAddPanel( nWidth, nClrBack )\nAdd a child panel to the scrollable area; returns the panel object\nRemovePanel( xParam )\nRemove a child panel by index or object reference\nHScroll( nCode )\nHandle scroll events (line left/right)\nUpdateScrollRange()\nRecalculate the scrollbar range after adding/removing panels\nStartSmoothScroll( nNewPos )\nBegin smooth animated scrolling to a target position\nExample: Horizontal Scroll Panel\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oHS, oP1, oP2, oP3\n\n DEFINE WINDOW oWnd TITLE \"THorzScroll Demo\" SIZE 600, 200\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/thotkey.html", "title": "THotKey", "text": "Source:\nsource/classes/thotkey.prg\nInherits from:\nTControl\nTHotKey wraps the Win32 hot key common control, allowing the user to press a keyboard combination (e.g., Ctrl+Alt+F5) which is captured and stored as a virtual-key code and modifier mask. It is commonly used in configuration dialogs where users define custom keyboard shortcuts.\nKey DATA Members\nDATA\nType\nDescription\nnVirtKey\nNumeric\nVirtual-key code of the selected key (e.g.,\nVK_F5\n)\nnModifiers\nNumeric\nBitmask of modifier keys:\nHOTKEYF_SHIFT\n,\nHOTKEYF_CONTROL\n,\nHOTKEYF_ALT\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, nVK, nMod )\nCreate a new hotkey input control\nSetHotKey( nVK, nMod )\nProgrammatically set the hotkey to\nnVK\nwith modifiers\nnMod\nGetHotKey()\nReturn an array\n{ nVirtKey, nModifiers }\nof the current hotkey\nGetKeyName()\nReturn a human-readable string such as\n\"Ctrl+Alt+F5\"\nSetRules( nInv, nDef )\nSet invalid key combinations and default override behavior\nExample: Hotkey Picker with Change Callback\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oHot, nVK := VK_F5, nMod := HOTKEYF_CONTROL + HOTKEYF_ALT\n\n DEFINE WINDOW oWnd TITLE \"Hotkey Demo\" SIZE 400, 150\n\n @ 40, 20 HOTKEY oHot ;\n SIZE 120, 25 OF oWnd ;\n ACTION MsgInfo( \"Hotkey: \" + oHot:GetKeyName() )\n\n oHot:SetHotKey( nVK, nMod )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTHotKey captures the key combination when the control has focus and the user presses a modifier+key chord. The combination is displayed in the control.\nModifier constants:\nHOTKEYF_SHIFT\n(1),\nHOTKEYF_CONTROL\n(2),\nHOTKEYF_ALT\n(4). Combine with\n+\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ticonget.html", "title": "TIconGet", "text": "Source:\nsource/classes/ticonget.prg\nOverview\nTIconGet class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ticongroup.html", "title": "TIconGroup / TIconGet", "text": "Sources:\nsource/classes/igroup.prg\n,\nsource/classes/iget.prg\nTIconGroup FROM TControl | TIconGet FROM TMultiGet\nTIconGroup displays a grid of icons with text prompts. Users can navigate with keyboard arrows, click to select, and double-click to execute actions. TIconGet is an edit control used internally by TIconGroup for inline prompt editing.\nKey DATA Members (TIconGroup)\nDATA\nType\nDescription\naIcons\nArray\nArray of icon handles (hIcon)\naPrompts\nArray\nArray of text labels below each icon\naActions\nArray\nArray of code blocks executed on double-click\naCoors\nArray\nArray of coordinate arrays (icon + text bounding boxes)\naOrder\nArray\nVisual order of icons (indices into aIcons)\nnFocused\nNumeric\nIndex of the currently focused icon\nlEdit\nLogical\n.T. when editing a prompt inline\nlAutoEdit\nLogical\n.T. enables inline editing on click; F2 always triggers edit\nMethods (TIconGroup)\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, aIcons, aPrompts, aActions, oWnd )\nCreate an icon group control\nReDefine( nId, aIcons, aPrompts, aActions, oWnd )\nRedefine from a dialog resource\nAdd( hIcon, cPrompt, bAction )\nAdd an icon with label and action to the group\nModify( hIcon, cPrompt, bAction, nAt )\nModify icon, prompt or action at position\nDel( nAt )\nDelete icon, prompt and action at position\nAdjust()\nRecalculate icon positions in grid layout\nArrange()\nReset scroll positions and re-layout all icons\nCommands\nCÓDIGO:\n@ nRow, nCol ICONGROUP ITEMS aIcons, aPrompts, aActions ;\n SIZE nW, nH OF oWnd\nExample: Icon Grid with Click Actions\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/timagelist.html", "title": "TImageList", "text": "Source:\nsource/classes/timaglst.prg\nStandalone class (not derived from TControl)\nTImageList is a standalone wrapper around the Win32 HIMAGELIST API for managing collections\nof icons and bitmaps of equal size. Image lists are used extensively by tree views, list views,\ntab controls, toolbars, and other common controls to efficiently manage icon sets.\nKey DATA Members\nDATA\nType\nDescription\nhImageList\nHandle\nWin32 HIMAGELIST handle\naBitmaps\nArray\nArray of TBitmap objects added to the list\nMethods\nMethod\nDescription\nNew( nWidth, nHeight )\nCreate a new image list. Default size is 16x16 pixels.\nAdd( oBmpImage, oBmpMask )\nAdd an image with optional mask bitmap to the list. Returns the image index.\nAddMasked( oBmpImage, nClrMask )\nAdd an image using a transparent color as mask. Returns the image index.\nAddIcon( oIcon )\nAdd an icon (TIcon object or icon file/resource name) to the list. Returns the image index.\nAddImage( cFile )\nLoad and add an image from a file path. Returns the image index.\nReadBitmap( cFile, nWidth, nImages, nClrTransparent )\nLoad a bitmap strip from a file, split into\nnImages\nframes, using\nnClrTransparent\nas the transparent mask color.\nSetBkColor( nColor )\nSet the background color used when rendering masked images. Use CLR_NONE for transparent background.\nEnd()\nDestroy the image list and release all associated resources.\nExample: Creating an Image List for a Toolbar\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oImgList, oBar\n\n DEFINE WINDOW oWnd TITLE \"ImageList Demo\" SIZE 500, 300\n\n // Create a 24x24 image list\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tipaddr.html", "title": "TIPAddress", "text": "Source:\nsource/classes/tipaddr.prg\nInherits from:\nTControl\nTIPAddress wraps the Win32 IP address common control, providing a specialized input field for entering IPv4 addresses in dotted-decimal notation. Each of the four octets is edited in a separate field segment, with built-in validation and optional per-field range constraints.\nKey DATA Members\nDATA\nType\nDescription\ncIPAddress\nCharacter\nThe current IP address as a string (e.g.,\n\"192.168.1.1\"\n)\naFieldRanges\nArray\nArray of\n{ nMin, nMax }\nrange arrays for each of the four octet fields\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, cIP, nW, nH )\nCreate a new IP address input control\nSetAddress( cIP )\nSet the control's IP address from a dotted-decimal string\nGetAddress()\nReturn the current IP address as a dotted-decimal string (e.g.,\n\"192.168.1.1\"\n)\nClearAddress()\nClear all four octet fields to blank\nIsBlank()\nReturn\n.T.\nif all four octets are empty\nSetRange( nField, nMin, nMax )\nSet the minimum and maximum values for a specific octet field (1-4)\nSetFocus( nField )\nSet keyboard focus to a specific octet field (1-4)\nExample: IP Address Input with Field Ranges\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oIP\n\n DEFINE WINDOW oWnd TITLE \"IP Address\" SIZE 350, 150\n\n @ 40, 20 IPADDRESS oIP ;\n SIZE 120, 25 OF oWnd ;\n ADDRESS \"192.168.1.1\"\n\n // Restrict the first octet to valid private ranges\n oIP:SetRange( 1, 10, 192 )\n oIP:SetRange( 4, 1, 254 )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTIPAddress wraps the Win32\nSysIPAddress32\ncommon control. It handles IPv4 addresses only.\nUse\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tipaddress.html", "title": "TIPAddress", "text": "Source:\nsource/classes/tipaddress.prg\nOverview\nTIPAddress class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tknob.html", "title": "TKnob", "text": "Source:\nsource/classes/tknob.prg\n|  Command:\ninclude/tknob.ch\nInherits from:\nTControl\nContributed by Silvio Falconi.\nTKnob is a modern custom rotary knob control for FiveWin / Harbour, designed for audio,\nMIDI and synthesizer style applications (mixers, drum machines, VST-like interfaces and\ntouch screens). It is a pure Harbour/FiveWin implementation built on\nTControl\n—\nall drawing is done with GDI primitives, so no extra DLL is required.\nFeatures\nModern rotary knob design with compact control area and correct clipping.\nTransparent / themed background support (\nIsAppThemed()\n).\nTwo indicator modes:\nLED\n(dot) or\nLINE\n.\nExternal illuminated ring with soft glow, plus optional external ticks (\nlTicks\n).\nUnipolar\nmode (0..127) and\nBipolar\nmode (-30..+30, shows signed value).\nMouse drag (vertical) and mouse wheel control; hold\nCTRL\nfor a finer wheel step.\nDouble click resets to the default value.\nEnable / disable state with dimmed visual feedback (\nToggle()\n).\nInternal value display and external label, with separate fonts (\noFontInner\n/\noFont\n).\nbSetGet\nvariable binding,\nbChanged\nand\nbAction\ncallbacks.\nKey DATA Members\nDATA\nType\nDefault\nDescription\nnValue\nNumeric\n64\nCurrent value (clamped to nMin..nMax)\nnMin\nNumeric\n0\nMinimum value\nnMax\nNumeric\n127\nMaximum value\nnDefault\nNumeric\n64\nValue restored on double click\ncIndicator\nChar\n\"LED\"\nIndicator style:\n\"LED\"\nor\n\"LINE\"\ncMode\nChar\n\"UNIPOLAR\"\nRange mode:\n\"UNIPOLAR\"\nor\n\"BIPOLAR\"\nlTicks\nLogical\n.F.\nDraw external tick marks around the ring\nlActive\nLogical\n.T.\nEnabled state (dimmed when .F.)\nnWheelStep\n/\nnCtrlStep\nNumeric\n1\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tlistbox.html", "title": "TListBox", "text": "Source:\nsource/classes/listbox.prg\nInherits from:\nTControl\nTListBox wraps the standard Windows list box control (\nLISTBOX\n). It displays a scrollable list of items from which the user can select one or multiple entries. TListBox supports owner-drawn items with bitmaps, drag-and-drop reordering, multiple-selection modes, keyboard navigation, and item-level tooltips. It is the standard single-column list control in FiveWin.\nKey DATA Members\nDATA\nType\nDescription\naItems\nArray\nArray of character strings displayed in the list box.\naBitmaps\nArray\nArray of bitmap handles or resource names for owner-drawn bitmap items. Each entry corresponds to an item in\naItems\n.\nbSetGet\nBlock\nData-binding block. When evaluated with no arguments, returns the selected item value; with one argument, selects that item.\nlOwnerDraw\nLogical\nIf\n.T.\n, the list box is owner-drawn, allowing custom item rendering via\nbDrawItem\n.\nbDrawItem\nBlock\nCustom drawing code block for owner-drawn items:\n{ |nItem, hDC, aRect, nState, oLbx| ... }\n.\nlMultiSelect\nLogical\nIf\n.T.\n, multiple items can be selected at once.\nlDrag\nLogical\nEnable mouse drag-and-drop reordering of list items.\nbChange\nBlock\nEvaluated when the selection changes:\n{ |nItem, oLbx| ... }\n.\nbValid\nBlock\nValidation block evaluated when the list box loses focus.\nnAt\nNumeric\nIndex of the currently selected item (1-based). 0 means no selection.\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, aItems, nW, nH, oWnd, lMultiSel, lDrag, lOwner, oFont, bDraw, lPixel, lDesign, oIcon, cMsg, lUpdate, bChange, bValid, ... )\nCreate a new list box.\naItems\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tlistview.html", "title": "TListView", "text": "Windows ListView common control with icons, details, groups, and tile views\nSource:\nsource/classes/tlistvie.prg\n|\nParent:\nTControl\nOverview\nTListView\nwraps the Windows\nSysListView32\ncommon control. Unlike\nTXBrowse\n(which is designed for database record browsing),\nTListView\nis designed for displaying lists of items with icons -- similar to Windows Explorer's file listing. It supports five view modes, item grouping, image lists, and item selection.\nArchitecture\n[diagrama]\nView Modes\nConstant\nValue\nDescription\nLV_VIEW_ICON\n0\nLarge icon view -- items displayed as large icons with label below\nLV_VIEW_DETAILS\n1\nDetails/report view -- items in rows with multiple columns\nLV_VIEW_SMALLICON\n2\nSmall icon view -- items as small icons arranged freely\nLV_VIEW_LIST\n3\nList view -- items as small icons in a vertical list\nLV_VIEW_TILE\n4\nTile view -- items displayed as tiles with icon and multi-line text\nKey Properties\nProperty\nType\nDescription\naPrompts\nArray\nArray of text labels for the initial items\naItems\nArray\nRuntime array of all inserted items (maintained internally)\naGroups\nArray\nArray of group definitions for group view\nnOption\nNumeric\nCurrently selected item index (1-based)\nnGroups\nNumeric\nNumber of groups inserted (auto-incremented)\nbAction\nBlock\nCode block executed on item activation (double-click/Enter)\nbClick\nBlock\nCode block executed on single click\nKey Methods\nMethod\nDescription\nNew( nTop, nLeft, aPrompts, bAction, oWnd, nClrFore, nClrBack, lPixel, lDesign, nWidth, nHeight, cMsg )\nConstructor. Creates the ListView at the given position.\nReDefine( nId, oWnd, bAction )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tlistview_items.html", "title": "TListViewItem", "text": "Source:\nsource/classes/tlistvie.prg\nStandalone class (used by TListView)\nTListViewItem represents a single item in a TListView control. Each item can display text, an image from an image list, and be assigned to a group for categorized views. Items support tooltips, indentation, and checked state.\nKey DATA Members\nDATA\nType\nDescription\ncText\nCharacter\nItem display text\nnImage\nNumeric\nIndex into the image list (0 = no image)\nnGroup\nNumeric\nGroup ID this item belongs to\nnItem\nNumeric\nItem index within the list view\nMethods\nMethod\nDescription\nNew( oParent )\nCreate a new item associated with a TListView\nCreate( oParent )\nInsert the item into the list view\nSetText( cText ) / GetText()\nChange or retrieve item text\nSetImage( nImage ) / GetImage()\nChange or retrieve image index\nSetGroup( nGroup )\nAssign the item to a group\nTListViewGroup\nStandalone class (used by TListView)\nDefines a visual grouping header within a grouped list view. Groups organize items into collapsible categories.\nDATA\nType\nDescription\ncHeader\nCharacter\nGroup header text\nnGroupId\nNumeric\nUnique group identifier\nnState\nNumeric\nState: normal (0), collapsed (1), hidden (2)\nMethod\nDescription\nNew( oParent )\nCreate a group\nCreate( oParent )\nInsert the group into the list view\nSetState( nState )\nCollapse, expand, or hide the group\nExample: Grouped List View\nCÓDIGO:\n#include \"FiveWin.ch\"\nfunction Main()\n local oWnd, oList, oGrp1, oGrp2, oItem\n DEFINE WINDOW oWnd TITLE \"Grouped ListView\" SIZE 500, 400\n @ 10, 10 LISTBOX oList FIELDS \"\" OF oWnd SIZE 460, 350\n oList:EnableGroupView()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmenu.html", "title": "TMenu / TMenuItem", "text": "Pull-down menus, popup menus, and context menus\nSource:\nsource/classes/menu.prg\n|\nHeader:\nFiveWin.ch\nOverview\nTMenu\nmanages a menu bar or popup menu, while\nTMenuItem\nrepresents an individual item within a menu. FiveWin menus support hierarchical popups, separators, checkmarks, accelerator keys, bitmaps, and modern visual styles (2007, 2010, 2013, 2015).\nThere are two main usage patterns:\nMenu bar\n-- attached to a window via\nDEFINE MENU oMenu OF oWnd\nPopup / context menu\n-- shown at a position via\nACTIVATE POPUP oMenu AT nRow, nCol OF oWnd\nMenu Structure\n[diagrama]\nTMenu Key Properties\nProperty\nType\nDescription\naMenuItems\nArray\nArray of\nTMenuItem\nobjects in this menu\noWnd\nObject\nParent window that owns the menu\nhMenu\nHandle\nWindows HMENU handle\nl2007\nLogical\nOffice 2007 visual style\nl2010\nLogical\nOffice 2010 visual style\nl2013\nLogical\nOffice 2013 visual style\nl2015\nLogical\nOffice 2015 (modern flat) visual style\nlPopup\nLogical\n.T.\nif this is a popup (context) menu rather than a menu bar\nTMenuItem Key Properties\nProperty\nType\nDescription\ncPrompt\nString\nText displayed for the item. Use\n&\nfor accelerator underline.\nbAction\nBlock\nCode block executed when this item is selected\nbWhen\nBlock\nCondition block; item is grayed when it returns\n.F.\nlChecked\nLogical\nWhen\n.T.\n, a checkmark appears beside the item\nlActive\nLogical\nWhen\n.F.\n, the item is disabled (grayed out)\noMenu\nObject\nIf this item opens a sub-popup, this points to that\nTMenu\ncBmpFile\nString\nPath to a bitmap file shown beside the item\nnVirtKey\nNumeric\nVirtual key for the keyboard accelerator (e.g.\nVK_F5\n)\nCommand Syntax\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmeter.html", "title": "TMeter", "text": "Source:\nsource/classes/meter.prg\nInherits from:\nTControl\nTMeter is a progress meter control that displays the completion status of a long-running\noperation. It supports three rendering styles: standard rectangular bar, circular gauge,\nand bitmap array. The meter can display a text label and percentage, with customizable\nforeground and background colors.\nKey DATA Members\nDATA\nType\nDescription\nnTotal\nNumeric\nMaximum value (100% completion)\ncText\nCharacter\nLabel text displayed on or beside the meter\nlPercentage\nLogical\nShow percentage text on the meter\nnClrBar\nNumeric\nBar fill color (default CLR_HBLUE)\nnClrBText\nNumeric\nBar text color (default CLR_WHITE)\nnClrBlank\nNumeric\nUnfilled portion color\ncStyle\nCharacter\nRendering style:\n\"CIRCULAR\"\n,\n\"BMPARRAY\"\n,\n\"BRUSH\"\n, or NIL for standard bar\nnInnerDia\nNumeric\nInner diameter for circular meter (donut style)\nnClrFill\nNumeric\nFill color for circular meter\nnClrBorder\nNumeric\nBorder color for circular meter\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, nTotal, oWnd, nW, nH, lUpdate, lPixel, oFont, cText, lNoPercentage, nClrPane, nClrText, nClrBar, nClrBText, lDesign, lCircular, nInnerDia, nClrFill, nClrBorder, lBmpArray )\nCreate a new meter control\nReDefine( nId, bSetGet, nTotal, oWnd, lUpdate, oFont, cText, lNoPercentage, nClrPane, nClrText, nClrBar, nClrBText, lCircular, nInnerDia, nClrFill, nClrBorder, lBmpArray )\nRedefine from dialog resource\nSet( nActual )\nSet the current progress value and refresh the display\nSetTotal( nTotal )\nChange the maximum value\nPaint()\nRender the standard rectangular bar\nPaintCircular()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmeterex.html", "title": "TMeterEx", "text": "Source:\nsource/classes/tmeterex.prg\nOverview\nTMeterEx class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmetro.html", "title": "TMetro", "text": "Source:\nsource/classes/tmetro.prg\nStandalone class\nTMetro creates a full-screen Modern UI (Metro-style) start screen with tiled buttons,\ninspired by the Windows 8 Metro design language. It displays a background image, a title,\ncurrent date and time, and a grid of tiled buttons that can be either normal or large\n(double-width). Each tile has configurable text and background colors and an optional icon image.\nKey DATA Members\nDATA\nType\nDescription\noWnd\nObject\nThe underlying popup window (WS_POPUP style)\ncTitle\nCharacter\nTitle displayed at the top of the start screen\naButtons\nArray\nArray of TButtonBmp objects created by\nAddButton()\nnBtnWidth\nNumeric\nTile width in pixels (default 132)\nnBtnHeight\nNumeric\nTile height in pixels (default 132)\nnOriginX\nNumeric\nStarting X position for tile grid (default 200)\nnOriginY\nNumeric\nStarting Y position for tile grid (default 200)\nhBitmap\nNumeric\nHandle to the background bitmap\noFont\nObject\nSegoe UI Light font for display elements\noFontB\nObject\nSegoe UI Light bold font for time display\noTimer\nObject\nTimer for updating the clock display\nMethods\nMethod\nDescription\nNew( cTitle, nBtnW, nBtnH, cBgFile )\nCreate a new TMetro start screen.\ncBgFile\nis a background bitmap file or resource.\nActivate()\nShow the start screen maximized with background, title, date, and time\nAddButton( cCaption, nClrText, nClrPane, lLarge, cImg, bAction )\nAdd a tile button with caption, colors, optional image, and action\nEnd()\nClose the start screen and release resources\nExample: Metro Screen with Tiles\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oMetro\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmetropanel.html", "title": "TMetroPanel", "text": "Source:\nsource/classes/metropnl.prg\nInherits from:\nTPanel\nTMetroPanel implements a Windows 8-style Metro start panel with tile groups that scroll\nhorizontally. It arranges TMetroBtn tiles into groups and rows, providing a touch-friendly\ninterface with drag-to-scroll, mouse-wheel support, and a custom scrollbar. Each tile can be\na large or small button with an image, caption, and action.\n\nTMetroBtn (child class from TBtnBmp) represents an individual Metro tile with configurable\nalignment, text overlay, and group membership.\nKey DATA Members\nDATA\nType\nDescription\naButtons\nArray\nArray of TMetroBtn tile objects\nnOffset\nNumeric\nCurrent horizontal scroll offset in pixels\nnBtnSize\nNumeric\nBase tile size in pixels (default 132)\nnMetroRows\nNumeric\nNumber of tile rows based on screen height\nnGroups\nNumeric\nNumber of tile groups (auto-calculated from buttons)\nnScrollRange\nNumeric\nMaximum horizontal scroll extent\nnScrollRatio\nNumeric\nRatio for thumb-to-content scroll mapping\ncTitle\nCharacter\nPanel title displayed at the top\nlDesignMode\nLogical\nEnable design-time interaction\nlArranged\nLogical\nWhether tiles have been positioned\nnClrScroll\nNumeric\nScrollbar track color\nnClrThumb\nNumeric\nScrollbar thumb color\nTMetroBtn Class (Child of TMetroPanel)\nDATA\nType\nDescription\nnGroup\nNumeric\nGroup index to which this tile belongs (default 1)\nlLarge\nLogical\nIf .T., tile spans 2 column widths (double-wide)\ncCaption\nCharacter\nMain caption displayed on the tile\ncText\nCharacter\nSecondary text displayed below the caption\nnCapAlign\nNumeric\nCaption text alignment (default DT_TOP + DT_RIGHT)\nnBmpAlign\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmnucmp.html", "title": "TMnuComp", "text": "Source:\nsource/classes/tmnucomp.prg\nInherits from:\nTComponent\nTMnuComp is a non-visual component that wraps a\nTMenu\nobject into the\nTComponent\nframework for use in the VisualFW form designer. It allows menus to be designed, manipulated, and persisted within the visual designer environment alongside visual controls. The component creates a default menu with sample items and registers it on the parent window.\nKey DATA Members\nDATA\nType\nDescription\noMenu\nTMenu\nThe wrapped TMenu object\ncResBmp\nCharacter\nOptional bitmap resource name for the menu\ncVarName\nCharacter\nVariable name used in the designer (from CLASSDATA aProperties)\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, lDesign, oObject, cResBmp )\nCreate a menu component, wrap the TMenu, and attach it to the window\naItems( aNewItems )\nSETGET method; replaces all menu items with a new array of item definitions\nDestroy()\nEnd the wrapped menu, detach from window, and destroy the component\nExample: Menu Component in Designer\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oMnuComp\n\n DEFINE WINDOW oWnd TITLE \"VisualFW Designer\" SIZE 800, 600\n\n // TMnuComp is typically instantiated by the VisualFW designer.\n // Here it is shown explicitly:\n\n oMnuComp := TMnuComp():New( 0, 0, oWnd, .T., , \"mybmp\" )\n\n // oMnuComp:oMenu is now the window's menu bar\n // Replace all items at runtime:\n\n oMnuComp:aItems := { \"&File\", \"&Edit\", \"&View\", \"&Help\" }\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTMnuComp derives from\nTComponent\n, not\nTControl\n, so it has no visual representation on the form. […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmsgbar.html", "title": "TMsgBar / TMsgItem", "text": "Sources:\nsource/classes/msgbar.prg\n,\nsource/classes/tmsgitem.prg\nTMsgBar inherits from\nTControl\n; TMsgItem is a helper class\nTMsgBar is a themed status bar replacement that supports embedded interactive\nitems (clock, date, keyboard indicators, and custom action buttons). It offers\nOffice 2007/2010/2015 visual styles and centered text alignment. TMsgItem\ndefines individual embeddable items within a TMsgBar.\nTMsgBar Key DATA Members\nDATA\nType\nDescription\ncMsgDef\nCharacter\nDefault message text\naItems\nArray\nArray of TMsgItem objects embedded in the bar\nl2007\nLogical\nOffice 2007 theme style\nl2010\nLogical\nOffice 2010 theme style\nl2015\nLogical\nOffice 2015 theme style\nlCentered\nLogical\nCenter the message text horizontally\noClock\nObject\nEmbedded clock item (TMsgItem)\noDate\nObject\nEmbedded date item (TMsgItem)\noKeyCaps\nObject\nCaps Lock indicator item\noKeyNum\nObject\nNum Lock indicator item\nTMsgBar Methods\nMethod\nDescription\nNew( oWnd, cPrompt, lCentered, lClock, lDate, lKbd )\nCreate a themed message bar\nSetMsg( c )\nSet the main message text\nAddItem( oItem )\nAdd a TMsgItem to the bar\nClockOn()\nShow the embedded clock\nDateOn()\nShow the embedded date\nKeybOn()\nShow keyboard status indicators (Caps, Num)\nTMsgItem Key DATA Members\nDATA\nType\nDescription\ncMsg\nCharacter\nItem caption text\nnWidth\nNumeric\nItem width in pixels\nbAction\nBlock\nCode block executed on click\nhBitmap1\nHandle\nBitmap handle for the \"on\" state\nhBitmap2\nHandle\nBitmap handle for the \"off\" state\nlActive\nLogical\nCurrent active/checked state\nTMsgItem Methods\nMethod\nDescription\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmsgitem.html", "title": "TMsgItem", "text": "Source:\nsource/classes/tmsgitem.prg\nOverview\nTMsgItem class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmybox.html", "title": "TMyBox", "text": "Source:\nsource/classes/tmybox.prg\nInherits from:\nTControl\nTMyBox is a colored group box control with a customizable title. Unlike the standard group box, TMyBox supports custom colors for the title text, title background, and border, along with optional centered title alignment and half-width rendering.\nKey DATA Members\nDATA\nType\nDescription\ncTitle\nCharacter\nTitle text displayed in the box header\nnClrTitleText\nNumeric\nTitle text color (RGB value)\nnClrTitleBack\nNumeric\nTitle background fill color (RGB value)\nnClrBorder\nNumeric\nBorder line color (RGB value)\nlTitleCenter\nLogical\nCenter the title text horizontally on the box\nlHalfWidth\nLogical\nRender the box at half the specified width\nMethods\nMethod\nDescription\nNew( oWnd, nT, nL, nH, nW, cTitle, nClrTT, nClrTB, nClrB )\nCreate a new colored group box with optional color values\nReDefine( nId, oWnd, cTitle )\nRedefine from a dialog resource by control ID\nSetTitle( c )\nChange the title text at runtime\nPaint()\nDraw the box border, title background, and title text\nCommands\nCÓDIGO:\n@ nRow, nCol MYBOX oBox TITLE cText SIZE nW, nH OF oDlg\nExample: Blue-Titled Box\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oBox\n\n DEFINE WINDOW oWnd TITLE \"TMyBox Demo\" SIZE 400, 300\n\n @ 20, 20 MYBOX oBox TITLE \"Customer Info\" ;\n SIZE 360, 150 OF oWnd\n\n oBox:nClrTitleText := CLR_WHITE\n oBox:nClrTitleBack := CLR_BLUE\n oBox:nClrBorder := CLR_BLUE\n oBox:lTitleCenter := .T.\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tmytitle.html", "title": "TMyTitle", "text": "Source:\nsource/classes/tmytitle.prg\nInherits from:\nTControl\nTMyTitle is a custom gradient title bar control that can be placed at the top of a window or dialog. It renders a gradient-filled background (horizontal or vertical) with title text, an optional header bitmap, and a glass-like effect. It supports custom fonts, border colors, and runtime updates to the title text and bitmap.\nKey DATA Members\nDATA\nType\nDescription\ncTitle\nCharacter\nTitle text displayed on the gradient bar\ncBitmap\nCharacter\nOptional bitmap file path or resource name\nnClrFore\nNumeric\nTitle text foreground color\nnClrBegin\nNumeric\nGradient start color (default light blue)\nnClrEnd\nNumeric\nGradient end color (default dark blue)\nlVertical\nLogical\nVertical gradient orientation (default horizontal)\nlGlass\nLogical\nEnable glass-style gradient effect\nlBorder\nLogical\nDraw a border around the title bar (default\n.T.\n)\nnClrBorder\nNumeric\nBorder color (default\nCLR_BLACK\n)\noBitmap\nObject\nLoaded bitmap object (from file or resource)\noFontTitle\nObject\nFont used for the title text\nnOffSetX\nNumeric\nHorizontal bitmap offset (default 0)\nnOffSetY\nNumeric\nVertical bitmap offset (default 0)\nMethods\nMethod\nDescription\nNew( oWnd, nTop, nLeft, nH, nW, cTitle, nClrFore, nClrBegin, nClrEnd, nStyle, oFontTitle, lVertical, lBorder, nClrBorder, lGlass, cBitmap )\nCreate a new TMyTitle control\nReDefine( nId, oWnd, cTitle, nClrFore, nClrBegin, nClrEnd, lVertical, lBorder, nClrBorder, lGlass, cBitmap, oFontTitle )\nRedefine from dialog resource\nSetBitmap( cBmp )\nChange the header bitmap at runtime (file or resource)\nSetTitle( cTitle )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tnavigator.html", "title": "TNavigator", "text": "Source:\nsource/classes/navpanels.prg\nInherits from:\nTControl\nTNavigator is a collapsible navigation panel with a gradient title bar, toggle button, and automatic sibling panel repositioning. When collapsed, the panel shrinks to a narrow vertical bar with a rotated title; when expanded, it reveals child controls. Multiple TNavigator instances can be linked via\naRelatedNavigators\nso that toggling one panel repositions its siblings -- ideal for side-docking navigation bars.\nKey DATA Members\nDATA\nType\nDescription\nlExpanded\nLogical\nCurrent expanded/collapsed state (default\n.T.\n)\nnOriginalWidth\nNumeric\nWidth when fully expanded, used on restore\nnWidthClosed\nNumeric\nWidth when collapsed (default 50)\ncTitle\nCharacter\nTitle text displayed in the header bar\nnTitleHeight\nNumeric\nHeight of the gradient title bar (default 40)\naRelatedNavigators\nArray\nLinked sibling panels for auto-repositioning\nbToggled\nBlock\nCode block fired after toggle completes\nnRound\nNumeric\nCorner rounding radius (default 6)\nnTopColor\nNumeric\nGradient top/start color\nnBottomColor\nNumeric\nGradient bottom/end color\nnClrHover\nNumeric\nTitle text color on mouse hover\nnBetWeenSpace\nNumeric\nGap between sibling navigator panels (default 2)\ncImage\nCharacter\nOptional background image file path\ncBtnImage1\nCharacter\nToggle button image when collapsed (arrow right)\ncBtnImage2\nCharacter\nToggle button image when expanded (arrow left)\nMethods\nMethod\nDescription\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/toutlook.html", "title": "TOutLook", "text": "Source:\nsource/classes/outlook.prg\nInherits from:\nTControl\nTOutLook implements an Outlook-style navigation bar with collapsible groups\ncontaining icon-and-text navigation items. It is commonly used as a sidebar\npanel in MDI or SDI applications to organize navigation destinations into\nlogical categories, similar to Microsoft Outlook's folder pane.\nKey DATA Members\nDATA\nType\nDescription\naGroup\nArray\nArray of group objects containing items\nnActual\nNumeric\nIndex of the currently selected item\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, nClrF, nClrB, nStyle, oFont, lPixel, oWnd )\nCreate a new TOutLook control\nAddGroup( cPrompt )\nAdd a new collapsible group with the given caption\nAddItem( cPrompt, cBmp, cRes, bAction, nGroup )\nAdd an item to the specified group\nSet( nGroup )\nExpand a specific group by its index\nDeleteItem( oItem )\nRemove an item from its group\nMoveToGroup( xItem, nGroup )\nMove an item (by index or object reference) to a different group\nSaveOrder()\nReturn the current group/item order as a serialized string\nRestoreOrder( cOrder )\nRestore a previously saved group/item order\nExample: Two Groups with Items\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oOutLook\n\n DEFINE WINDOW oWnd TITLE \"Outlook Bar\" SIZE 300, 500\n\n @ 10, 10 OUTLOOK oOutLook ;\n SIZE 280, 460 OF oWnd\n\n oOutLook:AddGroup( \"Mail\" )\n oOutLook:AddItem( \"Inbox\", \"mail1.ico\", , {|| MsgInfo( \"Inbox\" ) }, 1 )\n oOutLook:AddItem( \"Sent\", \"mail2.ico\", , {|| MsgInfo( \"Sent\" ) }, 1 )\n oOutLook:AddItem( \"Drafts\", \"mail3.ico\", , {|| MsgInfo( \"Drafts\" ) }, 1 )\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/toutlook2003.html", "title": "TOutLook2003 / TOutLook2010", "text": "Sources:\nsource/classes/outl2003.prg\n,\nsource/classes/outl2010.prg\nInherits from:\nTControl\nTOutLook2003 and TOutLook2010 are navigation pane controls modeled after the Microsoft Outlook sidebar. They display a header, collapsible groups with icons, and a client area for child dialogs. Both classes share the same API; the difference is the color scheme (Outlook 2003 blue vs. Outlook 2010 light gray).\nKey DATA Members\nDATA\nType\nDescription\noHeader\nObject\nHeader group displayed at the top\naGroups\nArray\nArray of TOutLook2003Group navigation buttons\naDialogs\nArray\nArray of child dialogs for each group's content area\nnOver\nNumeric\nIndex of the group currently under the mouse cursor\nbChange\nBlock\nCode block executed when the selected group changes\nnOption\nNumeric\nIndex of the currently selected group\nMethods\nMethod\nDescription\nNew( oWnd, aPrompts, aBmpNames, bChange, lBorder )\nCreate the navigation pane with groups and bitmaps\nRedefine( nId, oWnd, aPrompts, aBmpNames, bChange, aDialogs )\nRedefine from a dialog resource\nAddGroup( cPrompt, cBitmap )\nAdd a navigation group with icon bitmap\nSetOption( nOption )\nSwitch to the specified group by index\nCommands\nCÓDIGO:\n@ nRow, nCol OUTLOOK2003 oOut PROMPTS aPrompts BITMAPS aBmps ;\n SIZE nW, nH OF oWnd\nExample: Navigation Pane\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oOutlook\n local aPrompts := { \"Mail\", \"Calendar\", \"Contacts\" }\n local aBitmaps := { \"mail.bmp\", \"cal.bmp\", \"cont.bmp\" }\n\n DEFINE WINDOW oWnd TITLE \"Outlook 2003 Pane\" SIZE 700, 500\n\n @ 0, 0 OUTLOOK2003 oOutlook ;\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/toutlook2010.html", "title": "TOutLook2010", "text": "Source:\nsource/classes/toutlook2010.prg\nOverview\nTOutLook2010 class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/toutlookmail.html", "title": "TOutlookMail", "text": "Source:\nsource/classes/toutlookmail.prg\nOverview\nTOutlookMail class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tpager.html", "title": "TPager", "text": "Source:\nsource/classes/tpager.prg\nInherits from:\nTControl\nTPager is a wrapper for the Win32 SysPager common control. It provides scroll buttons\n(arrows) that allow the user to navigate through a child window that is larger than the\nvisible area. Typically used with toolbar controls or other wide child windows that need\nhorizontal or vertical scrolling without standard scrollbars.\nKey DATA Members\nDATA\nType\nDescription\noChild\nObject\nThe child window/control contained within the pager\nlHorz\nLogical\nHorizontal orientation (default .F. = vertical)\nlAutoScroll\nLogical\nEnable auto-scrolling when mouse hovers near edge\nlDragDrop\nLogical\nEnable drag-and-drop scrolling\nnBtnSize\nNumeric\nSize of the scroll arrow buttons (default 12)\nnBkColor\nNumeric\nBackground color (default COLOR_BTNFACE)\nnBorder\nNumeric\nBorder width in pixels (default 0)\nMethods\nMethod\nDescription\nNew( nTop, nLeft, oWnd, oChild, nW, nH, lPixel, lDesign, cMsg, bWhen, bChange, bGotFocus, bLostFocus, lHorz, lAutoScroll, lDragDrop, nBtnSize, nBkColor, nBorder )\nCreate a new TPager control\nReDefine( nId, oWnd, cMsg, bWhen, bChange, bGotFocus, bLostFocus, nBtnSize, nBkColor, nBorder )\nRedefine from dialog resource\nSetChild( oChild )\nSet or change the child window contained in the pager\nRecalcSize()\nRecalculate pager size and scroll button visibility\nSetPos( nPos )\nSet the current scroll position (offset)\nGetPos()\nRetrieve the current scroll position\nSetButtonSize( nSize )\nSet the size of the scroll arrow buttons\nGetButtonSize()\nRetrieve the current button size\nGetButtonState( nButton )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tpages.html", "title": "TPages", "text": "Source:\nsource/classes/tpages.prg\nInherits from:\nTControl\n, uses\nTPagesDialog\nTPages is a tab-page container control that manages a collection of dialog pages within a single parent window area. Each page is a dialog hosted inside the container, and the user switches between pages programmatically or via associated tab controls. Internally it works with TPagesDialog to render each page surface.\nKey DATA Members\nDATA\nType\nDescription\nnOption\nNumeric\nIndex of the currently selected page (1-based)\naDialogs\nArray\nArray of child dialog objects, one per page\naPages\nArray\nArray of page definition arrays\n{ cTitle, nId, bInit }\nbChange\nBlock\nCode block executed when the active page changes\nMethods\nMethod\nDescription\nNew( nRow, nCol, nBottom, nRight, oWnd )\nCreate a new TPages container within a window\nRedefine( nId, oWnd, aDialogs, nOption, bChange )\nRecreate from a dialog resource control\nAddPage( cPage )\nAdd a new page with the given title\nDelPage( nPage )\nRemove the page at the specified index\nSetOption( n )\nSwitch to the page at index\nn\nGoPrev()\nSwitch to the previous page\nGoNext()\nSwitch to the next page\nExample: Two-Page Container\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oPages\n\n DEFINE WINDOW oWnd TITLE \"TPages Demo\" SIZE 500, 400\n\n @ 10, 10 PAGES oPages SIZE 460, 340 OF oWnd\n\n oPages:AddPage( \"General\" )\n oPages:AddPage( \"Advanced\" )\n\n @ 20, 20 SAY \"User Name\" OF oPages:aDialogs[ 1 ] SIZE 60, 12\n @ 20, 100 GET ... OF oPages:aDialogs[ 1 ]\n\n @ 20, 20 SAY \"Timeout\" OF oPages:aDialogs[ 2 ] SIZE 60, 12\n @ 20, 100 GET ... […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tpanel.html", "title": "TPanel", "text": "Source:\nsource/classes/tpanel.prg\nInherits from:\nTControl\nTPanel is a container control that hosts child controls with support for transparency, custom background color, and an optional border. It is commonly used to group related controls visually within a dialog or window. The panel can be designed at runtime or linked to a dialog resource.\nKey DATA Members\nDATA\nType\nDescription\naControls\nArray\nArray of child controls hosted on the panel\nnOpacity\nNumeric\nOpacity level from 0 (transparent) to 255 (opaque)\nnClrPane\nNumeric\nBackground fill color (RGB value)\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight, oWnd, lDesign, cVar, lBorder )\nCreate a new panel control\nRedefine( nId, oWnd )\nRedefine from a dialog resource\nPaint()\nPaint the panel background and border\nGotFocus( hCtlLost )\nHandle focus arrival; forward to child controls\nExample: Panel with Child Controls\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oPanel\n\n DEFINE WINDOW oWnd TITLE \"TPanel Demo\" SIZE 500, 400\n\n @ 20, 20 PANEL oPanel SIZE 460, 200 OF oWnd ;\n TRANSPARENT COLOR CLR_BTNFACE\n\n @ 30, 40 SAY \"Name:\" OF oPanel SIZE 40, 12\n @ 30, 90 GET ... OF oPanel SIZE 120, 20\n\n @ 60, 40 SAY \"Email:\" OF oPanel SIZE 40, 12\n @ 60, 90 GET ... OF oPanel SIZE 180, 20\n\n @ 100, 40 BUTTON \"Save\" OF oPanel SIZE 60, 25\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nUse the\nTRANSPARENT\nclause to make the panel background see-through. When transparent, child controls draw directly on the parent window background.\nThe\nCOLOR\nclause sets\nnClrPane\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tprogresswheel.html", "title": "TProgressWheel", "text": "Source:\nsource/classes/metrcirc.prg\nInherits from:\nTControl\nTProgressWheel is a GDI+-based circular/ring progress indicator that displays percentage-complete text in the center. It supports gradient fill colors for both the done and remaining arc segments, an adjustable inner diameter, and an indeterminate spinning mode suitable for unknown-duration operations. Color properties accept numeric RGB values, gradient arrays, image file paths, or TBrush objects.\nKey DATA Members\nDATA\nType\nDescription\nnMin, nMax\nNumeric\nRange minimum and maximum values\nnPos\nNumeric\nCurrent position within the range\nnStep\nNumeric\nStep increment value\ncPrompt\nCharacter\nOptional custom text or code block displayed in center\nlPercentage\nLogical\nShow percentage text in center of wheel\nnStartAngle\nNumeric\nStarting angle in degrees (default -90, 12 o'clock)\nnInnerDia\nNumeric\nInner diameter ratio (0.0-1.0, default 0.75)\nlIndefinite\nLogical\nEnable indeterminate spinning animation\nnColorText\nNumeric\nText color for percentage or prompt display\nnColorInner\nNumeric/Array\nInner circle color (numeric or gradient)\nnColorRemain\nVaries\nRemaining arc brush: numeric, gradient, image path, or TBrush\nnColorDoneMin\nVaries\nCompleted arc brush: numeric, gradient, image path, or TBrush\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, nPos, nW, nH, lPixel, lDesign, oFont, cPrompt, lNoPct, nClrInner, nClrRemain, nClrDoneMin, nClrText, nMin, nMax, nInnerDia )\nCreate a new TProgressWheel control\nSetPos( nVal )\nSet the current position and refresh the display\nGetPos()\nReturn the current position value\nSetRange( nMin, nMax )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tradio.html", "title": "TRadio", "text": "Source:\nsource/classes/radio.prg\nInherits from:\nTControl\nTRadio implements an individual radio button (auto radio button style). Radio buttons are used in groups where only one option can be selected at a time. They are typically managed by a\nTRadMenu\nparent that handles mutual exclusion and keyboard navigation within the group.\nKey DATA Members\nDATA\nType\nDescription\nlChecked\nLogical\nCurrent checked state of the radio button\noRadMenu\nObject\nParent TRadMenu that manages this radio button group\nnPos\nNumeric\nPosition/index of this button within the group\nMethods\nMethod\nDescription\nNew( nRow, nCol, cPrompt, oWnd, bSetGet, lChecked, nPos, oRadMenu )\nCreate a radio button;\nbSetGet\nis a SETGET code block for the selected value\nRedefine( nId, lChecked, nPos, oDlg, oRadMenu )\nRedefine from a dialog resource\nSetCheck( lOnOff )\nSet the checked state and update Windows button control\nIsChecked()\nQuery the button's checked state from Windows\nCheck()\nSet checked to .T. (convenience method)\nUnCheck()\nSet checked to .F. (convenience method)\nClick()\nHandle click: selects this button in the parent TRadMenu and refreshes\nCommands\nCÓDIGO:\n@ nRow, nCol RADIO oRad VAR nOpt PROMPT cText OF oDlg\nExample: Radio Group with TRadMenu\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oRadMenu, nOption := 1\n\n DEFINE WINDOW oWnd TITLE \"Radio Demo\" SIZE 300, 200\n\n @ 10, 10 RADIO oRadMenu VAR nOption ;\n ITEMS \"Option &1\", \"Option &2\", \"Option &3\" ;\n OF oWnd SIZE 120, 80\n\n @ 100, 10 BUTTON \"Show\" SIZE 60, 25 OF oWnd ;\n ACTION MsgInfo( \"Selected: \" + Str( nOption ) )\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tradmenu.html", "title": "TRadMenu", "text": "Source:\nsource/classes/radmenu.prg\nStandalone class (not derived from TControl)\nTRadMenu manages a group of radio button (TRadio) controls as a single logical unit\nwith mutual exclusion: selecting one radio button automatically deselects the others.\nIt provides a simplified interface to create, navigate, and query the state of a\nradio button group without managing individual TRadio objects.\nKey DATA Members\nDATA\nType\nDescription\naItems\nArray\nArray of TRadio objects managed by this group\nbSetGet\nBlock\nSET/GET code block for the current option index\nnOption\nNumeric\nIndex of the currently selected option (1-based)\nbChange\nBlock\nCode block evaluated when the selection changes\nMethods\nMethod\nDescription\nNew( nRow, nCol, acItems, bSetGet, oWnd )\nCreate a new radio group with items from\nacItems\nReDefine( bSetGet, oWnd, anIDs )\nRedefine from dialog resource by control IDs\nSetOption( n )\nProgrammatically set the selected option\nRefresh()\nRefresh the display of all items\nGoPrev()\nSelect the previous option (circular)\nGoNext()\nSelect the next option (circular)\nEnable()\nEnable all radio buttons in the group\nDisable()\nDisable all radio buttons in the group\nExample: 3-Option Radio Group\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oRadMenu, nOption := 1\n\n DEFINE WINDOW oWnd TITLE \"Radio Group\" SIZE 300, 200\n\n @ 10, 10 RADMENU oRadMenu ;\n ITEMS { \"Option &One\", \"Option &Two\", \"Option &Three\" } ;\n SIZE 200, 100 OF oWnd ;\n ON CHANGE ( MsgInfo( \"Selected: \" + Str( oRadMenu:nOption ) ) )\n\n oRadMenu:bSetGet := {|u| If( u == nil, nOption, nOption := u ) }\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/trating.html", "title": "TRating", "text": "Source:\nsource/classes/trating.prg\nInherits from:\nTControl\nTRating is an interactive star-rating control that allows users to select a rating value\nby clicking on star images. It supports hover preview, click-to-set, half-star display,\nand configurable maximum values. The control uses three image states (empty, half, full)\nto render the visual rating.\nKey DATA Members\nDATA\nType\nDefault\nDescription\nnImages\nNumeric\n5\nNumber of rating images/stars to display\nnCurrentValue\nNumeric\n0\nCurrent hover/preview value\nnSelectedValue\nNumeric\n0\nLast clicked (committed) value\nnPercentual\nNumeric\n100\nMaximum value for percentage calculation\nbChanged\nBlock\nCodeblock executed when rating changes (receives new value)\nbSetGet\nBlock\nSetGet codeblock for variable binding (read/write)\nlBorder\nLogical\n.F.\nShow border around the control\nnClrBorder\nNumeric\nBorder color\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, nWidth, nHeight, nRating, cEmptyImg, cHalfImg, cFullImg, lBorder, nClrBorder, nBackColor, lDesign, nInitialValue, nMaxValue, bChanged, bSetGet )\nCreate a new TRating control\nSetValue( x )\nSet the rating value programmatically. If x is omitted, resets to 0.\nReset()\nReset the rating to 0 (calls SetValue() with no argument)\nDisplay()\nBegin paint, render, end paint\nPaint()\nRender the rating stars based on current and selected values\nMouseMove( nRow, nCol, nKeyFlags )\nHandle hover: update\nnCurrentValue\nfor visual preview\nMouseLeave( nRow, nCol, nKeyFlags )\nHandle mouse leave: restore display to committed value\nLButtonUp( nRow, nCol, nKeyFlags, lTouch )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/trebar.html", "title": "TReBar", "text": "Source:\nsource/classes/rebar.prg\nInherits from:\nTControl\nTReBar wraps the Windows rebar / coolbar common control to create a container\nthat hosts multiple child windows in resizable bands. Each band can contain a\ntoolbar, a combobox, or any other control, and can be rearranged or resized\nby the user at runtime via a gripper bar at the left edge of each band.\nKey DATA Members\nDATA\nType\nDescription\naBands\nArray\nArray of band definitions (controls and text)\nMethods\nMethod\nDescription\nNew( oWnd )\nCreate a new TReBar control attached to a window\nInsertBand( oControl, cText )\nInsert a new band containing\noControl\nwith optional caption text\nExample: Rebar with Two Toolbar Bands\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oReBar, oBar1, oBar2\n\n DEFINE WINDOW oWnd TITLE \"ReBar Demo\" SIZE 600, 400\n\n oReBar := TReBar():New( oWnd )\n\n DEFINE BUTTONBAR oBar1 _3D OF oWnd SIZE 30, 30\n DEFINE BUTTON OF oBar1 RESOURCE \"new.bmp\" ACTION MsgInfo( \"New\" )\n DEFINE BUTTON OF oBar1 RESOURCE \"open.bmp\" ACTION MsgInfo( \"Open\" )\n DEFINE BUTTON OF oBar1 RESOURCE \"save.bmp\" ACTION MsgInfo( \"Save\" )\n\n DEFINE BUTTONBAR oBar2 _3D OF oWnd SIZE 30, 30\n DEFINE BUTTON OF oBar2 RESOURCE \"cut.bmp\" ACTION MsgInfo( \"Cut\" )\n DEFINE BUTTON OF oBar2 RESOURCE \"copy.bmp\" ACTION MsgInfo( \"Copy\" )\n DEFINE BUTTON OF oBar2 RESOURCE \"paste.bmp\" ACTION MsgInfo( \"Paste\" )\n\n oReBar:InsertBand( oBar1, \"File\" )\n oReBar:InsertBand( oBar2, \"Edit\" )\n\n oWnd:oClient := oReBar\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tribbon.html", "title": "TRibbonBar", "text": "Office-style ribbon bar with tabs, groups, and buttons\nSource:\nsource/classes/tribbon.prg\n|\nParent:\nTControl\n|\nHeader:\ninclude/ribbon.ch\nOverview\nTRibbonBar\nimplements a Microsoft Office-style ribbon interface. The ribbon docks to the top of a window and organizes commands into tabs, each containing groups of buttons. It supports multiple visual styles (2010, 2013, 2015, 2016), a Quick Access toolbar, keyboard accelerators, backstage view, and fully owner-drawn rendering with gradients.\nArchitecture\n[diagrama]\nComponent Hierarchy\n[diagrama]\nTRibbonBar Properties\nProperty\nType\nDescription\naPrompts\nArray\nArray of tab label strings\naDialogs\nArray\nArray of dialog objects (one per tab, holding groups)\nnOption\nNumeric\nCurrently selected tab index (1-based)\nnOldOption\nNumeric\nPreviously selected tab (for change detection)\nbAction\nBlock\nCode block fired on tab change:\n{ |nOption, nOldOption| ... }\naEnable\nArray\nPer-tab enable state\naVisible\nArray\nPer-tab visibility state\nnTopMargin\nNumeric\nHeight of the tab strip area (default 25)\nnGroupSeparation\nNumeric\nPixel gap between groups (default 3)\nnLeftMargin\nNumeric\nLeft margin for the first group\nnRightMargin\nNumeric\nRight margin\nnRoundBox\nNumeric\nCorner radius for tab boxes (default 7)\nnClrPaneRB\nNumeric\nRibbon background color\nnClrBoxOut / nClrBoxIn\nNumeric\nTab box outer/inner colors\nnClrBoxSelOut / nClrBoxSelIn\nNumeric\nSelected tab box outer/inner colors\naGrad\nArray\nBackground gradient\naGradFld\nArray\nTab content area gradient\naGradHigh\nArray\nTab highlight gradient (mouse-over)\naGradOver\nArray\nTab hover gradient\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tribbon_elems.html", "title": "TRbGroup / TRBtn / TRPanel — Ribbon Elements", "text": "Source:\nsource/classes/trbgroup.prg\n,\nsource/classes/trbtn.prg\n,\nsource/classes/trpanel.prg\nInherits from:\nTControl\n(all three)\nTRbGroup, TRBtn and TRPanel are the building blocks of the ribbon bar system. TRbGroup represents a named group of buttons inside a ribbon. TRBtn is an individual ribbon button supporting normal, popup and split-popup layouts. TRPanel is a lightweight panel used as a container for ribbon controls. Together they provide the Office 2007/2010-style ribbon user interface.\nTRbGroup\nKey DATA Members\nDATA\nType\nDescription\naGradSel\nArray\nGradient array for the selected/hovered state\naGradCaption\nArray\nGradient array for the group caption area\naGradDisable\nArray\nGradient array for the disabled state\nbAction\nCodeblock\nCode block executed when the group label is clicked\nhBrushSel\nHandle\nBrush handle for the selected state background\nlMOver\nLogical\nMouse-over state flag\nlEnable\nLogical\nEnable/disable state of the group\nMethods\nMethod\nDescription\nNew( oWnd, nRow, nCol, nHeight, nWidth, nIndex, cPrompt, bAction, ... )\nCreate a new ribbon group. Accepts gradient arrays, brushes, and caption text\nAddButton( nRow, nCol, nH, nW, cPrompt, bAction, cType, ... )\nAdd a button to the group with layout, popup, and grouping parameters\nAddSeparator( nCol )\nInsert a visual separator at the specified column\nEnable( lStatus )\nEnable or disable the entire group\nPaint()\nRender the group background, caption, borders and child buttons\nTRBtn\nKey DATA Members\nDATA\nType\nDescription\nbAction\nCodeblock\nCode block executed on click\ncName\nCharacter\nButton identifier name\nhBitmap1\nHandle\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tribbon_extra.html", "title": "TBackStage", "text": "Source:\nsource/classes/tribbon.prg\nInherits from:\nTControl\nTBackStage implements the Office-style backstage view -- a full-panel menu replacing the ribbon when activated (typically by clicking the File tab). It displays a vertical list of selectable options and action buttons with icons, gradients, and hover effects.\nKey DATA Members\nDATA\nType\nDescription\naOptions\nArray\nArray of TBackStageOption objects\nnMainWidth\nNumeric\nWidth of the options panel (default 155)\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight, oWnd, nMainWidth )\nCreate a backstage panel\nAddOption( cCaption, ... )\nAdd a selectable option or button\nPaint()\nRender the backstage\nGetSelectedOpt()\nReturn selected option index\nTBackStageOption\nStandalone (used by TBackStage)\nDATA\nType\nDescription\ncCaption\nCharacter\nDisplay text\ncBmp\nCharacter\nIcon bitmap file\nbAction\nBlock\nAction on selection\nnType\nNumeric\n1 = selectable, 2 = button\nTQuickAccess\nSource:\nsource/classes/tribbon.prg\nInherits from:\nTRibbonBar\nQuick Access Toolbar sits above ribbon tabs with small icon buttons for frequent commands.\nMethod\nDescription\nNew( oRibbon, nLeft )\nCreate the toolbar\nAddButton( cBmp, bAction, cTooltip )\nAdd a button with bitmap and action\nDelButton( oButton )\nRemove a button\nExample: Backstage with Pages\nCÓDIGO:\n#include \"FiveWin.ch\"\nfunction Main()\n local oWnd, oRBar, oBack\n DEFINE WINDOW oWnd TITLE \"Ribbon Demo\" SIZE 800, 600\n DEFINE RIBBONBAR oRBar WINDOW oWnd PROMPT \"Home\", \"Insert\"\n oBack := TBackStage():New( 25, 0, 600, 800, oWnd, 180 )\n oBack:AddOption( \"New\", , , 1, , , , , \"new.bmp\" )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tribbonbar.html", "title": "TRibbonBar", "text": "Source:\nsource/classes/tribbonbar.prg\nOverview\nTRibbonBar class — part of the FiveWin for Harbour/xHarbour framework.\nAccelerators\nTRibbonBar supports standard Windows-style\n&\naccelerators for tab\nswitching. Place\n&\nbefore the desired letter in each prompt:\nCÓDIGO:\nDEFINE RIBBONBAR oRBar WINDOW oWnd ;\n PROMPT \"&Configuración\", \"&Ficheros\", \"&Informes\", \"&Ayudas\" ;\n HEIGHT 133 TOPMARGIN 25\nWhen\nlUseAcc\nis\n.F.\n(the default), pressing\nAlt+key\nswitches to the matching tab. The underlined letter is\nrendered in the tab prompt. The keytip number boxes are not shown.\nTo enable the keytip overlay (numbered squares), set\noRBar:lUseAcc := .T.\n.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/trichedit.html", "title": "TRichEdit / TScintilla", "text": "Rich text editing with RTF formatting, and source code editing with syntax highlighting\n[diagrama]\nTRichEdit\nSource:\nsource/classes/trichedi.prg\n|\nParent:\nTControl\nTRichEdit\nwraps the Windows\nRichEdit20A\ncontrol, providing a full-featured RTF editor. It supports bold/italic/underline formatting, font and color changes, paragraph alignment, bullet lists, embedded images via OLE, find/replace, zoom, undo/redo, and print/preview/PDF export.\nProperties\nProperty\nType\nDescription\ncFileName\nString\nCurrent RTF file path\nnRTFSize\nNumeric\nMaximum text size limit\nlURL\nLogical\nEnable automatic URL detection and clickable links\nlRE30\nLogical\nUsing RichEdit 3.0+ (supports zoom, redo, advanced typography)\nlReadOnly\nLogical\nRead-only mode -- editing disabled\nlHighlight\nLogical\nEnable syntax highlighting (for code editing)\naKeywords1\nArray\nPrimary highlighted keywords\naKeywords2\nArray\nSecondary highlighted keywords\ncSeparators\nString\nToken separator characters for highlighting\nnClrNumber\nNumeric\nColor for numeric literals\nnClrString\nNumeric\nColor for string literals\nnClrComment\nNumeric\nColor for comments\nKey Methods\nMethod\nDescription\nNew( nTop, nLeft, bSetGet, oWnd, nWidth, nHeight, oFont, lPixel, cMsg, lHScroll, lReadOnly, bWhen, bValid, bChanged, lDesign, lHighlight, cFileName, nRTFSize, lNoURL, lNoScroll, lNoBorder )\nConstructor\nReDefine( nId, bSetGet, oWnd, ... )\nRedefine from resource\nText Formatting\nSetBold( lOnOff )\nToggle bold on selected text\nSetItalic( lOnOff )\nToggle italic\nSetUnderline( lOnOff )\nToggle underline\nSetStrikeOut( lOnOff )\nToggle strikethrough\nSetFontName( cName )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/trichedit5.html", "title": "TRichEdit5", "text": "Source:\nsource/classes/triched5.prg\nInherits from:\nTControl\nTRichEdit5 wraps the Windows RichEdit 5.0 control (\nRichEdit50W\nwindow class), providing\nadvanced rich text editing with support for RTF formatting, syntax highlighting, table\ninsertion, inline pictures, spell checking, printing, and PDF export. It is suitable for\nbuilding full-featured text editors and code editors within FiveWin applications.\nKey DATA Members\nDATA\nType\nDescription\ncFileName\nCharacter\nLoaded file name\nnRTFSize\nNumeric\nMaximum RTF text size limit\nlReadOnly\nLogical\nRead-only mode\nlHighlight\nLogical\nEnable syntax highlighting\naKeywords1\nArray\nFirst keyword set for syntax highlighting\naKeywords2\nArray\nSecond keyword set for syntax highlighting\nlBar\nLogical\nShow built-in formatting toolbar\noBar\nObject\nBuilt-in toolbar object\nlSpell\nLogical\nEnable spell checking\nnClrNumber\nNumeric\nSyntax color for numbers\nnClrString\nNumeric\nSyntax color for strings\nnClrComment\nNumeric\nSyntax color for comments\nnClrKey1\nNumeric\nSyntax color for first keyword set\nnClrKey2\nNumeric\nSyntax color for second keyword set\nMethods\nMethod\nDescription\nNew( nTop, nLeft, bSetGet, oWnd, nW, nH, oFont, lPixel, cMsg, lHScroll, lReadOnly, bWhen, bValid, bChanged, lDesign, lHighlight, cFileName, nRTFSize, lNoURL, lNoScroll, lNoBorder, nLeftMargin, lNew, lBar )\nCreate a new TRichEdit5 control\nReDefine( nId, ... )\nRedefine from dialog resource\nLoadRTF( cRTF, lTxt )\nLoad RTF or plain text content\nSaveAsRTF()\n/\ncText( cText )\nGet or set the control content as text\nInsertTable( nRows, nCols )\nInsert a table at the cursor position\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tsay.html", "title": "TSay", "text": "Source:\nsource/classes/say.prg\nInherits from:\nTControl\nTSay renders static text within a window or dialog. It is the standard control for labels, prompts, and read-only text display. TSay supports data binding via\nbSetGet\n, automatic refresh when the bound variable changes, picture clauses for formatted output, 3D effects (raised or sunk), transparent backgrounds, border styles, and tooltip text. It is one of the most frequently used controls in FiveWin applications.\nKey DATA Members\nDATA\nType\nDescription\nbSetGet\nBlock\nData-binding code block. When the say is refreshed, the block is evaluated and the result becomes the displayed text.\ncPicture\nCharacter\nPicture clause for formatted output (e.g.\n\"999,999.99\"\n,\n\"@!\"\nfor uppercase).\nnClrBorder\nNumeric\nBorder color when\nlBorder\nis\n.T.\n(RGB value).\nbClrText\nBlock\nCode block that returns a color value. Evaluated at paint time to support dynamic text colors.\nl3D\nLogical\nIf\n.T.\n, the text is rendered with a 3D effect (raised or etched).\nlAdjust\nLogical\nIf\n.T.\n, the control size adjusts automatically to fit the text content.\nlBorder\nLogical\nIf\n.T.\n, a border is drawn around the say control.\nnClrText\nNumeric\nText foreground color (RGB value).\nnClrPane\nNumeric\nBackground fill color (RGB value).\ncCaption\nCharacter\nCurrent displayed text.\nMethods\nMethod\nDescription\nNew( nRow, nCol, bText, oWnd, nClrT, nClrP, oFont, lPixel, lDesign, lTransparent, cMsg, lUpdate, cPict, lBorder, lAdjust, oToolTip, nClrBorder )\nCreate a new say control.\nbText\nis a fixed string or code block that returns the text. […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tsaybarcode.html", "title": "TSayBarCode", "text": "Source:\nsource/classes/tsaybcod.prg\nInherits from:\nTControl\nTSayBarCode renders barcodes as a visual control on windows and dialogs. It supports multiple barcode symbologies (Code 128, Code 39, EAN, etc.) with configurable orientation, pin size, and display flags. The control can be bound to a data variable for automatic refresh.\nKey DATA Members\nDATA\nType\nDescription\ncText\nCharacter\nText string to encode in the barcode\nbGet\nCode block\nCode block returning the barcode text value\nBarCodeType\nNumeric\nBarcode symbology type (default 128 for Code 128)\nlVertical\nLogical\nRender the barcode vertically\nnPinSize\nNumeric\nWidth of the narrowest bar element in pixels\nnFlags\nNumeric\nAdditional rendering flags for the barcode engine\nMethods\nMethod\nDescription\nNew( nRow, nCol, bText, cType, oWnd, nW, nH )\nCreate a new barcode control with text block, type, and dimensions\nRedefine( nID, bText, cType, oWnd )\nRedefine from a dialog resource by control ID\nPaint()\nDraw the barcode graphic in the control area\nRefresh()\nRe-render the barcode after changing properties\nSetText( c )\nUpdate the barcode text and refresh the display\nCommands\nCÓDIGO:\n@ nRow, nCol SAYBARCODE oBar VAR bBlock TYPE cType SIZE nW, nH OF oDlg\nExample: Code128 Barcode\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oBar\n local cCode := \"ABC-12345\"\n\n DEFINE WINDOW oWnd TITLE \"Barcode Demo\" SIZE 400, 200\n\n @ 20, 20 SAYBARCODE oBar VAR { || cCode } ;\n TYPE \"CODE128\" SIZE 360, 80 OF oWnd\n\n oBar:nPinSize := 2\n oBar:lVertical := .F.\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nThe\nBarCodeType\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscintilla.html", "title": "TScintilla", "text": "Source:\nsource/classes/scintila.prg\nHierarchy:\nTScintilla\n→\nTControl\nTScintilla wraps the Scintilla source code editing component (\nscintilla.org\n)\nfor use within FiveWin applications. It provides a full-featured code editor with syntax\nhighlighting, code folding, line numbering, bookmarks, search/replace, undo/redo, and\nsupport for multiple lexers including Harbour/xHarbour syntax.\nSCINTILLA Command\nCÓDIGO:\n@ nRow, nCol SCINTILLA oSci SIZE nW, nH OF oWnd FONT oFont LEXER cLexer\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncFileName\nCharacter\nCurrently loaded file path\ncLexer\nCharacter\n0\nLexer identifier for syntax highlighting\nlMargLin\nLogical\n.F.\nShow line number margin\nlFolding\nLogical\n.F.\nEnable code folding margin\nlMarking\nLogical\n.F.\nShow bookmark/symbol margin\nlModified\nLogical\n.F.\nWhether the document has unsaved changes\nbModified\nBlock\nCodeblock evaluated when the document modification state changes\ncCKeyw1..cCKeyw5\nArray\nSyntax color arrays: each is\n{ nForeColor, nBackColor, nCase }\nfor keyword levels 1–5\nMethods\nMethod\nDescription\nNew( nRow, nCol, nWidth, nHeight, oWnd, nClrT, nClrP, cLex, cDll, bSetup )\nConstructor. Loads the SciLexer DLL and creates the Scintilla window.\nOpenFile( cFileName )\nLoad a file into the editor. Detects UTF-8 BOM automatically.\nSave()\nSave the current content to disk. Prompts for filename if none is set.\nOpen()\nShow a file-open dialog and load the selected file.\nSetText( cText )\nReplace the entire editor content with a string.\nGetText()\nReturn the entire editor content as a string.\nGetLine( nLine )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscrollbar.html", "title": "TScrollBar", "text": "Source:\nsource/classes/scrllbar.prg\nInherits from:\nTControl\nTScrollBar is a standalone scrollbar control that can be placed independently within a window or dialog. Unlike window automatic scroll bars, TScrollBar is a control object that fires action blocks when the user scrolls, making it suitable for custom browse panels, range selectors, and scrollable containers.\nKey DATA Members\nDATA\nType\nDescription\nnMin\nNumeric\nMinimum scrollbar value\nnMax\nNumeric\nMaximum scrollbar value\nnPgStep\nNumeric\nPage-step increment for the scrollbar\nlVertical\nLogical\n.T.\nfor vertical scrollbar,\n.F.\nfor horizontal\nbGoUp\nBlock\nAction on small increment (down arrow / right arrow)\nbGoDown\nBlock\nAction on small decrement\nbGoTop\nBlock\nAction on reaching the top/left extreme\nbGoBottom\nBlock\nAction on reaching the bottom/right extreme\nbPageUp\nBlock\nAction on page increment (click above the thumb)\nbPageDown\nBlock\nAction on page decrement\nMethods\nMethod\nDescription\nNew( nRow, nCol, nMin, nMax, nPgStep, lVert, oWnd )\nCreate a new scrollbar control\nWinNew( nMin, nMax, nPgStep, lVert, oWnd )\nCreate a scrollbar using window coordinates\nGoUp()\nScroll up/right by one step\nGoDown()\nScroll down/left by one step\nGoTop()\nScroll to the minimum position\nGoBottom()\nScroll to the maximum position\nPageUp()\nScroll up by one page step\nPageDown()\nScroll down by one page step\nSetPos( n )\nSet the thumb position to\nn\nGetPos()\nReturn the current thumb position\nExample: Vertical Scrollbar Linked to Browse\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oScroll, nPos := 1\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscrollimg.html", "title": "TScrollImg", "text": "Source:\nsource/classes/scrolimg.prg\nInherits from:\nTPanel\nTScrollImg is an image banner / carousel control that displays a scrolling collection of images. It supports multiple display modes, automatic animation, fading transitions, zoom on hover, click actions per image, and state persistence. Originally designed for product showcases and advertisement banners.\nKey DATA Members\nDATA\nType\nDescription\naElements\nArray\nArray of element definitions (file, URL, action, prompt)\nnImages\nNumeric\nNumber of images loaded from the banner list\nnMode\nNumeric\nDisplay mode 1-4 (scroll direction / layout variant)\nnSpeed\nNumeric\nScroll speed in pixels per timer tick\nlRunning\nLogical\nAnimation is currently running\nlPaused\nLogical\nAnimation is paused\naOpacity\nArray\nPer-image opacity values (0-255)\nnZoomedImage\nNumeric\nIndex of the currently zoomed image (0 = none)\nlFading\nLogical\nFading transition is in progress\nlMouseWheel\nLogical\nEnable mouse wheel scrolling\nlChangeSpeed\nLogical\nAllow speed change via +/- keys\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, oWnd, aBanners, nMode, nSpeed, ... )\nCreate a new image carousel with banner file list and display mode\nRedefine( nId, oWnd, aBanners, nMode, nSpeed, ... )\nRedefine from a dialog resource\nReset()\nReset the carousel to its initial state, reposition all images\nAnimate()\nStart or restart the scrolling animation timer\nPaint()\nRender the background and all visible images\nTimerAction()\nTimer callback that advances the scroll position each tick\nSaveState( cFile )\nSave the current carousel state (positions, images) to a file\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscrollmetro.html", "title": "TScrollMetro", "text": "Source:\nsource/classes/scrollm.prg\nInherits from:\nTControl\nTScrollMetro provides a modern Metro-style scrollbar control. It replaces the classic Windows scrollbar with a flat, touch-friendly design suitable for tablet and modern UI applications. The control supports programmatic positioning, range management, and code-block event hooks for all scroll actions.\nKey DATA Members\nDATA\nType\nDescription\nlVertical\nLogical\nOrientation:\n.T.\nfor vertical,\n.F.\nfor horizontal\nnMin / nMax\nNumeric\nScroll range minimum and maximum values\nnPgStep\nNumeric\nPage step increment for page-up/page-down actions\nnPos\nNumeric\nCurrent scroll thumb position\nbGoUp / bGoDown\nCode block\nExecuted when the up/left or down/right button is clicked\nbGoTop / bGoBottom\nCode block\nExecuted when the thumb is dragged to the top or bottom\nbPageUp / bPageDown\nCode block\nExecuted on page-up/page-down track area click\nbPos / bTrack\nCode block\nExecuted on position change and thumb tracking\nMethods\nMethod\nDescription\nNew( nRow, nCol, nMin, nMax, nPgStep, lVert, oWnd, nW, nH )\nCreate a new Metro scrollbar with range, step, and orientation\nSetRange()\nUpdate the scroll range from\nnMin\nand\nnMax\nvalues\nSetPos( nPos ) / GetPos()\nSet or retrieve the current scroll thumb position\nGoUp() / GoDown()\nMove the thumb up (or left) / down (or right) by one step\nGoTop() / GoBottom()\nMove the thumb to the minimum or maximum position\nPageUp() / PageDown()\nMove the thumb by the page step amount\nExample: Vertical Scrollbar for Browse\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oScroll\n local nPos := 0\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscrollmsg.html", "title": "TScrollMsg", "text": "Source:\nsource/classes/scrolmsg.prg\nInherits from:\nTPanel\nTScrollMsg is an auto-scrolling marquee text control. It continuously scrolls text either horizontally (ticker-tape style) or vertically (scrolling credits style). A timer drives incremental pixel scrolling, and the text wraps around seamlessly when it reaches the end. It supports configurable speed, colors, borders, and runtime text updates.\nKey DATA Members\nDATA\nType\nDescription\ncText\nCharacter\nThe text to scroll (read-only, use\nSetText()\nto update)\nlVertical\nLogical\nVertical scrolling when\n.T.\n(default), horizontal when\n.F.\nnSpeed\nNumeric\nScroll speed in pixels per tick (default 2)\nlBorder\nLogical\nDraw a border around the control (default\n.T.\n)\nnScrollPix\nNumeric\nCurrent pixel scroll offset (protected)\nnTextSize\nNumeric\nCached text dimension for wrap calculation (protected)\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, cText, oWnd, oFont, nSpeed, nClrText, nClrBack, lHoriz, lPixels, lDesign, cVarName, lNoBorder )\nCreate a new TScrollMsg marquee control\nSetText( cText )\nChange the scrolling text at runtime and restart scroll\nExample: Horizontal Marquee\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oScroll\n\n DEFINE WINDOW oWnd TITLE \"News Ticker\" SIZE 600, 100\n\n oScroll := TScrollMsg():New( 10, 10, 560, 30,;\n \"Breaking news: FWH 26.05 released!\",;\n oWnd,, 3, CLR_YELLOW, CLR_BLUE, .T., .T. )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nThe marquee timer interval is fixed at 18 ms (approximately 55 fps). Adjust\nnSpeed\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscrollpanel.html", "title": "TScrollPanel", "text": "Source:\nsource/classes/scrlpanl.prg\nInherits from:\nTPanel\nTScrollPanel is a scrollable container panel with automatic vertical and horizontal scrollbars\nthat track the extent of child controls. It supports mouse-wheel scrolling, click-and-drag scroll,\ntouch panning via gesture handling, page-based navigation, and helper methods to bring any child\ncontrol into view. Created by G.N. Rao.\nKey DATA Members\nDATA\nType\nDescription\nvStep\nNumeric\nVertical scroll step in pixels (default 20)\nhStep\nNumeric\nHorizontal scroll step in pixels (default 20)\nnScrollRange\nNumeric\nVertical scroll range calculated from child controls\nnHScrollRange\nNumeric\nHorizontal scroll range calculated from child controls\naSays\nArray\nArray of static text rectangles scrolled with the panel\naPages\nArray\nArray of { cPageName, nRow } bookmarks for page navigation\nlScrollDrag\nLogical\nDrag-to-scroll mode flag\nnRightMargin\nNumeric\nRight margin preserved when parent resizes\nnBottomMargin\nNumeric\nBottom margin preserved when parent resizes\noCtrlTop\nObject\nTopmost child control (for scroll range)\noCtrlBot\nObject\nBottommost child control (for scroll range)\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight, oWnd, lNoBorder )\nCreate a new TScrollPanel\nSetRange()\nScan child controls and set scroll range. Call after adding all controls.\nScrollBy( nV, nH )\nScroll the panel by nV pixels vertically and nH pixels horizontally\nGoTop()\nScroll to the top of the panel\nGoBottom()\nScroll to the bottom of the panel\nGoLeft()\nScroll to the left edge\nGoRight()\nScroll to the right edge\nGoUp( nPix )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscrollpanel_ex.html", "title": "TScrollPanelEx", "text": "Source:\nsource/classes/scrollex.prg\nInherits from:\nTPanel\nTScrollPanelEx is an enhanced scrollable panel that supports horizontal scrolling of child controls with keyboard, mouse wheel, scroll bar, and gesture (touch/pan) input. It tracks the leftmost and rightmost child controls to compute the scroll range and provides automatic scrollbar management. The panel is commonly used for toolbars, ribbon-style layouts, and overflow containers.\nKey DATA Members\nDATA\nType\nDescription\nhStep\nNumeric\nHorizontal scroll step in pixels (default 20)\nnScrollRange\nNumeric\nComputed scroll range based on child control positions\noCtrlLeft\nObject\nLeftmost child control (used for scroll boundary)\noCtrlRight\nObject\nRightmost child control\nnRightMargin\nNumeric\nRight margin for auto-resize\nnBottomMargin\nNumeric\nBottom margin for auto-resize\naPages\nArray\nNamed page positions for GoToPage navigation\nlScrollDrag\nLogical\nDrag-to-scroll mode flag\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight, oWnd, lNoBorder )\nCreate a scrollable panel. Pass\nlNoBorder := .T.\nto omit the border\nRedefine( nId, oWnd, lNoBorder )\nRedefine from a dialog resource\nSetRange()\nScan child controls and set the scroll range\nScrollBy( nPix )\nScroll content horizontally by the given pixel offset\nGoLeft() / GoRight()\nScroll to the extreme left or right\nGoLeftPix( nPix ) / GoRightPix( nPix )\nScroll by a specific pixel amount\nPageLeft() / PageRight()\nScroll by two step sizes (page-style)\nGoToPos( nPos )\nScroll to an absolute scrollbar position\nGoToPage( cPage )\nScroll to a named page (registered via SetPage)\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tscrollpanelex.html", "title": "TScrollPanelEx", "text": "Source:\nsource/classes/tscrollpanelex.prg\nOverview\nTScrollPanelEx class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tselex.html", "title": "TSelex / TSelector", "text": "Source:\nsource/classes/tselex.prg\n,\nsource/classes/selector.prg\nInherits from:\nTControl\n(both)\nTSelex is a segmented slider control with a draggable thumb that lets users pick from a discrete set of options. TSelector is a circular / radial dial control for selecting a value along an arc. Both provide visual selection with gradient rendering and keyboard/mouse interaction.\nTSelex — Segmented Slider\nKey DATA Members\nDATA\nType\nDescription\naOptions\nArray\nArray of option labels displayed along the track\nbOnSelect\nCodeblock\nCode block fired when an option is selected\nnOption\nNumeric\nCurrently selected option index (1-based)\nnClrThumb\nNumeric\nThumb color (RGB)\naGradOut\nArray\nGradient for the outer track area\naGradIn\nArray\nGradient for the inner track area\nnRound\nNumeric\nCorner radius for the track background\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, oWnd, lPixel, aOptions, bOnSelect, ... )\nCreate a segmented slider with gradient and thumb parameters\nSetOption( nOption )\nProgrammatically select an option by index\nGoNext( lRefresh )\nMove selection to the next option\nGoPrev( lRefresh )\nMove selection to the previous option\nAddOption( cText )\nAppend a new option to the slider\nInsertOption( cText, nPos )\nInsert an option at a specific position\nDelOption( nOption )\nRemove an option by index\nSetText( cText, nOption )\nChange the text of an existing option\nTSelector — Radial Dial\nKey DATA Members\nDATA\nType\nDescription\nnPos\nNumeric\nCurrent angular position in radians\nnArc\nNumeric\nTotal arc length in radians\nnRadius\nNumeric\nDial radius in pixels\nnMin\nNumeric\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tskin.html", "title": "TSkin", "text": "Source:\nsource/classes/skin.prg\nInherits from:\nTControl\nTSkin applies a custom bitmap-based skin to a window, replacing the standard Windows title bar, borders and caption buttons with styled images. It loads 11 component bitmaps from a skin folder (corner pieces, edge tiles, close/maximize/minimize buttons) and handles hit-testing, window dragging and resizing. A convenience function\nSKIN()\nprovides one-line activation.\nKey DATA Members\nDATA\nType\nDescription\naBmp\nArray\nArray of 11 TBitmap objects forming the skin: corners (1-3,5-7), edges (4,8), buttons (9-11)\ncSkin\nCharacter\nPath to the skin folder containing w01-w12, close, max, min .bmp files\nnTrans\nNumeric\nWindow transparency level (0-255)\nlReSize\nLogical\nEnable window resizing by dragging skin edges/corners\nnTextColor\nNumeric\nColor of the title bar text\nMethods\nMethod\nDescription\nNew( oWnd, cSkin, nTrans, lReSize, nTextColor, nTextTop )\nCreate a skin overlay. Loads all 11 bitmap components from the skin folder\nUpdate()\nReposition and redraw all skin elements to match the current window size and position\nPosition( oBmp, nTop, nLeft, nWidth, nHeight )\nPosition a skin bitmap at the given coordinates and dimensions\nTransparent( nTrans )\nAdjust the transparency level of the skin\nEnd()\nClean up and remove the skin\nSKIN() Function\nSyntax\nDescription\nSKIN( oWnd, cSkinFolder )\nFree function that creates a TSkin instance attached to the given window\nExample: Apply Custom Skin to Window\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd\n\n DEFINE WINDOW oWnd TITLE \"Skinned Window\" SIZE 600, 400\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tskinbutton.html", "title": "TSkinButton", "text": "Source:\nsource/classes/tskinbtn.prg\nStandalone class (not a visual control, not from TControl)\nTSkinButton is a color-skin definition class for skinned buttons. It is a non-visual data class that stores gradient arrays and border color pairs for four button states: focused, pressed, normal, and disabled. The default constructor values produce an Office 2007-inspired blue theme. Apply a TSkinButton instance to any compatible button control via\noBtn:SetSkin( oSkin )\n.\nKey DATA Members\nDATA\nType\nDescription\naClrFocused\nArray\nGradient array for the focused/hover state\naClrPressed\nArray\nGradient array for the pressed state\naClrNormal\nArray\nGradient array for the default/normal state\naClrDisabled\nArray\nGradient array for the disabled state\nnClrBorder0_F\nNumeric\nBorder color 1, focused state\nnClrBorder1_F\nNumeric\nBorder color 2, focused state\nnClrBorder0_P\nNumeric\nBorder color 1, pressed state\nnClrBorder1_P\nNumeric\nBorder color 2, pressed state\nnClrBorder0_N\nNumeric\nBorder color 1, normal state\nnClrBorder1_N\nNumeric\nBorder color 2, normal state\nnClrTextDisable_0\nNumeric\nText color for disabled state\nnClrTextDisable_1\nNumeric\n3D highlight text color for disabled state\nMethods\nMethod\nDescription\nNew( aClrFocused, aClrPressed, aClrNormal, aClrDisabled, nClrBdr0_F, nClrBdr1_F, nClrBdr0_P, nClrBdr1_P, nClrBdr0_N, nClrBdr1_N, nClrTxtDis0, nClrTxtDis1 )\nCreate a TSkinButton skin definition with custom colors\nExample: Custom Skin and Apply\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oBtn, oSkin\n\n DEFINE WINDOW oWnd TITLE \"SkinButton Demo\" SIZE 300, 200\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tslider.html", "title": "TSlider", "text": "Source:\nsource/classes/slider.prg\nInherits from:\nTControl\nTSlider provides a trackbar / slider control for selecting a numeric value by dragging a thumb\nalong a track. It supports horizontal and vertical orientation, tick marks, snap-to-grid (exact)\npositioning, and a slim style with a colored thumb.\nCommand Syntax\nCÓDIGO:\n@ nRow, nCol SLIDER oSld VAR nValue RANGE nMin, nMax SIZE nW, nH PIXEL OF oWnd ;\n HORIZONTAL MARKS nMarks EXACT ON CHANGE bBlock\nKey DATA Members\nDATA\nType\nDescription\nlHorizontal\nLogical\nHorizontal orientation (.T.) or vertical (.F.)\nnMin\nNumeric\nMinimum value of the slider range\nnMax\nNumeric\nMaximum value of the slider range\nnMarks\nNumeric\nNumber of tick marks along the track (0 = no marks)\nlExact\nLogical\nSnap the thumb to the nearest tick mark\nnClrBtn\nNumeric\nColor of the slider thumb button\nlSlimStyle\nLogical\nRender with a slim track and colored thumb\nnDirection\nNumeric\nTick mark direction (1=top, 2=left, 3=bottom, 4=right)\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, lHorizontal, lDirect1, lDirect2, nMin, nMax, nMarks, lExact, oWnd, bChange, bPos, nWidth, nHeight, lPixel, cMsg, nClrFore, nClrBack, nClrBtn, lDesign, lUpdate, lSlim )\nCreate a new TSlider control\nReDefine( nId, bSetGet, lHorizontal, lDirect1, lDirect2, nMin, nMax, nMarks, lExact, oWnd, bChange, bPos, cMsg, nClrFore, nClrBack, nClrBtn, lUpdate, lSlim )\nRedefine from dialog resource\nSet( nVal )\nProgrammatically set the slider to a value\nChange()\nExecute bChange code block with the current value\nDefault()\nRecalculate positions and redraw\nExamples\nVolume Slider (0-100)\nCÓDIGO:\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tslidermetro.html", "title": "TSliderMetro", "text": "Source:\nsource/classes/sliderm.prg\nNot inherited from TControl (standalone class)\nTSliderMetro implements a slide-to-unlock screen in the style of Windows Metro / Modern UI. It displays a full-screen bitmap overlay with \"FiveWin touch\" and \"Slide to unlock\" text, and responds to vertical drag gestures. Dragging the bitmap upward reveals the underlying window. It is designed for touch-enabled kiosk or tablet applications.\nKey DATA Members\nDATA\nType\nDescription\noBmp\nObject\nTBitmap instance holding the full-screen background image\noFont1\nObject\nLarge font (\"Segoe UI Light\" 90pt bold) for the title text\noFont2\nObject\nMedium font (\"Segoe UI Light\" 60pt bold) for the instruction text\nlDrag\nLogical\nIndicates a drag operation is in progress\nMethods\nMethod\nDescription\nNew( cBmpFile, oWnd )\nCreate a slide-to-unlock overlay. Loads the background bitmap and creates the title fonts\nGoBottom()\nAnimate the bitmap back to the locked position (nTop = 0)\nGoTop()\nAnimate the bitmap upward off-screen to unlock the window\nMouseMove( nRow, nCol )\nTrack vertical drag distance and reposition the bitmap accordingly\nExample: Unlock Screen\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oLock\n\n DEFINE WINDOW oWnd TITLE \"App\" SIZE 800, 600\n\n oLock = TSliderMetro():New( \"lock_bg.jpg\", oWnd )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTSliderMetro is not a TControl descendant; it manages a TBitmap directly via the window handle.\nThe background bitmap should match the window dimensions for a seamless full-screen effect.\nText is drawn on the bitmap using\noBmp:Say()\nin the\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tsplitter.html", "title": "TSplitter", "text": "Source:\nsource/classes/splitter.prg\nInherits from:\nTControl\nTSplitter provides a draggable divider bar that allows users to resize adjacent\ncontrol panels at runtime. It is commonly used to create resizable split-pane\nlayouts (e.g. a tree view on the left and an edit area on the right) where the\nuser can drag the splitter to allocate more or less space to each pane.\nKey DATA Members\nDATA\nType\nDescription\nlVertical\nLogical\nVertical splitter (left/right panes) vs horizontal (top/bottom)\naPrevCtrols\nArray\nControls on the previous side (left/top) to be resized\naHindCtrols\nArray\nControls on the hind side (right/bottom) to be resized\nnFirst\nNumeric\nInitial position of the splitter in pixels\nMethods\nMethod\nDescription\nNew( nRow, nCol, lVert, aPrev, lAdjPrev, aHind, lAdjHind, bMargin1, bMargin2, oWnd, bChange )\nCreate a new TSplitter control\nSetPosition( n )\nSet the splitter position programmatically\nAdjClient()\nAdjust the parent window client area accounting for the splitter\nExample: Vertical Splitter Between Tree and Edit\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oTree, oEdit, oSplit\n\n DEFINE WINDOW oWnd TITLE \"Splitter Demo\" SIZE 700, 500\n\n @ 0, 0 TREE oTree SIZE 200, 500 OF oWnd\n oTree:AddNode( \"Node 1\" )\n oTree:AddNode( \"Node 2\" )\n\n @ 0, 210 GET oEdit VAR cVar MEMO SIZE 480, 500 OF oWnd\n\n @ 0, 200 SPLITTER oSplit ;\n VERTICAL ;\n PREVIOUS oTree ;\n HIND oEdit ;\n SIZE 10, 500 OF oWnd\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tstatusbar.html", "title": "TStatusBar", "text": "Source:\nsource/classes/statusba.prg\nInherits from:\nTControl\nTStatusBar wraps the Windows status bar common control to display a multi-pane\nstatus bar at the bottom of a window. It supports an arbitrary number of panes\nwith individual widths and text, an integrated clock, and automatic message\ndisplay with a configurable timeout.\nKey DATA Members\nDATA\nType\nDescription\ncMsgDef\nCharacter\nDefault status bar message text\noTimer\nObject\nInternal timer for message timeout and clock updates\nnPartTime\nNumeric\nPane index reserved for the clock display\nMethods\nMethod\nDescription\nNew( oWnd, cText, aWidths, aPrompts, lClock )\nCreate a new TStatusBar control\nSetMsg( cText )\nSet the status bar text (typically from\noWnd:SetMsg()\n)\nSetParts( aWidths )\nDefine pane widths as an array of numeric values\nSetPartText( nPart, cText )\nSet the text of a specific pane by index\nGetParts()\nReturn the current pane width definitions\nClockOn()\nEnable the clock display in the last pane\nExample: 3-Pane Status Bar with Clock\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd\n\n DEFINE WINDOW oWnd TITLE \"StatusBar Demo\" SIZE 600, 400\n\n DEFINE STATUSBAR oWnd PROMPT \"Ready\" ;\n CLOCK ;\n PARTS 150, 300\n\n // Set text in individual panes\n oWnd:oStatusBar:SetPartText( 2, \"User: Admin\" )\n oWnd:oStatusBar:SetPartText( 3, \"Records: 42\" )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nThe status bar is automatically created at the bottom of the window. The\nDEFINE STATUSBAR\ncommand provides the most convenient syntax;\nTStatusBar():New()\ncan be used for programmatic creation.\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tswitch.html", "title": "TSwitch", "text": "Source:\nsource/classes/tswitch.prg\nInherits from:\nTControl\nTSwitch is a toggle switch control with four rendering modes: standard toggle, oval, radio-style, and check-box.\nIt provides a modern on/off switch with customizable colors, thumb size, and border appearance.\nThe control supports mouse hover effects, keyboard navigation, and read-only mode.\nCommand Syntax\nCÓDIGO:\n@ nRow, nCol SWITCH oSw VAR lVar SIZE nW, nH PIXEL OF oWnd ;\n COLORS nClrOn, nClrOff BORDER nClrBorder\nKey DATA Members\nDATA\nType\nDescription\nnBorderSize\nNumeric\nBorder width of the switch track\nnThumbSize\nNumeric\nSize of the sliding thumb\nnClrThumb\nNumeric\nColor of the thumb indicator\nnClrBorder\nNumeric\nColor of the border around the track\nlHover\nLogical\nMouse hover state flag\nlRadioStyle\nLogical\nRender as radio-style circle switch\nlOvalStyle\nLogical\nRender as oval-shaped toggle\nlReadOnly\nLogical\nPrevent user interaction\nMethods\nMethod\nDescription\nNew( nRow, nCol, cCaption, bSetGet, oWnd, nWidth, nHeight, nHelpTopic, bChange, oFont, bValid, nClrFore, nClrBack, lDesign, lPixel, cMsg, lUpdate, bWhen, nBorderSize, nClrBorder, nThumbSize, nClrThumb, lRadStyle, lOval )\nCreate a new TSwitch control\nReDefine( nId, oWnd, bSetGet, bChange, nClrFore, nClrBack, lUpdate, nHelpId, cMsg, bWhen, bValid, lRadStyle, lOval )\nRedefine from dialog resource\nToggle()\nToggle the switch state (on to off, off to on)\nSetCheck( lOnOff )\nSet the switch to a specific state (.T. = on, .F. = off)\nCheck()\nSet the switch to the on position\nUnCheck()\nSet the switch to the off position\nChange()\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tsyslink.html", "title": "TSysLink", "text": "Source:\nsource/classes/tsyslink.prg\nInherits from:\nTControl\nTSysLink wraps the Windows SysLink common control (Vista+), providing clickable hyperlinks within dialogs. Multiple links can be embedded in a single text string using HTML-style\n\ntags. Links open URLs in the default browser or trigger Harbour code blocks.\nKey DATA Members\nDATA\nType\nDescription\ncText\nCharacter\nDisplay text with\n\ntags defining link regions\ncUrl\nCharacter\nURL opened when a link is clicked\nnLinkId\nNumeric\nIndex of the last clicked link\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, cText, cUrl, nW, nH, lPixel, lDesign, cMsg, bWhen, bClick, lTransparent, ... )\nCreate a new SysLink control\nReDefine( nId, oWnd, cText, cUrl )\nRedefine from a dialog resource\nSetText( cText ) / GetText()\nChange or retrieve the link text\nHitTest( nX, nY )\nTest which link is at the given coordinates\nGetIdealHeight( nWidth )\nReturn ideal height for a given width\nSetItem( nIndex, cUrl, nState ) / GetItem( nIndex )\nModify or query individual link items\nCommands\nCÓDIGO:\n@ nRow, nCol SYSLINK oLink TEXT cText OF oWnd\nExample: Multiple Links\nCÓDIGO:\n#include \"FiveWin.ch\"\nfunction Main()\n local oWnd, oLink\n DEFINE WINDOW oWnd TITLE \"TSysLink Demo\" SIZE 400, 200\n @ 20, 20 SYSLINK oLink TEXT ;\n \"Visit FiveTech \" + ;\n \"and GitHub\" ;\n OF oWnd\n ACTIVATE WINDOW oWnd CENTERED\nreturn nil\nNotes\nRequires Windows Vista or later (SysLink control not available on older versions).\nLink regions are defined with\n\ntags. […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttabcontrol.html", "title": "TTabControl", "text": "Source:\nsource/classes/ttabcontrol.prg\nOverview\nTTabControl class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttabctrl.html", "title": "TTabControl", "text": "Source:\nsource/classes/ttabctrl.prg\nInherits from:\nTControl\nTTabControl wraps the standard Windows\nSysTabControl32\ncommon control. It displays a row of selectable tabs, each with a prompt, and notifies the application when the user clicks a tab via an action code block. TTabControl is a lightweight tab control without built-in page management — it fires an action on selection change and leaves the page-switching logic to the application. For automatic page switching, see\nTTabs\nor\nTPages\n.\nKey DATA Members\nDATA\nType\nDescription\naPrompts\nArray\nArray of character strings displayed as tab labels.\nbAction\nBlock\nCode block evaluated when the user clicks a tab:\n{ |nOption, oCtrl| ... }\n.\nnOption\nNumeric\nIndex of the currently selected tab (1-based).\nnClrText\nNumeric\nText color for tab labels (RGB value).\nnClrPane\nNumeric\nBackground fill color (RGB value).\nhFont\nNumeric (Handle)\nHandle of the font used for tab label text.\noFont\nTFont\nFont object used for tab label text.\ncMsg\nCharacter\nMessage bar text displayed when the tab control receives focus.\nMethods\nMethod\nDescription\nNew( nRow, nCol, aPrompts, bAction, oWnd, nClrT, nClrP, oFont, lPixel, lDesign, nW, nH, cMsg )\nCreate a new tab control.\naPrompts\nis an array of tab label strings.\nbAction\nis called on tab selection.\nReDefine( nId, oWnd )\nRedefine from a dialog resource. Links to an existing SysTabControl32 by its control ID.\nAdd( cPrompt )\nAdd a new tab at the end with the given label text.\nDelItem( nItem )\nRemove the tab at position\nnItem\n(1-based).\nSetPrompts( aPrompts )\nReplace all tab labels with a new array of strings.\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttabs.html", "title": "TTabs", "text": "Source:\nsource/classes/tabs.prg\nInherits from:\nTControl\nTTabs is a custom-drawn tab bar control that displays a row or column of selectable tabs. Unlike TFolder, TTabs only renders the tab strip itself without an integrated page container. It supports horizontal (top/bottom) and vertical (left/right) orientations, bitmap labels, and keyboard navigation.\nKey DATA Members\nDATA\nType\nDescription\naPrompts\nArray\nArray of tab label strings\nnOption\nNumeric\nIndex of the currently selected tab (1-based)\nnOrientation\nNumeric\nTab orientation:\nOR_TOP\n,\nOR_BOTTOM\n,\nOR_LEFT\n,\nOR_RIGHT\nacBitmaps\nArray\nArray of bitmap handles or filenames for each tab\nMethods\nMethod\nDescription\nNew( nTop, nLeft, aPrompts, bAction, oWnd, nOption )\nCreate a new tab bar control\nSetOption( n )\nSelect the tab at index\nn\nAddItem( cPrompt )\nAdd a new tab with the given prompt text\nDelItem( nIndex )\nRemove the tab at the specified index\nSetTabs( aTabs )\nReplace all tab definitions at once\nGoTop()\nSelect the first tab\nGoLeft()\nSelect the tab to the left\nGoBottom()\nSelect the last tab\nGoRight()\nSelect the tab to the right\nExample: 3-Tab Bar\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oTabs, nOpt := 1\n\n DEFINE WINDOW oWnd TITLE \"TTabs Demo\" SIZE 500, 300\n\n @ 10, 10 TAB oTabs PROMPTS \"Files\", \"Edit\", \"View\" ;\n SIZE 460, 30 OF oWnd ACTION oWnd:Refresh()\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTTabs is a standalone tab strip. Pair it with TPages or a dialog-switching mechanism to build a full tabbed interface.\nOrientation constants are\nOR_TOP\n(default),\nOR_BOTTOM\n,\nOR_LEFT\n, and\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttagcloud.html", "title": "TTagCloud", "text": "Source:\nsource/classes/tagcloud.prg\nInherits from:\nTControl\nTTagCloud displays a weighted tag cloud where each tag is rendered in one of seven font sizes based on its weight (frequency). Tags auto-arrange in a flowing layout, highlight on mouse hover with a customizable text and background color, and respond to click events. The control is ideal for keyword navigation, category browsing, or any scenario requiring a visually weighted list.\nKey DATA Members\nDATA\nType\nDescription\naItems\nArray\nArray of items, each\n{ cText, nPeso, nFontIndex, nOriginalPos }\naFonts\nArray\nSeven font handles, one per size level (largest to smallest)\nnHLine\nNumeric\nLine height for tag row wrapping (default 30)\nnClrText\nNumeric\nDefault tag text color\nnClrTextOver\nNumeric\nHover highlight text color (default orange)\nnClrPane\nNumeric\nDefault background color\nnClrPaneOver\nNumeric\nHover highlight background color\naCoors\nArray\nBounding rectangles per item, used for hit testing\nnMaxDescend\nNumeric\nMaximum font descent across all seven fonts\nnOver\nNumeric\nIndex of the currently hovered item, or -1 if none\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, oWnd, oFont )\nCreate a new TTagCloud control\nAddItem( cText, nPeso )\nAdd a tag with text and weight value\nAsignFonts()\nAssign font size indices to items based on sorted weights\nGetFonts()\nBuild the seven font sizes from the current base font\nExample: Tag Cloud with Three Tags\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oTagCloud\n\n DEFINE WINDOW oWnd TITLE \"Tag Cloud\" SIZE 400, 300\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttmpicker.html", "title": "TTimePick", "text": "Source:\nsource/classes/ttmpicke.prg\nInherits from:\nTControl\nTTimePick wraps the Windows date and time picker common control configured for time-only selection.\nIt provides an intuitive interface for selecting hours, minutes, and seconds using up-down spinners\nor direct keyboard input. The control operates on a time string in \"HH:MM:SS\" format.\nCommand Syntax\nCÓDIGO:\n@ nRow, nCol TMPICKER oTmp VAR cTime SIZE nW, nH PIXEL OF oWnd ;\n ON CHANGE bBlock\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, oWnd, nWidth, nHeight, bValid, nClrFore, nClrBack, oFont, lDesign, oCursor, lPixel, cMsg, lUpdate, bWhen, bChange, nHelpId )\nCreate a new TTimePick control\nReDefine( nId, bSetGet, oWnd, nHelpId, nClrFore, nClrBack, oFont, oCursor, cMsg, lUpdate, bWhen, bValid, bChanged )\nRedefine from dialog resource\nSetTime( cHour )\nSet the time value using a string in \"HH:MM:SS\" format\nGetTime()\nRetrieve the current time as a formatted string\ncText( uVal )\nGet or set the formatted time text (SETGET accessor)\nRefresh()\nRefresh the control from the bound variable\nChange()\nExecute the bChange code block\nExample: Time Picker with Change Callback\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oTmp, cTime := Time() // e.g. \"14:25:30\"\n\n DEFINE WINDOW oWnd TITLE \"Time Picker Demo\" SIZE 300, 200\n\n @ 40, 30 TMPICKER oTmp VAR cTime SIZE 100, 22 PIXEL OF oWnd ;\n ON CHANGE MsgInfo( cTime, \"Time Changed\" )\n\n @ 100, 30 BUTTON \"&Get Time\" SIZE 80, 25 PIXEL OF oWnd ;\n ACTION MsgInfo( oTmp:GetTime(), \"Current Time\" )\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttoast.html", "title": "TToast", "text": "Source:\nsource/classes/ttoast.prg\nInherits from:\nTWindow\nTToast provides desktop toast notifications in the Windows 8/10 style.\nNotifications appear as layered windows that auto-position at the screen corner,\nauto-dismiss after a configurable timeout, and support header, body, footer text\nalong with optional bitmap images. The control uses alpha blending for smooth\ntransparency effects and drop shadows.\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncHeader\nCharacter\nHeader text (bold, top section)\ncBody\nCharacter\nBody/main message text\ncFoot\nCharacter\nFooter text\ncBmpLeft\nCharacter\n\"\"\nPath to left-side bitmap image\nnClrPane\nNumeric\nRGB(20,20,20)\nBackground color (dark on Win8+)\nnClrPane2\nNumeric\nSecondary background color (gradient)\nnLevel\nNumeric\n255\nOpacity level (0-255, 255=opaque)\nnTimer\nNumeric\n5000\nAuto-dismiss timeout in milliseconds\nlAlert\nLogical\n.T.\nEnable alert behavior (auto-show and dismiss)\nlUpPos\nLogical\n.F.\nShow at top of screen instead of bottom\nlLeftPos\nLogical\n.F.\nShow at left side instead of right\nbReturn\nBlock\n{ || .T. }\nCodeblock executed when notification is closed\nlBtnClose\nLogical\n.T.\nShow close button\nlShadow\nLogical\n.T.\nShow drop shadow\nMethods\nMethod\nDescription\nNewToast( nType, cText, cBmp, nWidth, nHeight, oWnd, nClrPane, nClrPane2, nClrText, nLev, nTime, lUp, bRet, lLeftP, lAlert, lShadow, nOffY, nOffX, nFont )\nCreate and display a toast notification. This is the primary entry point.\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttoolbar.html", "title": "TToolBar", "text": "Source:\nsource/classes/toolbar.prg\nInherits from:\nTControl\nTToolBar is a toolbar control that hosts bitmap buttons with optional tooltips, images, and modern visual styles.\nIt provides a dockable strip of buttons typically placed at the top of a window. TToolBar supports flat and\n3D button styles, image lists for button glyphs, and modern themes (2007/2010/2013/2015).\nKey DATA Members\nDATA\nType\nDescription\nnBtnWidth\nNumeric\nWidth of each toolbar button\nnBtnHeight\nNumeric\nHeight of each toolbar button\naButtons\nArray\nArray of button definitions added to the toolbar\noImageList\nObject\nImage list supplying button glyphs\nlTTBalloon\nLogical\nEnable balloon-style tooltips instead of standard\nl2007\nLogical\nOffice 2007-themed flat buttons\nl2010\nLogical\nOffice 2010-themed flat buttons\nl2013\nLogical\nOffice 2013-themed flat buttons\nl2015\nLogical\nOffice 2015-themed flat buttons\nMethods\nMethod\nDescription\nNew( oWnd, nBtnW, nBtnH, oImgLst, nClrT, nClrP, lPix, lDes, cMsg, lAdj, lTr, oFont, bClrG, l2007, l2010, l2013, l2015, nTop, nLeft, nW, nH, lNoB, lBlon )\nCreate a new toolbar on the given window\nAddButton( bAction, cToolTip, cText, bWhen, cMsg )\nAdd a button with action, tooltip, optional text\nAddMenu( bAction, cToolTip, cText, bWhen, cMsg, bMenu )\nAdd a dropdown button that shows a popup menu\nAddSeparator()\nAdd a vertical separator between buttons\nDelButton( n )\nRemove a button at the given position\nSetChecked( n, l )\nCheck or uncheck a toggle button\nIsChecked( n )\nReturn .T. if the button at position n is checked\nExample: Toolbar with Three Buttons\nCÓDIGO:\n#include \"FiveWin.ch\"\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttrackbar.html", "title": "TTrackBar", "text": "Source:\nsource/classes/trackbar.prg\nInherits from:\nTControl\nTTrackBar wraps the Win32 trackbar common control (slider). It allows the user to select a numeric value by dragging a thumb along a track, with optional tick marks. It is commonly used for volume controls, brightness sliders, and any ranged value input.\nKey DATA Members\nDATA\nType\nDescription\nnMin\nNumeric\nMinimum value of the trackbar range\nnMax\nNumeric\nMaximum value of the trackbar range\nnPos\nNumeric\nCurrent thumb position\nnFreq\nNumeric\nTick mark frequency\nbChange\nBlock\nCode block executed when the position changes\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, nW, nH, nMin, nMax, nPos, nFreq )\nCreate a new trackbar control\nSetPos( n )\nSet the thumb to position\nn\nGetPos()\nReturn the current thumb position\nSetRange( nMin, nMax )\nSet the minimum and maximum range values\nSetTicFreq( n )\nSet the tick-mark frequency\nExample: Volume Control 0-255\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oTrack, nVol := 128\n\n DEFINE WINDOW oWnd TITLE \"Volume Control\" SIZE 400, 150\n\n @ 40, 20 TRACKBAR oTrack VAR nVol ;\n SIZE 360, 30 OF oWnd ;\n RANGE 0, 255 ;\n ON CHANGE ( oWnd:SetText( \"Volume: \" + Str( nVol ) ) )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTTrackBar wraps the native Win32 trackbar (\nTRACKBAR_CLASS\n). It supports both horizontal and vertical orientations depending on the dimensions passed to\nNew()\n.\nThe\nVAR\nclause binds a numeric variable that is updated automatically when the user moves the thumb.\nUse\nSetTicFreq()\nto show tick marks at regular intervals. […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttrayicon.html", "title": "TTrayIcon", "text": "Source:\nsource/classes/ttray.prg\nStandalone class (not derived from TControl)\nTTrayIcon creates and manages an icon in the Windows system tray notification area.\nIt allows applications to run minimized or in the background while providing\nuser interaction via mouse click events, a tooltip, and a context menu. It is\ncommonly used for background services, instant-messenger-style apps, and\napplications that minimize to the system tray.\nKey DATA Members\nDATA\nType\nDescription\noWnd\nObject\nThe associated main window (hidden or visible)\noWndParent\nObject\nThe parent window for notification forwarding\noIcon\nObject\nThe icon displayed in the system tray\ncCaption\nCharacter\nTooltip text shown on hover\nbLClicked\nBlock\nCode block executed on left-click\nbRClicked\nBlock\nCode block executed on right-click\nbLDblClick\nBlock\nCode block executed on double-left-click\nMethods\nMethod\nDescription\nNew( oWnd, oIcon, cTip, bLClick, bRClick )\nCreate a new tray icon\nEnd()\nRemove the icon from the system tray and release resources\nRefresh( oIcon, cTip )\nRefresh the tray icon display\nSetIcon( oIcon, cTip )\nChange the icon and/or tooltip text\nSetText( cTitle )\nSet the caption text\nExample: Tray Icon with Menu and Restore on Double-Click\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oTray, oMenu\n\n DEFINE WINDOW oWnd TITLE \"Tray Demo\" SIZE 400, 300\n\n oTray := TTrayIcon():New( oWnd, \"app.ico\", \"My Application\",;\n {|| MsgInfo( \"Left click\" ) },;\n {|| oMenu:Show( oTray ) } )\n\n oTray:bLDblClick := {|| oWnd:Restore(), oWnd:SetFocus() }\n\n MENU oMenu POPUP\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttreeview.html", "title": "TTreeView", "text": "Hierarchical tree control with expand/collapse, checkboxes, drag-drop, and label editing\nSource:\nsource/classes/ttreevie.prg\n,\nsource/classes/treeitem.prg\n|\nParent:\nTControl\nOverview\nTTreeView\nwraps the Windows\nSysTreeView32\ncommon control. It displays data in a hierarchical tree structure where each node can have child nodes. Nodes can be expanded/collapsed, support icons via image lists, optional checkboxes, in-place label editing, and drag-and-drop reordering.\nArchitecture\n[diagrama]\nTVItem -- Tree Node\nSource:\nsource/classes/treeitem.prg\nEach node in the tree is a\nTVItem\nobject (internally called\nTTreeItem\nin the Win32 version). Items form a linked list with\noPrev\n/\noNext\npointers and can contain a sub-tree of children.\nProperty\nType\nDescription\ncPrompt\nString\nText label displayed for this node\nhItem\nHandle\nWin32 handle for this tree item\nnLevel\nNumeric\nDepth level in the tree (root = 0 or 1)\nlOpened\nLogical\nWhether the node is expanded\noTree\nObject\nSub-tree object (children container)\noPrev / oNext\nObject\nPrevious and next sibling items\nbAction\nBlock\nAction when this item is activated\nCargo\nAny\nUser data attached to the item\nValue\nAny\nItem value (via ACCESS/ASSIGN, uses bSetGet)\nhBmpOpen / hBmpClose\nHandle\nBitmap handles for expanded/collapsed states\nTVItem Methods\nMethod\nDescription\nOpen() / Close()\nExpand or collapse this node\nToggle()\nToggle expand/collapse state\nSetText( cPrompt )\nChange the item label\nGetNext() / GetPrev()\nNavigate to next/previous visible item\nAdd( cPrompt )\nAdd a sibling item after this one\nAddChild( ocItem, lFirst )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/ttxtedit.html", "title": "TTxtEdit", "text": "Source:\nsource/classes/ttxtedit.prg\nInherits from:\nTControl\nTTxtEdit is a source code text editor control with syntax highlighting support. It provides line-oriented editing with insert/overwrite modes, clipboard operations, undo/redo history, find and replace dialogs, and line manipulation commands. Token-based syntax coloring can be customized for different programming languages.\nKey DATA Members\nDATA\nType\nDescription\naLines\nArray\nArray of character strings, one per text line\nlInsert\nLogical\nInsert mode when\n.T.\n, overwrite mode when\n.F.\nlChanged\nLogical\nFlag indicating the text has been modified\ncFileName\nCharacter\nFile name associated with the edited document\ncTokens1 / cTokens2 / cTokens3\nCharacter\nToken lists for three syntax highlighting groups\nnClrTok1 / nClrTok2 / nClrTok3\nNumeric\nText colors for each token group\nnClrNumber\nNumeric\nColor for numeric literals\nnClrString\nNumeric\nColor for string literals\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, oWnd )\nCreate a new text editor control with position and dimensions\nLoad( cFile ) / SaveToFile( cFile )\nLoad text from a file or save the current text to a file\nSetText( cText ) / GetText()\nSet or retrieve the full editor text content\nCopy() / Cut() / Paste()\nClipboard operations for selected text\nUndo() / Redo()\nUndo or redo the last editing action\nFind( cText ) / DlgFind() / DlgGoLine()\nSearch for text, show find dialog, or go to line dialog\nInsLine() / DelLine() / DupLine() / JoinLine()\nInsert, delete, duplicate, or join the current line\nExample: Syntax-Highlighted Editor\nCÓDIGO:\n#include \"FiveWin.ch\"\n\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tupdown.html", "title": "TUpDown", "text": "Source:\nsource/classes/tupdown.prg\nInherits from:\nTControl\nTUpDown wraps the Win32 up-down common control, also known as a spinner or buddy control. It is typically paired with a TGet field to provide increment/decrement arrow buttons that automatically update the buddy's value within a configurable range.\nKey DATA Members\nDATA\nType\nDescription\nnMin\nNumeric\nMinimum value of the spinner range\nnMax\nNumeric\nMaximum value of the spinner range\nnPos\nNumeric\nCurrent spinner position\noBuddy\nObject\nThe buddy control (usually a TGet) linked to this spinner\nlWrap\nLogical\nWrap around when reaching the range boundary\nnAlign\nNumeric\nAlignment relative to the buddy: 0=right, 1=left\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, oBuddy, nW, nH, nMin, nMax, nPos )\nCreate a new up-down control\nSetPos( n )\nSet the spinner position to\nn\nGetPos()\nReturn the current spinner position\nSetRange( nMin, nMax )\nSet the minimum and maximum range values\nSetBuddy( oBuddy )\nAttach a buddy control to the spinner\nGetBuddy()\nReturn the currently attached buddy control\nExample: Spinner Linked to a GET Field\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oGet, oSpinner, nVal := 5\n\n DEFINE WINDOW oWnd TITLE \"Quantity\" SIZE 300, 150\n\n @ 40, 20 GET oGet VAR nVal SIZE 60, 20 OF oWnd PICTURE \"999\"\n @ 38, 80 UPDOWN oSpinner BUDDY oGet ;\n RANGE 1, 100\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nThe buddy control is automatically set as the window specified in the\nBUDDY\nclause. The up-down control positions itself adjacent to the buddy.\nWhen\nlWrap\nis set to\n.T.\n, clicking up at\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/turllink.html", "title": "TURLLink", "text": "Source:\nsource/classes/urllink.prg\nInherits from:\nTControl\nTURLLink displays a clickable hyperlink text control. When clicked, it\nlaunches the default web browser with the specified URL. The control supports\ncustom colors for normal, hover, and visited states, transparent backgrounds,\nand a custom\nbAction\ncode block to override the default navigation behavior.\nKey DATA Members\nDATA\nType\nDescription\ncURL\nCharacter\nThe target URL to open on click\nnClrInit\nNumeric\nText color in the normal (unvisited) state\nnClrOver\nNumeric\nText color when the mouse hovers over the link\nnClrVisit\nNumeric\nText color after the link has been clicked (visited)\nbAction\nBlock\nCustom action block overriding default URL launch\nMethods\nMethod\nDescription\nNew( nTop, nLeft, oWnd, lPixel, lDesign, oFont, cMsg, cURL, cToolTip, nClrInit, nClrOver, nClrVisit, lTransp )\nCreate a new TURLLink control\nReDefine( nId, oWnd )\nRedefine from a dialog resource\nExample: URL Link with Custom Action\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oLink\n\n DEFINE WINDOW oWnd TITLE \"URL Link Demo\" SIZE 400, 200\n\n @ 20, 20 URLLINK oLink ;\n TEXT \"Visit FiveTech Software\" ;\n URL \"https://fivetechsoft.com\" ;\n COLOR CLR_BLUE, CLR_RED, CLR_HGRAY ;\n TOOLTIP \"Click to open website\" ;\n OF oWnd\n\n // Override default browser launch with a custom action\n oLink:bAction := {|| MsgInfo( \"Navigating to: \" + oLink:cURL ) }\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nBy default, clicking the link launches\nShellExecute( \"open\", cURL )\nto open the URL in the system default browser.\nSet\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tvideo.html", "title": "TVideo", "text": "Source:\nsource/classes/video.prg\nInherits from:\nTControl\nTVideo is a media playback control that uses the Windows MCI (Media Control Interface) to play video files. It supports AVI and other MCI-compatible video formats. The control displays the video in a rectangular area within a FiveWin window or dialog, with optional borderless rendering.\nKey DATA Members\nDATA\nType\nDescription\noMci\nObject\nInternal MCI device object managing playback\ncAviFile\nCharacter\nPath to the AVI (or other video) file\ncType\nCharacter\nMCI device type string (e.g., \"AVIVideo\")\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, cFile, oWnd, lNoBorder, cType )\nCreate a new video playback control\nPlay( nFrom, nTo )\nPlay the video from frame\nnFrom\nto\nnTo\n. If omitted, play the entire video.\nPlayFull()\nPlay the video in full-screen mode\nPosition()\nReturn the current playback position in frames\nLength()\nReturn the total number of frames in the video\nEnd()\nStop playback and close the MCI device\nExample: Play AVI File\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oVideo\n\n DEFINE WINDOW oWnd TITLE \"Video Player\" SIZE 640, 520\n\n @ 10, 10 VIDEO oVideo FILE \"sample.avi\" ;\n SIZE 600, 450 OF oWnd\n\n oVideo:Play()\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nTVideo wraps the Windows MCI API (\nmciSendString\n) for video playback. Ensure the appropriate MCI drivers are installed on the target system.\nUse the\nlNoBorder\nparameter in\nNew()\nto remove the border around the video display area.\nThe\ncType\nparameter specifies the MCI device type. The default is\n\"AVIVideo\"\nfor AVI files.\nCall\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/twbrowse.html", "title": "TWBrowse", "text": "Source:\nsource/classes/wbrowse.prg\nInherits from:\nTControl\nTWBrowse is FiveWin's original browse control for navigating database records and array data in a tabular format. It provides column headers, adjustable column sizing, keyboard navigation, inline editing, and integration with database objects, arrays, and ADO recordsets. TXBrowse is the modern successor, but TWBrowse remains in active use for simpler scenarios.\nKey DATA Members\nDATA\nType\nDescription\ncAlias\nCharacter\nAlias of the work area being browsed\nbLine\nBlock\nCode block for drawing each row\nbSkip\nBlock\nCustom skip block for navigation\nnRowPos\nNumeric\nCurrent row position\nnColPos\nNumeric\nCurrent column position\naHeaders\nArray\nArray of column header strings\naColSizes\nArray\nArray of column widths in pixels\nlAutoEdit\nLogical\nEnable automatic inline editing\nlCellStyle\nLogical\nUse cell-level styling instead of row-level\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, bLine, aHeaders, aColSizes, oWnd )\nCreate a new browse control\nSetArray( aArr )\nBind the browse to an array data source\nSetOBJ( oDbf )\nBind the browse to a TDatabase object\nSetADO( oRs )\nBind the browse to an ADO recordset\nSetFilter( cField, u1, u2 )\nApply a filter condition to the current data source\nReport( cTitle, lPreview )\nGenerate a printed report of the browse content\nHtml()\nExport the browse content as an HTML table string\nExample: 3-Column Browse Bound to DBF\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oBrw\n\n USE CUSTOMER NEW\n\n DEFINE WINDOW oWnd TITLE \"Customers\" SIZE 600, 400\n\n @ 10, 10 BROWSE oBrw ;\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/twebcam.html", "title": "TWebcam", "text": "Source:\nsource/classes/twebcam.prg\nHierarchy:\nTWebcam\n→\nTControl\nTWebcam provides live webcam preview and capture functionality using the Video for Windows (VFW)\nAPI. It is a visual control that displays the camera feed within a FiveWin window and supports\nsnapshot capture, video format dialogs, and video source configuration.\nWEBCAM Command\nCÓDIGO:\n@ nRow, nCol WEBCAM oCam OF oWnd SIZE nW, nH INIT lInit\nKey DATA Members\nDATA\nType\nDefault\nDescription\nhWebcam\nNumeric\nHandle to the VFW capture window\ncName\nCharacter\nWebcam driver description\ncVersion\nCharacter\nWebcam driver version string\nnRateRefresh\nNumeric\n66\nPreview refresh rate in milliseconds\nisScale\nLogical\n.T.\nScale preview to control size (640x480 when disabled)\nisConnected\nLogical\n.F.\nWhether preview is currently active\nMethods\nMethod\nDescription\nNew( oWnd, nTop, nLeft, nWidth, nHeight, lInit, lAdjust, nRate, bError )\nConstructor. Creates the VFW capture window and optionally starts preview.\nInitialize()\nConnect the webcam driver and start the live preview.\nFinalize()\nDisconnect the webcam driver and stop the preview.\nSaveFile( cFileName )\nCapture the current frame to a BMP file. Defaults to a timestamp-based filename.\nVideoControl()\nOpen the video source property dialog (brightness, contrast, etc.).\nVideoFormat()\nOpen the video format dialog (resolution, color depth).\nStartCapture( cFile )\nBegin streaming capture to a video file.\nStopCapture()\nStop any ongoing video capture.\nGetWidth()\nReturn the current preview image width in pixels.\nGetHeight()\nReturn the current preview image height in pixels.\nSetRate( nRate )\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/txbrowse.html", "title": "TXBrowse", "text": "The most powerful and versatile data grid control in FiveWin\nSource:\nsource/classes/xbrowse.prg\n|\nParent:\nTControl\n|\nHeader:\nXBrowse.ch\nOverview\nTXBrowse\nis the flagship data grid control of FiveWin. It renders tabular data from virtually any source -- DBF tables, in-memory arrays, ADO RecordSets, ODBC cursors, or custom data -- through a unified block-based navigation architecture. It virtualizes rendering so that only visible rows are processed, enabling it to handle millions of records without excessive memory consumption.\nKey capabilities include:\nData source abstraction\n-- one control, many back-ends (DBF/RDD, Array, ADO, ODBC, custom)\nRich column objects\n-- each column (\nTXBrwCol\n) controls its own header, data formatting, colors, editing, and width\nIn-cell editing\n-- GET, ComboBox, CheckBox, DatePicker, and Spinner editors per column\nIncremental seek / filter\n-- built-in\nlIncrFilter\nseek bar with per-column search\nMulti-select, freeze columns, record selector, marquee styles\nExport\nto Excel, CSV, clipboard, and printer\nArchitecture\nTXBrowse decouples the visual grid from the underlying data through a set of\nnavigation code blocks\n. Helper methods like\nSetRDD()\n,\nSetArray()\n, and\nSetAdo()\nsimply populate these blocks with the appropriate logic for each data source type.\n[diagrama]\nColumn Object: TXBrwCol\nEach column in the browse is a\nTXBrwCol\nobject stored in the\naCols\narray. Columns define\nwhat\ndata to display and\nhow\nto display it.\n[diagrama]\nKey Properties (DATA)\nProperty\nType\nDescription\naCols\nArray\nArray of\nTXBrwCol\n […]" }, { "src": "FWH docs · en/ui", "url": "https://fivetechsoft.github.io/FWH_docs/en/ui/tximage.html", "title": "TXImage", "text": "Source:\nsource/classes/ximage.prg\nInherits from:\nTControl\nTXImage is an extended image viewer control that supports zoom, rotation, brightness, contrast, gamma correction, alpha blending, grayscale conversion, and blur effects. It provides a built-in popup context menu with options for saving, printing, copying to clipboard, and image navigation.\nKey DATA Members\nDATA\nType\nDescription\ncImageFile\nCharacter\nPath or identifier of the loaded image\nnZoom\nNumeric\nZoom percentage (100 = original size)\nnRotate\nNumeric\nRotation angle in degrees\nnSize\nNumeric\nImage dimension for size-based fitting\ncAlign\nCharacter\nAlignment string (e.g., \"C\" for center)\nnGamma\nNumeric\nGamma correction value\nnBrightness\nNumeric\nBrightness adjustment\nnContrast\nNumeric\nContrast adjustment\nnAlpha\nNumeric\nAlpha transparency level (0-255)\nlGray\nLogical\nDisplay the image in grayscale\nnBlur\nNumeric\nBlur radius\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, bImage, oWnd )\nCreate a new TXImage control.\nbImage\ncan be a file name, bitmap handle, or a code block returning an image.\nCenter()\nCenter the image within the control area\nFitWidth()\nScale the image to fit the control width\nFitHeight()\nScale the image to fit the control height\nFitRect()\nScale the image to fit entirely within the control\nFitOrglSize()\nRestore the image to its original pixel dimensions\nZoom( n )\nSet the zoom level to\nn\npercent\nRotate( nDeg )\nRotate the image by\nnDeg\ndegrees\nSetSource( uNew )\nReplace the displayed image with a new source\nPaste()\nPaste an image from the clipboard\nCopyToClipBoard()\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/files.html", "title": "File, Text & Data Classes", "text": "FiveWin provides a rich set of classes for file I/O, text editing, INI configuration, Windows registry access, clipboard operations, C structure interop, and data dictionary management. These classes wrap low-level OS facilities into clean object-oriented interfaces.\n[diagrama]\nTFile - Binary File Operations\nTFile is the base class for binary file manipulation. It wraps Harbour's low-level FOpen/FCreate/FRead/FWrite functions into an object that tracks the file handle, length, and current position. TTxtFile inherits from TFile to add line-based access.\nDATA Members\nDATA\nType\nDescription\ncName\nCharacter\nFile name (path) passed to constructor\nhFile\nNumeric\nOS file handle returned by FOpen/FCreate\nnLen\nNumeric\nTotal file length in bytes\nnBufferLen\nNumeric\nRead buffer size (default 2048)\nnMode\nNumeric\nOpen mode (FO_READWRITE, FC_NORMAL, etc.)\nMETHOD Reference\nMethod\nDescription\nNew( cFileName, nMode )\nOpens existing file or creates new. If file exists, opens with nMode (default FO_READWRITE). If not, creates with FC_NORMAL.\nCreate( cFileName, nMode )\nErases existing file then calls New() to create a fresh file.\nOpen()\nReturns .T. if file handle is valid (hFile > 0).\nClose()\nCloses the file handle via FClose().\nEnd()\nAlias for Close().\nGoTop()\nSeeks to byte position 0 (beginning of file).\nGoBottom()\nSeeks to end of file, updates nLen.\nGoTo( nRecno )\nSeeks to absolute byte position nRecno.\nSkip( nBytes )\nMoves file pointer forward/backward by nBytes relative to current position.\nnRecNo()\nReturns current byte position in file.\nlEoF()\nReturns .T. if current position >= nLen.\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/misc.html", "title": "Miscellaneous Classes", "text": "FiveWin includes a wide variety of utility classes covering timers, time manipulation, rectangles, GDI pens, layout management, internet protocols (FTP, SMTP, POP3), email, expression parsing, and charting. This page documents each of these classes with their DATA members, methods, and practical examples.\n[diagrama]\nTTimer - Periodic Timer Actions\nTTimer wraps the Windows SetTimer/KillTimer API to execute a codeblock at regular intervals. Timers are managed in a static array and dispatched through the TimerEvent() function. Multiple timers can be active simultaneously, each with different intervals and actions.\nDATA Members\nDATA\nType\nDescription\nnInterval\nNumeric\nTimer interval in milliseconds (default 18)\nbAction\nCodeblock\nCodeblock to execute on each tick\nlActive\nLogical\n.T. when timer is running\nnId\nNumeric\nUnique timer ID (auto-assigned)\nhWndOwner\nNumeric\nHandle of owner window\nCargo\nAny\nUser-defined cargo data\nMETHOD Reference\nMethod\nDescription\nNew( nInterval, bAction, oWnd )\nCreates a new timer. Does NOT start it -- call Activate() to start.\nActivate()\nStarts the timer via Windows SetTimer(). Sets lActive to .T.\nDeActivate()\nStops the timer via KillTimer(). Sets lActive to .F.\nEnd()\nDeactivates and removes the timer from the internal timer array.\nCommand Syntax\nCÓDIGO:\n// FiveWin command:\nDEFINE TIMER oTimer INTERVAL 1000 ACTION UpdateClock() OF oWnd\nACTIVATE TIMER oTimer\n\n// Deactivate later:\nDEACTIVATE TIMER oTimer\n// or\noTimer:End()\nExample: Clock Display with Auto-Refresh\nCÓDIGO:\nlocal oWnd, oTimer, oSay\n\nDEFINE WINDOW oWnd TITLE \"Timer Demo\"\n\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/ole.html", "title": "OLE, COM, ActiveX & .NET Interop", "text": "FiveWin provides comprehensive support for Windows COM/OLE automation, ActiveX embedding, and modern cloud-based email APIs. These classes let you automate Microsoft Office applications, embed ActiveX controls in dialogs, interact with .NET assemblies, and send email through Gmail and Outlook APIs.\n[diagrama]\nTOleAuto - OLE Automation\nTOleAuto is FiveWin's primary class for OLE/COM automation. It wraps the Harbour\nwin_oleAuto\nfunctionality, allowing you to create and control OLE objects such as Microsoft Word, Excel, Outlook, Internet Explorer, and any other automation server. Properties and methods of the OLE object are accessed transparently through Harbour's error handler -- you call them as if they were native class members.\nHow It Works\nWhen you call\nTOleAuto():New(\"Word.Application\")\n, FiveWin calls\nCreateOleObject()\nwhich invokes\nCoCreateInstance()\nunder the hood to create the COM object. The returned IDispatch pointer is stored in the\nhObj\nDATA member. Any method or property access that is not defined in the class is intercepted by the\nOnError\nhandler, which routes it through\nOleInvoke()\nor\nOleGetProperty()/OleSetProperty()\n.\nDATA Members\nDATA\nType\nDescription\nhObj\nPointer/Numeric\nIDispatch pointer to the OLE automation object\nMETHOD Reference\nMethod\nDescription\nNew( cClassName )\nCreates an OLE automation object by ProgID (e.g. \"Excel.Application\", \"Word.Application\").\nEnd()\nReleases the COM object and calls OleUninitialize().\n(any property)\nGet/Set any OLE property via OnError handler. e.g.\noExcel:Visible := .T.\n(any method)\nInvoke any OLE method transparently. […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tbackup.html", "title": "TBackup + TRestore", "text": "Sources:\nsource/classes/tbackup.prg\n,\nsource/classes/trestore.prg\nStandalone classes\nTBackup and TRestore provide data backup and restore functionality supporting three storage types: normal file copy, ZIP compression, and Windows Backup (NTBackup). TBackup handles the backup creation while TRestore manages the restoration process including system restore points.\nTBackup Key DATA Members\nDATA\nType\nDescription\nnType\nNumeric\nBackup type: BK_NORMAL (file copy), BK_ZIP (compressed), BK_WIN (Windows Backup)\ncSource\nCharacter\nSource path or file specification\ncTargetDir\nCharacter\nTarget directory for the backup\naFiles\nArray\nArray of file names to include\nTBackup Methods\nMethod\nDescription\nNew( nType, cSrc, cDst, nLang, cZip, aFiles )\nCreate a new backup object with type, source, target, language, ZIP name, and file list\nExecute()\nExecute the backup operation according to the selected type\nMakeZip()\nCreate a ZIP-format backup archive\nExecuteWinBackup()\nExecute Windows NTBackup operation\nTRestore Key DATA Members\nDATA\nType\nDescription\nnType\nNumeric\nRestore type: RES_NORMAL, RES_ZIP, RES_WIN\nlOverwrite\nLogical\nOverwrite existing files during restore\nTRestore Methods\nMethod\nDescription\nNew( nType, cSrc, cDst, nLang, aFiles, lOver )\nCreate a new restore object with type, paths, language, file list, and overwrite flag\nExecute()\nExecute the restore operation\nMakeCopy()\nRestore files by direct file copy\nUnZipData()\nExtract files from a ZIP backup archive\nCreateRestorePoint( cDesc )\nCreate a Windows System Restore point with the given description\nCommands\nCÓDIGO:\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tblock.html", "title": "TBlock - Code Block From Expression String", "text": "Source:\nsource/classes/block.prg\nTBlock creates Harbour code blocks (bBlock) from character expression strings at runtime.\nThis enables dynamic evaluation of expressions entered by the user or read from configuration\nfiles. The class compiles the expression string using Harbour's\n&\n(macro)\noperator and stores the resulting code block. The\nEval()\nmethod evaluates the\nblock with optional parameters, while\nExec()\nruns it for side effects.\nDATA Members\nDATA\nType\nDescription\ncExpression\nCharacter\nThe expression string from which the code block was compiled\nbBlock\nCodeblock\nThe compiled code block ready for evaluation\nMethods\nMethod\nDescription\nNew( cExpr )\nCreate a TBlock object from expression string cExpr. Compiles it into bBlock\nEval( uPar1 .. uPar5 )\nEvaluate the code block with up to five parameters and return the result\nExec( uPar1 .. uPar5 )\nEvaluate the code block for side effects (return value is discarded)\nExample: Runtime Expression Evaluation\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local cExpr, oBlock, nResult\n\n // Get expression from user input\n cExpr := \"2 + 3 * 4\"\n\n oBlock := TBlock():New( cExpr )\n if oBlock:bBlock != nil\n nResult := oBlock:Eval()\n ? cExpr + \" = \" + Str( nResult ) // 14\n endif\n\n // Expression with parameters\n oBlock := TBlock():New( \"x + y\" )\n if oBlock:bBlock != nil\n nResult := oBlock:Eval( 10, 20 )\n ? \"x + y = \" + Str( nResult ) // 30\n endif\n\n // Expression from config file\n local cConfigExpr := \"Year( Date() ) - 2000\"\n oBlock := TBlock():New( cConfigExpr )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tclipboard.html", "title": "TClipBoard - Windows Clipboard", "text": "Source:\nsource/classes/clipbrd.prg\nTClipBoard wraps the Windows Clipboard API (\nOpenClipboard\n,\nGetClipboardData\n,\nSetClipboardData\n,\nCloseClipboard\n, etc.) into an object-oriented interface.\nIt supports ANSI and Unicode text, bitmap images, metafiles, and file lists (from Explorer's\ncopy/paste). The class automatically manages clipboard ownership and sequencing of open/empty/close.\nDATA Members\nDATA\nType\nDescription\nnFormat\nNumeric\nDefault clipboard format for text operations (CF_TEXT)\noWnd\nObject\nOwner window for clipboard operations\nMethods\nMethod\nDescription\nNew( nFormat )\nCreate clipboard object with optional format (default CF_TEXT)\nSetText( c )\nCopy ANSI text to the clipboard\nGetText()\nRetrieve ANSI text from the clipboard\nSetWideText( c )\nCopy Unicode (wide) text to the clipboard\nGetUnicodeText()\nRetrieve Unicode text from the clipboard\nSetBitmap( oBmp )\nCopy a bitmap to the clipboard\nGetBitmap()\nRetrieve a bitmap from the clipboard\nSetMetaFile( o )\nCopy a metafile to the clipboard\nGetMetaFile()\nRetrieve a metafile from the clipboard\nGetFiles()\nReturn an array of file names from a CF_HDROP clipboard (copied from Explorer)\nClear()\nClear all clipboard contents\nOpen()\nOpen the clipboard for multiple operations (must call Empty() and Close() afterwards)\nEmpty()\nEmpty the clipboard contents (must be called after Open() before setting data)\nClose()\nClose the clipboard (must be called after Open())\nExample: Copy/Paste Text and Files\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oClip := TClipBoard():New()\n\n // Copy text to clipboard\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tcomm.html", "title": "TComm", "text": "Source:\nsource/classes/tcomm.prg\nStandalone class\nTComm provides serial port (RS-232) communication capabilities for interfacing with modems, serial printers, barcode scanners, and other legacy serial devices. It wraps the Windows COM API with methods for port configuration, data transmission, and flow control.\nKey DATA Members\nDATA\nType\nDescription\nnDevice\nNumeric\nCOM port number (1-based: COM1, COM2, etc.)\nnId\nNumeric\nWindows file handle of the opened COM port\nnBaud\nNumeric\nBaud rate (e.g., 9600, 19200, 115200)\ncParity\nCharacter\nParity setting: \"N\" (none), \"E\" (even), \"O\" (odd)\nnStop\nNumeric\nStop bits: 1, 1.5, or 2\nnData\nNumeric\nData bits: 5, 6, 7, or 8\nnInQueue / nOutQueue\nNumeric\nInput and output buffer sizes in bytes\nMethods\nMethod\nDescription\nNew( nDev, nInQ, nOutQ, cStyle, nBaud, cParity, nStop, nData )\nOpen a COM port with the specified parameters\nSetUp()\nApply port configuration (baud, parity, stop bits, data bits)\nWrite( cStr )\nWrite a string to the serial port\nClose()\nClose the serial port connection\nBreak() / UnBreak()\nSet or clear the serial break signal\nFlush()\nFlush the input and output buffers\nError()\nReturn the last error code\nExample: COM1 at 9600 Baud\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oComm\n local cData\n\n oComm := TComm():New( 1, 4096, 4096, , 9600, \"N\", 1, 8 )\n\n if oComm:nId != 0\n oComm:Write( \"AT\" + Chr( 13 ) ) // Send AT command to modem\n cData := oComm:Read()\n MsgInfo( cData )\n else\n MsgStop( \"Cannot open COM1\" )\n endif\n\n oComm:Close()\n\nreturn nil\nNotes\nThe\ncStyle\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tcomobject.html", "title": "TComObject", "text": "Source:\nsource/classes/tcomobj.prg\nStandalone class\nTComObject provides a generic wrapper around Windows COM (Component Object Model) objects via the\nIDispatch\ninterface. It stores the\nnIDispatch\npointer and exposes methods to invoke COM methods, get/set properties, and auto-wrap returned IDispatch pointers. The class supports chained COM calls through its error handler: property names prefixed with\n_\nset values, bare property names get values, and IDispatch return values are automatically wrapped in new TComObject instances.\nKey DATA Members\nDATA\nType\nDescription\nnIDispatch\nNumeric\nPointer to the COM IDispatch interface\nMethods\nMethod\nDescription\nNew( cProgID )\nCreate a COM object from a ProgID string (e.g. \"Word.Application\")\nInvoke( cMethod, u1, u2, u3 )\nInvoke a COM method with up to three optional parameters\nEnd()\nRelease the COM object and free the IDispatch pointer\nClassName()\nReturn the Harbour class name (\"TComObject\")\nExample: Word Automation\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWord, oDoc\n\n // Create Word Application COM object\n oWord := TComObject():New( \"Word.Application\" )\n\n // Set property (prefix with _)\n oWord:_Visible := .T.\n\n // Access documents collection (returns auto-wrapped TComObject)\n oDoc := oWord:Documents\n\n // Add a new document\n oDoc:Add()\n\n // Invoke methods\n oWord:Invoke( \"Activate\" )\n\n // Set content\n oWord:Selection:TypeText( \"Hello from FiveWin!\" )\n\n MsgInfo( \"Word is running. Press OK to close.\" )\n\n // Clean up\n oWord:Quit()\n oWord:End()\n\nreturn nil\nNotes\nThe error handler (\nError()\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tdbg.html", "title": "TDbg - FiveWin Debugger", "text": "Source:\nsource/classes/fwdbg.prg\nStandalone class\nTDbg is a full-featured source-level debugger for FiveWin applications. It provides a graphical debug window (\noDlg\n) containing up to nine XBrowse panels for inspecting source code, call stack, local/private variables, arrays, objects, breakpoints, work areas, SET commands, and profiler data. The debugger is activated by compiling with\n#pragma /b+\nor passing the\n/b\ncommand-line flag.\nKey DATA Members\nDATA\nType\nDescription\noDlg\nTDialog\nThe debugger dialog window\noBrw\nTXBrowse\nArray or object for 9 browse panels (source, stack, vars, arrays, objects, breakpoints, areas, SETs, profiler)\naStack\nArray\nCurrent call stack entries\naModules\nArray\nLoaded source modules\naBreak\nArray\nBreakpoint definitions\naTrace\nArray\nTrace log entries\nMethods\nMethod\nDescription\nNew()\nCreate the debugger instance\nActivate()\nOpen and display the debugger dialog window\nExec()\nExecute the debugger main loop\nDbgNext()\nStep to the next source line\nDbgGo()\nContinue execution until the next breakpoint\nDbgNextRoutine()\nStep over (execute subroutine calls without stepping into them)\nDbgSetBreak( cMod, nLine )\nSet a breakpoint at a specific module and line\nDbgSetTrace( lOn )\nEnable or disable trace logging\nDbgEditVar( cVarName )\nOpen an editor to modify a variable's value\nDbgEditObj( oObj )\nOpen an object inspector for a given object\nExample: Debug Session\nCÓDIGO:\n// Add this pragma to modules you want to debug:\n#pragma /b+\n\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local cName := \"FiveWin\"\n local nCount := 0\n\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/texcel.html", "title": "Excel Integration", "text": "Source:\nsource/function/fwxlsxlb.prg\n,\nsource/function/drxl.prg\n,\nsource/function/readxlsx.prg\nFiveWin provides three complementary strategies for Excel file integration, ranging from\nhigh-speed native generation using the\nxlsxlibhb\nC library (based on\nlibxlsxwriter\n), to OLE automation via\nTOleAuto\nfor full Excel COM\ncontrol, and direct XML parsing for reading\n.xlsx\nfiles without Excel.\nStrategy Overview\nStrategy\nSource\nUse Case\nNative XLSX (TWorkBook/TWorkSheet)\nfwxlsxlb.prg\nHigh-performance creation, no Excel required, supports formatting and images\nOLE Automation (FWDrXLSX)\ndrxl.prg\nFull Excel COM object model for legacy formatting and advanced features\nXML Reader (TXlsxReader)\nreadxlsx.prg\nReading\n.xlsx\nfiles via ZIP/XML parsing, no Excel required\nTWorkBook / TWorkSheet - Native XLSX Generation\nThe\nTWorkBook\nand\nTWorkSheet\nclasses provide an object-oriented\ninterface to the\nxlsxlibhb\nC library. This is the preferred method for generating\nlarge spreadsheets quickly without any dependency on Microsoft Excel.\nTWorkBook Class\nMethod\nDescription\nNew( cFile )\nCreate a new workbook. If the file exists, it is erased before creating a new one. Returns nil on failure.\nAddSheet( cName )\nAdd a new worksheet with the given name. Returns a\nTWorkSheet\nobject.\nFormat( cPicture, cStyles, nAlign )\nCreate a\nTFormat\nobject for cell formatting.\nClose()\nFinalize and save the workbook to disk via\nworkbook_close()\n.\nTWorkSheet Class\nMethod\nDescription\nSay( nRow, nCol, uValue, oFormat, cPicture )\nWrite a value to a cell. Automatically detects Harbour type: numeric →\nworksheet_write_number()\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/texplist.html", "title": "TExplorerList / TItemListbar", "text": "Source:\nsource/classes/texplist.prg\nTExplorerList inherits from:\nTControl\n. TItemListbar is an internal collaboration class for individual items.\nTExplorerList is a vertical navigation list control with expandable/collapsible items, similar to the Windows Explorer folder tree or Outlook bar. Each item can display a bitmap, text, and optional child items with indentation. The control supports keyboard navigation, mouse hover effects, gradient selection highlighting, and vertical scrolling for overflow content.\nKey DATA Members (TExplorerList)\nDATA\nType\nDescription\naItems\nArray\nArray of TItemListbar objects\nbChange\nBlock\nCode block executed when the selected item changes\noItemSelected\nObject\nCurrently selected TItemListbar item\noVScroll\nObject\nVertical scroll bar control\nnSeparation\nNumeric\nVertical spacing between top-level items (default 15)\nnVirtualHeight\nNumeric\nTotal virtual height of all items\nnVirtualTop\nNumeric\nCurrent scroll offset in virtual pixels\nnFade\nNumeric\nAlpha level for fade animation (0-255)\nMethods\nMethod\nDescription\nNew( nTop, nLeft, oWnd, lPixel, lDesign, nWidth, nHeight, nSeparation )\nCreate the explorer list control\nAddItem( cText, cBitmap, aGradSel, aGradOver, aGradOverSel, nClrInSel, nClrOutSel, nClrInOverSel, nClrOutOverSel, nClrInOver, nClrOutOver, nClrText, bAction )\nAdd a new item with text, bitmap, and gradient/hover colors\nDelItem( uVal )\nDelete an item by position or object reference\nGetItem( nPos )\nReturn the item at the given position\nSetOption( n )\nSelect an item by index\nGoDown( nSkip ) / GoUp( nSkip )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/texstruc.html", "title": "TExStruct", "text": "Source:\nsource/classes/texstruc.prg\nStandalone class\nTExStruct provides C-like structure definitions within Harbour code. It allows defining typed data members with optional default values and sizes, and supports compiler-style\nSTRUC...END STRUC\nand\nMEMBER...AS...INIT...SIZE\ncommands. An integrated error handler enables direct member access through the dot notation (\noStruc:MemberName\n).\nKey DATA Members\nDATA\nType\nDescription\naMembers\nArray\nArray of member definitions, each containing name, type, default value, and size\nlGenError\nLogical\nGenerate runtime error on undefined member access (vs. returning nil)\nMethods\nMethod\nDescription\nNew()\nCreate an empty extended structure\nAddMember( xName, cType, xDefault, nSize )\nAdd a member with name, type (\"C\", \"N\", \"D\", \"L\", \"A\"), optional default, and size\nMemberList()\nReturn an array of member names defined in the structure\nGetMember( xName )\nRetrieve the value of a member by name or index\nCompiler Commands\nCÓDIGO:\nSTRUC oPerson\n MEMBER Name AS \"C\" INIT \"John\" SIZE 30\n MEMBER Age AS \"N\" INIT 0 SIZE 3\n MEMBER Active AS \"L\" INIT .T.\nEND STRUC\n\n// Direct member access:\noPerson:Name // Returns \"John\"\noPerson:Age := 35\nExample: Define Person Structure\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oPerson := TExStruct():New()\n\n oPerson:AddMember( \"Name\", \"C\", \"John Doe\", 30 )\n oPerson:AddMember( \"Age\", \"N\", 0, 3 )\n oPerson:AddMember( \"Active\", \"L\", .T. )\n oPerson:AddMember( \"Salary\", \"N\", 0, 10.2 )\n\n ? oPerson:Name // Outputs: John Doe\n ? oPerson:Age // Outputs: 0\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tfile.html", "title": "TFile - Binary File I/O", "text": "Source:\nsource/classes/tfile.prg\nTFile provides low-level binary file input/output operations. It wraps the Harbour file-handling\nAPIs (\nFOpen()\n,\nFRead()\n,\nFWrite()\n, etc.) into an\nobject-oriented interface with sequential and random-access positioning, byte/word/string\nread/write, searching, counting, and insertion/deletion of bytes. TFile is the base parent class\nof\nTObjFile\n,\nTLibFile\n, and\nTTxtFile\n.\n[diagrama]\nDATA Members\nDATA\nType\nDescription\ncName\nCharacter\nFile name (full path)\nhFile\nNumeric\nHarbour file handle returned by FOpen()/FCreate()\nnLen\nNumeric\nFile length in bytes\nnMode\nNumeric\nFile open mode (0=read, 1=write, 2=read+write)\nMethods\nMethod\nDescription\nNew( cFile, nMode )\nOpen an existing file. nMode: 0=read, 1=write, 2=read+write\nCreate( cFile, nMode )\nCreate a new file (or truncate existing). nMode: 1=write, 2=read+write\nnGetByte()\nRead one byte (0-255) at current position and advance\nnGetWord()\nRead two bytes as a signed 16-bit integer and advance\ncGetStr( n )\nRead n bytes as a character string and advance\nPutByte( n )\nWrite one byte at current position and advance\nPutWord( n )\nWrite two bytes (16-bit integer) at current position and advance\nPutStr( c )\nWrite a character string at current position and advance\nGoTop()\nSeek to beginning of file (position 0)\nGoBottom()\nSeek to end of file\nSkip( n )\nMove forward (positive n) or backward (negative n) n bytes\nGoTo( n )\nSeek to absolute byte position n\nSeek( cStr )\nSearch forward for string cStr, return position or 0 if not found\nCount( cStr )\nCount occurrences of string cStr in the file\nDelBytes( n )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tfilegtf.html", "title": "TFileGTF", "text": "Source:\nsource/classes/tfilegtf.prg\nStandalone class\nTFileGTF is a file writer for the GTF (Generic Text Format) file format. It provides structured text output with configurable alignment, font selection, and color applied per write operation. The class manages font and format tables internally and writes the GTF header and body segments to disk.\nKey DATA Members\nDATA\nType\nDescription\ncName\nCharacter\nTarget GTF file name\nhFile\nNumeric\nWindows file handle\nnAlign\nNumeric\nCurrent text alignment (ES_LEFT, ES_CENTER, ES_RIGHT)\nnFont\nNumeric\nCurrent font index in the font table\nnColor\nNumeric\nCurrent text color (RGB)\nMethods\nMethod\nDescription\nNew( cFileName )\nCreate a new GTF file; writes header and font table\nEnd()\nFinalize and close the GTF file\nWrite( uVal, nFormat, nAlign, nFont, nColor, lReturn )\nWrite a value with optional format, alignment, font, and color;\nlReturn\nappends CRLF\n_Return()\nWrite a blank line (CRLF)\nUtility Functions\nFunction\nDescription\nGTFFont( cName, nHeight, nWidth, lBold, lItalic, lUnderline, lStrikeout )\nDefine or retrieve a font; returns font index\nGTFFormat( nAlign, nFont, nColor )\nDefine or retrieve a format triplet; returns format index\nSetGTFFormat( nFormat )\nSet current format by index\nSetGTFAlign( nAlign )\nSet default alignment\nSetGTFFont( nFont )\nSet default font index\nSetGTFColor( nColor )\nSet default text color\nExample: Writing a GTF File\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oGtf := TFileGTF():New( \"output.gtf\" )\n\n GTFFont( \"Arial\", 14, 6, .T., .F., .F., .F. )\n GTFFont( \"Courier New\", 12, 5, .F., .F., .F., .F. )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tfwstack.html", "title": "FWStack", "text": "Source:\nsource/classes/fwstack.prg\nFWStack implements a classic LIFO (Last-In, First-Out) stack data structure.\nIt stores items in an internal array and provides push, pop, and peek operations.\nThe constructor and Push() method accept variable-length argument lists, allowing\nmultiple items to be added in a single call. FWStack is useful for undo/redo\noperations, expression evaluation, and any scenario requiring last-in-first-out\ndata management.\nKey DATA Members\nDATA\nType\nDescription\naStack\nArray\nInternal array holding stack items\nMethods\nMethod\nDescription\nNew( item1, item2, ... )\nCreate a stack initialized with the given items (bottom to top)\nPush( item1, item2, ... )\nPush one or more items onto the top of the stack. Returns Self for chaining.\nPop()\nRemove and return the top item from the stack. Returns nil if the stack is empty.\nPeek( n )\nReturn the nth item from the top without removing it. n defaults to 1 (the top). Negative n indexes from the bottom (e.g., -1 is bottom). Returns nil if the index is out of range.\nSize()\nReturn the number of items in the stack\nClear()\nRemove all items from the stack. Returns Self for chaining.\nExample: Push/Pop Values\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oStack := FWStack():New()\n\n // Push multiple items\n oStack:Push( 10, 20, 30, 40, 50 )\n\n ? \"Stack size:\", oStack:Size() // 5\n\n // Peek at top item without removing\n ? \"Top item:\", oStack:Peek() // 50\n\n // Peek at item 2 from top (0-indexed from the top)\n ? \"Second from top:\", oStack:Peek( 2 ) // 40\n\n // Pop items\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tgit.html", "title": "TGit", "text": "Source:\nsource/classes/tgit.prg\n| C backend:\nsource/winapi/git.c\nHierarchy:\nTGit\n(standalone class, no inheritance)\nTGit wraps the\ngit.exe\ncommand line via\nCreateProcess\nwith anonymous pipe\ncapture for stdout and stderr. No external libraries required — only\ngit\nmust be\ninstalled and in the system PATH.\nC Backend Functions\nFunction\nSignature\nDescription\nGIT_EXEC()\nGIT_EXEC( cCmd ) → cStdout\nExecute any git command, return stdout\nGIT_RUN()\nGIT_RUN( cCmd, @cOut, @cErr ) → nExitCode\nExecute command, fill byref params, return exit code\nGIT_EXITCODE()\nGIT_EXITCODE() → nExitCode\nLast command exit code\nGIT_STDERR()\nGIT_STDERR() → cStderr\nLast command stderr (one-shot; cleared after read)\nGIT_HASGIT()\nGIT_HASGIT() → lResult\nCheck if git.exe is available in PATH\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncPath\nCharacter\n\"\"\nRepository path (defaults to GetCurDir())\ncOutput\nCharacter\n\"\"\nLast command stdout\ncError\nCharacter\n\"\"\nLast command stderr\nnExitCode\nNumeric\n0\nLast command exit code\nlNoPager\nLogical\n.T.\nAutomatically add --no-pager to commands\ncGitExe\nCharacter\n\"git\"\nGit executable path\nbOnCommand\nCodeBlock\nCallback:\n{ |cCmd, Self| }\nbefore each git command\nMethods\nRepository\nMethod\nDescription\nNew( cPath, cGitExe )\nConstructor. Optionally set repo path and git binary location.\nInit( cPath )\nInitialize a new git repository (git init).\nClone( cURL, cPath, cBranch )\nClone a remote repository. Optionally specify branch.\nIsRepo()\nReturns .T. if the path is inside a git work tree.\nRootDir()\nReturns the repository root path (git rev-parse --show-toplevel).\nHasGit()\nReturns .T. […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tini.html", "title": "TIni - INI File via WinAPI", "text": "Source:\nsource/classes/ini.prg\nTIni provides high-level access to Windows INI files through the Windows API functions\n(\nGetPrivateProfileString\n,\nWritePrivateProfileString\n,\nGetPrivateProfileSectionNames\n, etc.). It supports reading and writing string,\nnumeric, date, and logical values, enumerating sections, and deleting sections or individual\nentries. The optional\nlAutoSet\nflag automatically saves changes on assignment.\nDATA Members\nDATA\nType\nDescription\ncIniFile\nCharacter\nFull path to the INI file\nlAutoSet\nLogical\nIf .T., changes are written to disk immediately\nMethods\nMethod\nDescription\nNew( cFile )\nCreate TIni object pointing to the specified INI file\nGet( cSec, cKey, uDef )\nReturn the value of a key in a section, or uDef if not found (auto-detects type: string, number, date, logical)\nSet( cSec, cKey, uVal )\nWrite a value to a key in a section. Type is preserved (dates, numbers, logicals are converted)\nSections()\nReturn an array of section names in the INI file\nDelSection( cSec )\nDelete an entire section and all its keys\nDelEntry( cSec, cKey )\nDelete a single key from a section\nExample: Read/Write Settings\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oIni := TIni():New( \"C:\\MyApp\\settings.ini\" )\n local cServer, nPort, lAutoSave, dLastRun\n\n // Read values with defaults\n cServer := oIni:Get( \"Database\", \"Server\", \"localhost\" )\n nPort := oIni:Get( \"Database\", \"Port\", 3306 )\n lAutoSave := oIni:Get( \"Database\", \"AutoSave\", .F. )\n dLastRun := oIni:Get( \"Database\", \"LastRun\", Date() - 1 )\n\n ? \"Server:\", cServer\n ? \"Port:\", nPort\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tlayout.html", "title": "TLayout - Layout Manager", "text": "Source:\nsource/classes/tlayout.prg\nTLayout inherits from\nTPanel\nand provides automatic arrangement of child controls\nin horizontal or vertical layouts. When the parent window is resized, TLayout repositions its\nchildren according to the defined layout rules. The class maintains arrays of horizontal and\nvertical layout definitions (\naHLayout\n,\naVLayout\n) and fires the\nbOnResize\ncodeblock when the layout is recalculated.\nInheritance\n[diagrama]\nDATA Members\nDATA\nType\nDescription\nbOnResize\nCodeblock\nCodeblock evaluated when the layout is recalculated after a resize\naHLayout\nArray\nArray of horizontal layout pane definitions (width ratios or fixed sizes)\naVLayout\nArray\nArray of vertical layout pane definitions (height ratios or fixed sizes)\nMethods\nMethod\nDescription\nNew( oWnd )\nCreate a TLayout manager associated with window oWnd\naddHLayout( nW )\nAdd a horizontal split pane with proportional width nW\naddVLayout( nH )\nAdd a vertical split pane with proportional height nH\nonResized( nType, nW, nH )\nCalled when the parent window is resized; recalculates child positions\nExample: Horizontal Split Layout\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oLayout, oLeft, oRight\n\n DEFINE WINDOW oWnd TITLE \"Layout Demo\" ;\n SIZE 800, 600\n\n oLayout := TLayout():New( oWnd )\n\n // Define two horizontal panes (left 30%, right 70%)\n oLayout:addHLayout( .3 )\n oLayout:addHLayout( .7 )\n\n // Create child controls in each pane\n @ 0, 0 SAY oLeft PROMPT \"Left Panel\" ;\n OF oWnd SIZE 240, 600 PIXEL\n\n @ 0, 0 SAY oRight PROMPT \"Right Panel\" ;\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tlibfile.html", "title": "TLibFile - LIB File Reader", "text": "Source:\nsource/classes/tlib.prg\nTLibFile inherits from\nTFile\nand provides read-only access to OMF-format static library\n(.LIB) files. It parses the library directory pages to extract module names and metadata,\nallowing tools to inspect the contents of a library without an external librarian utility.\nInheritance\n[diagrama]\nMethods\nMethod\nDescription\nnSignature()\nReturn the LIB signature word. Standard OMF libraries return 0xF0F0\nnPageSize()\nReturn the library page size in bytes (typically 256 or 512)\nnDirPages()\nReturn the number of directory pages in the library\naModules()\nReturn an array of module names (OMF object files) contained in the library\nExample: Inspect a Library File\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oLib := TLibFile():New( \"C:\\fwteam\\lib\\FiveHC.lib\", 0 )\n local aMods, n\n\n if oLib:hFile != nil\n ? \"Signature:\", oLib:nSignature()\n ? \"Page size:\", oLib:nPageSize()\n ? \"Directory pages:\", oLib:nDirPages()\n\n aMods := oLib:aModules()\n ? \"Modules in library:\", Len( aMods )\n\n for n := 1 to Min( Len( aMods ), 20 )\n ? n, aMods[ n ]\n next\n\n oLib:Close()\n else\n ? \"Cannot open library file\"\n endif\n\nreturn nil\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tlinklist.html", "title": "TLinkList - Doubly-Linked Tree List", "text": "Source:\nsource/classes/linklist.prg\nTLinkList implements a doubly-linked list with hierarchical (tree) capabilities. Each node in\nthe list has a\nCargo\nDATA for arbitrary user data and supports nesting via children.\nNodes can store a prompt string, bitmap handles, open/close state, an action codeblock, and a\nnesting level. The class provides tree traversal, searching, sorting, and recursive expansion\nor collapse of nodes.\nDATA Members\nDATA\nType\nDescription\noFirst\nObject\nFirst node in the list\noLast\nObject\nLast node in the list\nCargo\nAny\nArbitrary user data attached to the list (or to each node)\nMethods\nMethod\nDescription\nAdd( cPrompt, nLevel, hBmpOpen, hBmpClose, lOpen, bAction, uCargo )\nAdd a new node with prompt, nesting level, bitmap handles, open state, action codeblock and cargo\nEval( bAction, bFor, bWhile, lRecurs )\nEvaluate a codeblock for each node, with optional filter (bFor), condition (bWhile) and recursive traversal\nFind( uFind, lRecurs )\nFind a node by cargo value (or by other criteria), optionally recursing into children\nSort( lAsc, lRecurs, nCol )\nSort nodes by prompt, ascending (lAsc=.T.) or descending, optionally recursive and by column\nOpenAll()\nRecursively open all nodes (set lOpen=.T.)\nExpand( nLev )\nExpand (open) nodes down to level nLev\nCollapse( nLev )\nCollapse (close) nodes above level nLev\nnCount()\nReturn the total number of nodes\nLevels()\nReturn the maximum nesting depth\nExample: Build a Tree Structure\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oList := TLinkList():New()\n\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tmci.html", "title": "TMci", "text": "Source:\nsource/classes/tmci.prg\nStandalone class\nTMci provides multimedia playback control through the Windows Media Control Interface (MCI) API. It supports audio and video file playback including AVI video, CD audio, WAV, MIDI, and other MCI-compatible devices. The class can play media in a window or full-screen.\nKey DATA Members\nDATA\nType\nDescription\nnError\nNumeric\nLast MCI error code; zero indicates success\nnId\nNumeric\nMCI device identifier assigned on open\ncType\nCharacter\nDevice type: \"AVIVideo\", \"CDAudio\", \"WaveAudio\", \"Sequencer\", etc.\ncFileName\nCharacter\nPath to the multimedia file being played\noWnd\nObject\nParent window for video playback\nMethods\nMethod\nDescription\nNew( cDev, cFile )\nCreate a new MCI object for the given device type and media file\nlOpen()\nOpen the MCI device; returns .T. on success\nPlay( nFrom, nTo, hWnd )\nPlay a segment from\nnFrom\nto\nnTo\n, optionally in a window handle\nPlayFull()\nPlay media in full-screen mode\nSetWindow( oWnd )\nSet the parent window for video output\nPosition()\nReturn the current playback position\nLength()\nReturn the total media length\nSendStr( cMci )\nSend a raw MCI command string directly to the device\ncGetError()\nReturn a human-readable description of the last error\nEnd()\nClose the MCI device and release resources\nExample: Play AVI File\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oMci, oWnd\n\n DEFINE WINDOW oWnd TITLE \"MCI Video Player\" SIZE 640, 480\n\n oMci := TMci():New( \"AVIVideo\", \"sample.avi\" )\n\n if oMci:lOpen()\n oMci:SetWindow( oWnd )\n oMci:Play()\n MsgInfo( \"Playing: \" + oMci:cFileName )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tmru.html", "title": "TMRU - Most Recently Used File List", "text": "Source:\nsource/classes/mru.prg\nTMRU manages a Most Recently Used (MRU) file list, typically displayed in the File menu of\napplications. It persists the list to an INI file (via\nTIni\n) and automatically\nupdates a popup menu. When a user opens a file, the MRU list is updated with the new entry\nat the top, and older entries shift down or are removed if the list exceeds the maximum size.\nSelecting an MRU menu item fires the associated\nbAction\ncodeblock.\nDATA Members\nDATA\nType\nDescription\naItems\nArray\nArray of file path strings in MRU order (most recent first)\nnMaxItems\nNumeric\nMaximum number of items in the MRU list (default 4)\ncIniFile\nCharacter\nPath to the INI file for persisting the MRU list\ncSection\nCharacter\nINI section name where MRU entries are stored\noMenu\nObject\nPopup menu object that displays the MRU entries\nbAction\nCodeblock\nCodeblock executed when an MRU item is selected, receives the file path\nMethods\nMethod\nDescription\nNew( cIni, cSec, nMax, cMsg, bAction, oMenu, nPos )\nCreate MRU list. Loads from INI, creates popup menu items, and attaches them to oMenu at position nPos\nSave( uNew )\nAdd a new file to the top of the MRU list. If it already exists, move it to the top. Persists to INI. uNew can be a single file or an array of files\nClear()\nClear the MRU list, remove all menu items, and delete the INI section\nExample: MRU Menu in File Menu\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oMenu, oMru\n\n DEFINE WINDOW oWnd TITLE \"MRU Demo\"\n\n MENU oMenu\n MENUITEM \"~File\"\n POPUP\n MENUITEM \"~Open...\" ACTION OpenFile( oWnd, oMru )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tmsword.html", "title": "FWMSWordDoc", "text": "Source:\nsource/classes/fwmsword.prg\nFWMSWordDoc generates Microsoft Word documents programmatically via OLE Automation. It wraps the Word object model to create, format, and save documents with text, tables, images, shapes, and page layout control. The class provides a TPrinter-compatible API surface, allowing print-oriented code to produce Word output with minimal changes.\nKey DATA Members\nDATA\nType\nDescription\noWord\nObject\nWord Application OLE object\noDoc\nObject\nWord Document OLE object\ncFileName\nCharacter\nDefault output file name\nlPreview\nLogical\nShow Word window with document on completion\nnPage\nNumeric\nCurrent page counter\nMethods\nMethod\nDescription\nNew( cFileName )\nCreate a new Word document via OLE; return nil if Word is unavailable\nEnd()\nSave if a filename was provided, optionally show Word window, then close\nSave( cFileName, lPdf )\nSave document to file; supports docx, doc, and PDF formats\nSetPage( nPage )\nSet the paper size using DMPAPER_ constants\nStartPage()\nInsert a page break and advance the page counter\nEndPage()\nPlaceholder for printer compatibility (no-op)\nLine( nTop, nLeft, nBottom, nRight, oPen, cUnits )\nDraw a line shape in the document\nBox( nTop, nLeft, nBottom, nRight, oPen, oBrush, aText, cUnits, nShape )\nDraw a rectangle, rounded rectangle, or oval shape\nSay( nRow, nCol, cText, oFont, nWidth, nClrText, nBkMode, nPad, cUnits )\nInsert formatted text at a position\nSayText( nRow, nCol, cText, nWidth, nHeight, oFont, cAlign, nClrText, nClrBack, cUnits )\nInsert text in a text box with full alignment control\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tng.html", "title": "TNg - Norton Guides Writer", "text": "Source:\nsource/classes/ng.prg\nTNg is a simple writer class for producing Norton Guides format files. It supports writing short entries, long descriptions, and cross-reference (\"see also\") lists. The output format uses the\n!short:\n,\n!seealso:\n, and plain text directives understood by Norton Guides viewers.\nKey DATA Members\nDATA\nType\nDescription\nhFile\nHandle\nFile handle for the output file\nMethods\nMethod\nDescription\nNew( cOutFile )\nCreate and open the output file for writing\nWriteShort( cShort )\nWrite a short entry (\n!short:\ndirective)\nWriteLong( cLong )\nWrite a long description text block\nWriteSeeAlso( cSeeAlsoList )\nWrite cross-reference list (\n!seealso:\ndirective)\nEnd()\nClose the output file\nExample: Write NG File\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oNg := TNg():New( \"commands.ng\" )\n\n oNg:WriteShort( \"DEFINE WINDOW - Create a new window\" )\n oNg:WriteLong( \"DEFINE WINDOW oWnd TITLE cTitle [SIZE nW, nH] ...\" + CRLF + ;\n \"Creates a new window object and activates it.\" )\n oNg:WriteSeeAlso( \"DEFINE DIALOG, ACTIVATE WINDOW\" )\n oNg:End()\n\nreturn nil\nNotes\nThe output file is created via\nFCreate()\nin the\nNew()\nconstructor.\nShort entries use the\n!short:\nmarker; see-also lists use\n!seealso:\n.\nLong text is written as plain text lines separated by CRLF.\nAlways call\nEnd()\nto close the file handle; the class does not auto-close on destroy." }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tobjectfile.html", "title": "TObjFile - OMF Object File Generator", "text": "Source:\nsource/classes/objfile.prg\nTObjFile inherits from\nTFile\nand writes Intel OMF (Object Module Format) object files.\nOMF is the object file format used by Borland C/C++ and other x86 compilers. TObjFile provides\nmethods to emit each record type: module header, compiler identification, segment/public/external\ndefinitions, logical segment data, group definitions, and module termination.\nInheritance\n[diagrama]\nMethods\nMethod\nDescription\nTHeadr( cModule )\nWrite THEADR record with module name\nCompiler( cName )\nWrite compiler identification string record\nLNames( aNames )\nWrite LNAMES records from an array of name strings\nSegDef( n, nClass, nLen, nAlign )\nDefine a logical segment with index, class index, length and alignment\nPubDef( cName, nSeg, nOff )\nDefine a public (exported) symbol, name, segment and offset\nExtDef( aNames )\nDefine external (imported) symbols from an array of names\nLeData( cData, nSeg, nOff )\nWrite LEDATA record with binary data, segment index and offset\nGrpDef( nName, aSegs )\nDefine a segment group with name index and array of segment indices\nModEnd()\nWrite MODEND record to terminate the object module\nExample: Generate an OMF Object File\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oObj := TObjFile():Create( \"test.obj\", 1 )\n\n oObj:THeadr( \"TESTMODULE\" )\n oObj:Compiler( \"Harbour/FWH OMF Generator\" )\n\n // Define segment names\n oObj:LNames( { \"_TEXT\", \"CODE\" } )\n\n // Define a code segment: index 1, class 1, length 256, para-align\n oObj:SegDef( 1, 1, 256, 4 )\n\n // Public symbol\n oObj:PubDef( \"_TestFunc\", 1, 0 )\n\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tparser.html", "title": "TParser - Dynamic Parser Machine", "text": "Source:\nsource/classes/tparser.prg\nTParser is a generic grammar-rule engine skeleton. It maintains a list of production rules and a state stack. Rules consist of a non-terminal symbol, a token array, and an action code block. This class provides the framework for building expression parsers, command interpreters, or domain-specific language processors.\nKey DATA Members\nDATA\nType\nDescription\naRules\nArray\nArray of grammar rules, each { cNonTerminal, aTokens, bAction }\naStates\nArray\nState stack for parsing; state 0 is empty by default\nMethods\nMethod\nDescription\nNew()\nCreate a new parser with empty rules and initial state\nAdd( cNonTerminal, aTokens, bAction )\nAdd a production rule: non-terminal -> sequence of tokens with action\nExample: Add Grammar Rules\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oParser := TParser():New()\n\n // expr -> number\n oParser:Add( \"expr\", { \"number\" }, {|n| n } )\n\n // expr -> expr + expr\n oParser:Add( \"expr\", { \"expr\", \"+\", \"expr\" }, {|a,b| a + b } )\n\n // expr -> expr * expr\n oParser:Add( \"expr\", { \"expr\", \"*\", \"expr\" }, {|a,b| a * b } )\n\n // Access the rules\n ? Len( oParser:aRules ) // 3 rules added\n\nreturn nil\nNotes\nTParser is a skeleton class. The core\nAdd()\nmethod builds the rule table; you must implement the tokenizer and the parsing algorithm (shift-reduce, recursive descent, etc.) yourself using the\naRules\nand\naStates\ndata.\nEach rule's\naTokens\narray defines the expected token sequence; the\nbAction\nblock is the semantic action fired when the rule matches.\naStates\nstarts with a single empty state (index 0). […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/tpicker_color.html", "title": "TBtnClr / TPickerColor", "text": "Source:\nsource/classes/tbtnclr.prg\nTBtnClr inherits from:\nTControl\n. TPickerColor is a standalone helper class.\nTBtnClr is a color-picker button control that displays a selected color swatch and optionally a drop-down arrow bitmap. Clicking the button triggers an action (typically showing the TPickerColor dialog). TPickerColor provides a themed color selection dialog with a grid of standard colors, a row of base/theme colors, and a \"More Colors\" option using the system ChooseColor dialog.\nKey DATA Members (TBtnClr)\nDATA\nType\nDescription\nnColorSel\nNumeric\nCurrently selected color (RGB)\nnTypeClr\nNumeric\nSwatch display mode: 1=large, 2=small\nbAction\nBlock\nCode block executed on click\nlDrawBorder\nLogical\nDraw a custom border around the button\nnColorBorder\nNumeric\nBorder color\nhBmpPop\nHandle\nOptional drop-down arrow bitmap\ncMsg\nCharacter\nMessage bar prompt text\nMethods\nMethod\nDescription\nNew( nRow, nCol, oWnd, nWidth, nHeight, cBtnPop, nColorSel, nTypeClr, bAction, bWhenAct, cToolTip, lDesign, lDrawBorder, nClrText, nClrPane, nColorBorder )\nCreate a color button control\nSetColor( nClr )\nChange the current selected color\nClick()\nTrigger the button action\nPaint()\nRender the button with theme or classic style, color swatch, and drop-down bitmap\nLoadBmp( cBitmap )\nLoad the popup arrow bitmap from file or resource\nTPickerColor\nMethod\nDescription\nNew( nColor, oControl, cTitle1, cTitle2, cTitle3 )\nCreate the picker dialog with customizable section titles\nDialog( nColor )\nBuild the dialog with color grid, base colors, and More Colors button\nActivate()\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/treg32.html", "title": "TReg32 - Windows Registry", "text": "Source:\nsource/classes/reg32.prg\nTReg32 wraps the Windows Registry API (\nRegOpenKeyEx\n,\nRegQueryValueEx\n,\nRegSetValueEx\n,\nRegCreateKeyEx\n, etc.) into an object-oriented interface.\nIt supports reading and writing string, numeric (DWORD), and binary values, enumerating and\ndeleting subkeys, and automatic type detection. Suitable for storing application settings in\nHKCU or HKLM.\nDATA Members\nDATA\nType\nDescription\ncRegKey\nCharacter\nFull registry key path (e.g. \"Software\\MyApp\")\nnKey\nNumeric\nRoot key handle (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, etc.)\nnHandle\nNumeric\nOpened key handle from RegOpenKeyEx / RegCreateKeyEx\nnError\nNumeric\nLast Windows API error code (0 = success)\nMethods\nMethod\nDescription\nNew( nKey, cKey )\nOpen an existing registry key for reading\nCreate( nKey, cKey )\nCreate or open a registry key with write access\nGet( cSubKey, uDef )\nRead a value by name. Returns uDef if not found. Auto-detects string, DWORD, or binary\nGetBinary( cSubKey )\nRead a binary (REG_BINARY) value and return it as a character string\nSet( cSubKey, uVal, nType )\nWrite a value. nType: 1=REG_SZ (string), 3=REG_BINARY, 4=REG_DWORD (numeric). Auto-detected if omitted\nDelete( cSubKey )\nDelete a value or subkey (if empty)\nClose()\nClose the registry key handle\nExample: HKCU Settings\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oReg := TReg32():New( HKEY_CURRENT_USER, \"Software\\MyApp\" )\n\n if oReg:nHandle != 0\n // Read values\n local cName := oReg:Get( \"UserName\", \"Default\" )\n local nPos := oReg:Get( \"WindowPos\", 100 )\n local dLast := oReg:Get( \"LastRun\", Date() )\n\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/trestore.html", "title": "TRestore", "text": "Source:\nsource/classes/trestore.prg\nOverview\nTRestore class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/trrw.html", "title": "RRW (Rave Reports Wrapper)", "text": "Source:\nsource/classes/rrw.prg\nStandalone class\nRRW is a wrapper class for the Rave Reports (RRW) runtime engine. It manages report execution via a control file (DBF-based report registry), generates a temporary\n.CNT\ncontrol file, launches the\nRRWRUN.EXE\nengine as an external process, and collects execution results. Reports are defined in a control DBF (default\nRREPORTS.DBF\n) and executed by name.\nKey DATA Members\nDATA\nType\nDescription\ncRi_Report\nCharacter\nReport name to execute\ncRi_OutFile\nCharacter\nOutput file path for results\ncRi_Printer\nCharacter\nPrint mode: \"P\"=printer, \"D\"=preview\ncRi_Filter\nCharacter\nOptional filter expression\ncRi_Query\nCharacter\nQuery mode: \"S\"=silent, \"?\"=prompt, \"O\"=filter\nnRi_Copies\nNumeric\nNumber of copies to print\nlActive\nLogical\nIs the report object active and ready\ncDataDirectory\nCharacter\nData file directory\ncLibDirectory\nCharacter\nReport library directory\ncControlFile\nCharacter\nPath to the generated .CNT control file\ncOutFile\nCharacter\nPath to the .OUT results file\naResults\nArray\nExecution results: { ecode, emsg, nReports, nPages, nRecNo }\nMethods\nMethod\nDescription\nNew( cControlFile, cReport, lQuery, lPreview, nBegPage, nEndPage, cDataDirectory, cLibDirectory, cTempDir, cOutFile )\nInitialize a report run: open the control DBF, locate the report, generate the .CNT control file\nEnd()\nClose database areas and mark as inactive\nPrint()\nExecute the report via RRWRUN.EXE and collect results\nActivate()\nAlias for\nPrint()\nSetFilter( cVar )\nSet a filter expression and switch to filter query mode\nSetPrinter( cVar )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/trtffile.html", "title": "TRtfFile - RTF/HPJ Help Document Generator", "text": "Source:\nsource/classes/rtffile.prg\nTRtfFile generates Rich Text Format (.RTF) files suitable for compiling into Windows Help\n(.HLP) files with the Microsoft Help Workshop (HCW.EXE). It produces short and long topic\nentries, jump and popup links, bitmap references, topic IDs, see-also lists, and page breaks,\nall in valid RTF syntax that the Help Compiler understands.\nMethods\nMethod\nDescription\nNew( cFile )\nCreate a new RTF file with the standard help header (footnote formatting)\nWriteShort( cText, cJump, lPopup, cBmp )\nWrite a short topic. cText is displayed; cJump is the context string; lPopup specifies popup vs. jump; cBmp optionally embeds a bitmap\nWriteLong( cText )\nWrite a long topic paragraph of body text\nWriteId( cId )\nWrite a # footnote with the topic ID string (used as the context name for jumps)\nWriteSeeAlso( cList )\nWrite a $ footnote with a \"See Also\" list of related topic titles\nNewPage()\nInsert a page break (form-feed) to separate topics in the RTF\nEnd()\nFinalize the RTF file with closing braces and close it\nExample: Generate a Help Topic File\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oRtf := TRtfFile():New( \"help.rtf\" )\n\n // First topic: Introduction\n oRtf:WriteId( \"INTRO\" )\n oRtf:WriteShort( \"Welcome to MyApp\", \"INTRO\", .F., \"\" )\n oRtf:WriteLong( \"This is the introduction to MyApp.\" )\n oRtf:WriteLong( \"Click below for more information.\" )\n oRtf:WriteSeeAlso( \"Installation|Configuration\" )\n oRtf:NewPage()\n\n // Second topic: Installation\n oRtf:WriteId( \"INSTALL\" )\n oRtf:WriteShort( \"Installation Guide\", \"INSTALL\", .F., \"\" )\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/ttextfile.html", "title": "TTxtFile - Line-Oriented Text File", "text": "Source:\nsource/classes/ttxtfile.prg\nTTxtFile inherits from\nTFile\nand provides line-oriented text file reading and writing\nwith INI-style section support. It buffers the entire file into memory and offers cursor-based\nnavigation (Advance, Rewind, Skip, GoTo), line-level operations (ReadLine, Add, AppendLn,\nDelLine, InsLine, RepLine), and INI section key/value access (GetValue, SetValue).\nInheritance\n[diagrama]\nDATA Members\nDATA\nType\nDescription\ncLine\nCharacter\nCurrent line content at the cursor position\nnTLines\nNumeric\nTotal number of lines in the file\nnLine\nNumeric\nCurrent line position (1-based)\nMethods\nMethod\nDescription\nAdvance()\nMove to the next line. Returns .T. if successful, .F. if at EOF\nRewind()\nMove to the previous line. Returns .T. if successful, .F. if at BOF\nSkip( n )\nMove forward (positive) or backward (negative) n lines\nReadLine()\nReturn the current line content as a string\nAdd( c )\nAppend line c at the end of the file\nAppendLn( c )\nInsert line c after the current line\nDelLine()\nDelete the current line\nInsLine( c )\nInsert line c before the current line\nRepLine( c )\nReplace the current line with c\nGoTop()\nMove cursor to the first line\nGoBottom()\nMove cursor to the last line\nGoTo( n )\nMove cursor to absolute line number n\nGetValue( cSec, cKey, xDef )\nReturn the value of a key in an INI-style section, or xDef if missing\nSetValue( cSec, cKey, xVal )\nSet the value of a key in an INI-style section (creates section/key if needed)\nExample: Config File Reader\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oTxt := TTxtFile():New( \"config.ini\", 2 )\n\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/ttime.html", "title": "TTime", "text": "Source:\nsource/classes/time.prg\nTTime represents a time value as seconds since midnight. It provides time arithmetic (add/subtract hours, minutes, seconds), formatting to \"HH:MM:SS\", and the ability to read the system clock or write the time back to the system clock. Internally the time is stored as a single numeric value (\nnTime\n) modulo 86400.\nKey DATA Members\nDATA\nType\nDescription\nnTime\nNumeric\nSeconds since midnight (0-86399)\nMethods\nMethod\nDescription\nNew( nHours, nMinutes, nSeconds )\nCreate a TTime from hour/minute/second values. All default to 0\nSystem()\nInitialize from the current system clock time\nAddHours( n )\nAdd n hours to the stored time\nAddMinutes( n )\nAdd n minutes to the stored time\nAddSeconds( n )\nAdd n seconds to the stored time\ncAdd( nH, nM, nS )\nAdd a time duration and return the result as a formatted \"HH:MM:SS\" string\ncSub( nH, nM, nS )\nSubtract a time duration (or another TTime object) and return the formatted result\ncGetTime()\nReturn the stored time formatted as \"HH:MM:SS\"\nSysChange()\nSet the system clock to the stored time value\nExample: Time Arithmetic\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oTime, cResult\n\n // Create a time: 09:30:00\n oTime := TTime():New( 9, 30, 0 )\n\n // Add 2 hours and 15 minutes\n cResult := oTime:cAdd( 2, 15, 0 )\n MsgInfo( cResult ) // --> \"11:45:00\"\n\n // Subtract 45 minutes\n cResult := oTime:cSub( 0, 45, 0 )\n MsgInfo( cResult ) // --> \"11:00:00\"\n\n // Get current system time\n oTime:System()\n MsgInfo( \"Current time: \" + oTime:cGetTime() )\n\nreturn nil\nNotes\n […]" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/ttimer.html", "title": "TTimer", "text": "Source:\nsource/classes/timer.prg\nStandalone class\nTTimer wraps the Win32\nSetTimer\n/\nKillTimer\nAPI to fire a Harbour code block at configurable intervals. Timers are used for periodic background tasks, animations, auto-save, and polling.\nKey DATA Members\nDATA\nType\nDescription\nnInterval\nNumeric\nTimer interval in milliseconds (default 18)\nbAction\nBlock\nCode block executed on each timer tick\nlActive\nLogical\nWhether the timer is currently running\nnId\nNumeric\nUnique timer identifier\nMethods\nMethod\nDescription\nNew( nInterval, bAction, oWnd )\nCreate a timer. Default interval 18 ms. If oWnd is omitted, the active window is used.\nActivate()\nStart the timer by calling\nSetTimer()\nDeActivate()\nStop the timer by calling\nKillTimer()\nEnd()\nDeactivate and remove the timer from the global list\nCommands\nCÓDIGO:\nDEFINE TIMER oTmr INTERVAL nMs ACTION bAction OF oWnd\nExample: One-Second Timer\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n local oWnd, oTimer, nSec := 0\n DEFINE WINDOW oWnd TITLE \"TTimer Demo\" SIZE 300, 200\n @ 20, 20 SAY \"Elapsed: \" + Str( nSec ) + \" seconds\"\n DEFINE TIMER oTimer INTERVAL 1000 ;\n ACTION ( nSec++, oWnd:Refresh() ) ;\n OF oWnd\n oTimer:Activate()\n ACTIVATE WINDOW oWnd CENTERED\nreturn nil\nNotes\nTimers are stored in an internal static array and matched by\nnId\nin the global\nTimerEvent()\nfunction.\nAlways call\nEnd()\nwhen a timer is no longer needed.\nKeep\nbAction\nlightweight; long operations cause UI lag.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/utilities", "url": "https://fivetechsoft.github.io/FWH_docs/en/utilities/txmlwriter.html", "title": "TXmlWriter", "text": "Source:\nsource/classes/TXmlWriter.prg\nTXmlWriter is a minimal streaming XML writer that writes directly to disk. It supports the standard OpenTag / Element / CloseTag pattern and produces well-formed XML with automatic indentation and character escaping. Every method returns\nSelf\n, enabling a fluent (chainable) API. The writer uses Harbour's low-level file I/O (\nFCreate\n/\nFWrite\n) so it stays memory-efficient even for large documents.\nKey DATA Members\nDATA\nType\nDescription\ncFile\nCharacter\nOutput file path\nhFile\nNumeric\nFile handle from FCreate ( -1 if creation failed )\nnIndent\nNumeric\nCurrent indentation level (0-based)\naStack\nArray\nTag name stack for nesting; ensures CloseTag knows which tag to close\nlOpen\nLogical\nFile is open and writable\nMethods\nMethod\nDescription\nNew( cFile )\nCreate a writer and open the output file. Returns Self\nStart( cVersion, cEncoding )\nWrite the XML declaration\n\n. Defaults: \"1.0\", \"UTF-8\". Returns Self\nOpenTag( cTag, hAttribs )\nOpen a named tag with optional hash of attributes. Increases indent. Returns Self\nCloseTag( cTag )\nClose the most recent (or named) tag. Decreases indent. Returns Self\nElement( cTag, cValue, hAttribs )\nWrite a self-closing tag or a full element with escaped text content. Returns Self\nComment( cText )\nWrite an XML comment\n\n. Returns Self\nCData( cText )\nWrite a CDATA section\n\n. Returns Self\nEnd()\nClose any remaining open tags to ensure well-formed output. Returns Self\nDestroy()\nClose the file handle if still open\nExample: Generate XML\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/agent.html", "title": "Class Agent", "text": "Source:\nsource/classes/agent.prg\nsource\\classes\\agent.prg\nAn\nautonomous AI coding agent\nfor Harbour/FiveWin. Implements the same\nagentic engine that powers\nAgents Web\n:\nstreaming SSE chat, real tool-calling, dynamic tools, skills, and multi-agent dispatch via\nhb_threadStart()\n.\nArchitecture\n[diagrama]\nQuick Start\nCÓDIGO:\noAgent := Agent():New( cApiKey )\noAgent:Run( \"Crea una app TODO en PHP+SQLite con 3 sub-agentes\" )\n? oAgent:UsageReport()\nDATA Members\nDATA\nType\nDescription\naMessages\nArray\nFull conversation\n{role, content}\naBuiltinTools\nHash\nname → codeblock\nfor all tools\naUserTools\nHash\nname → {desc, script, type}\nfor user-created tools\naSkills\nHash\nname → content\nfor all known skills\naSkillsOn\nArray\nNames of currently active skills\ncGoal\nString\nCurrent objective\naPlan\nArray\nSteps\n{title, state}\ncModel\nString\nModel ID (default:\ndeepseek-v4-pro\n)\nnMaxSteps\nNumeric\nMax iterations per Run() (default: 14)\nnTokensIn/Out/Cache\nNumeric\nToken counters\naHooks\nArray\nRegistered hooks\n{name, event, block, priority, active}\ncRole\nString\nAgent role:\n\"planner\"\n,\n\"analyst\"\n,\n\"developer\"\n,\n\"tester\"\ncRolePrompt\nString\nExtra system prompt injected by role\naSharedContext\nHash\nShared blackboard between agents for inter-agent communication\nnSubAgentTimeout\nNumeric\nSeconds per sub-agent (default: 120)\nbOnAgentProgress\nCodeblock\nCallback:\n{|cName, cStatus, cMsg| ...}\nCore Methods\nNew( cKey, [cModel] ) → Agent\nConstructor. Initializes tools, skills, loads saved state. Default model:\ndeepseek-v4-pro\n.\nRun( cPrompt ) → lastAssistantMessage\nMain agent loop: observe → decide → act. Max\nnMaxSteps\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/agenticai.html", "title": "AgenticAI — a WebView2 agent UI", "text": "Source:\nsamples/AgenticAI/agenticai.prg\n(+\nagenticai.hbp\n,\nbuild.bat\n)\nAgenticAI is a FiveWin GUI front-end for the\nccharbour\nagentic engine.\nIt runs the same streaming chat + tool-calling loop that powers the console\ncc.exe\n(\nCC_Client\n/\nCC_AgentRun\n), but renders it as a\nmodern web chat panel hosted in an embedded Edge\nWebView2\n(\nTWebView2\n) that fills a resizable dialog — no RichEdit, no .rc.\n[diagrama]\nWhat the panel shows\nStreaming bubbles\n— the assistant answer streams live as plain\ntext; at the end of the turn the raw markdown is re-rendered (tables, code blocks,\nlists) with\nmarked.js\n.\nCollapsible \"N actions\" panel\n— per-tool rows with icons\n(file / terminal / search / globe / memory), a pending spinner that becomes a green\ncheck, or a red X on error.\nPermit / reject card\n— when \"Auto-approve\" is off, every\nmutating tool (\nshell\n/\nwrite\n/\nedit\n) shows a\nconfirmation card and the turn blocks until you decide.\nask_user card\n— a multiple-choice question wired to the\nwebview (replaces ccharbour's console selector, which cannot prompt without a console).\n\"Code generated\" bar\nwith a\nView Changes (Diff)\ntoggle that\nrenders the ccharbour diff with red/green lines.\nSlash commands\n—\n/key \nsets the LLM\nkey at runtime, plus\n/tools\n,\n/clear\n,\n/help\n.\nPRG ↔ page bridge\nPRG drives the page with\noWeb:Eval( jsFunc(...) )\n; the page calls back with\nSendToFWH( action, text )\n, delivered to\nTWebView2:bOnBind\n.\nThe full local tool set (read / write / edit / glob / grep / shell / web_search /\nweb_fetch / memory) is registered and wrapped in a permission gate.\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/gpt2model.html", "title": "GPT2Model - Pretrained GPT-2 inference in FWH", "text": "Source:\nsource/classes/gpt2model.prg\n(on\nFW_Tensor\n,\nsource/function/fwtensor.c\n)\nGPT2Model\nruns\nreal pretrained GPT-2\nentirely in\nFWH/Harbour on the CPU. It loads the actual GPT-2 weights from a HuggingFace\nmodel.safetensors\nand executes the full forward pass — token +\npositional embeddings, pre-norm, multi-head causal attention, GELU MLP,\nresiduals, final norm and a weight-tied output head — all on the flat\nFW_Tensor\nbackend. It is Phase 3\nof the PyTorch-lite roadmap, verified numerically against a reference\n(\n\"The capital of France is\"\n→\n\" the\"\n, token 262).\nGetting the weights\nDownload GPT-2 small from the HuggingFace Hub (it is not shipped with FWH):\nhttps://huggingface.co/gpt2/resolve/main/model.safetensors\n(~500 MB,\n124M params) plus\ntokenizer.json\nfor\nHFTokenizer\n. Weights are read one tensor\nat a time via\nFWT_LoadSafe\n(no full-file load), so peak memory is the\nfloat32 weights (~500 MB), which fits a 32-bit process.\nMethods\nMethod\nDescription\nNew( n_layer, n_head, n_embd, vocab, n_ctx )\nConfigure the architecture. Defaults to GPT-2 small (12, 12, 768, 50257, 1024).\nLoadSafetensors( cFile )\nParse the safetensors header and load every weight tensor into FW_Tensors.\nForward( aTok )\nRun the forward pass for a token sequence (1-based gather ids). Returns logits\n[seq, vocab]\n.\nGenerate( aTok, nNew, nTemp, nTopK )\nAutoregressive generation (greedy / temperature / top-k). Returns the full 1-based id sequence.\nIds are 1-based for gathering (the HuggingFace 0-based id + 1); convert back with\nid - 1\nbefore decoding.\nExample\nCÓDIGO:\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/hftokenizer.html", "title": "HFTokenizer - HuggingFace BPE Tokenizer", "text": "Source:\nsource/classes/hftokenizer.prg\nHFTokenizer\nis a pure Harbour implementation of the HuggingFace\nbyte-level Byte-Pair-Encoding (BPE)\ntokenizer used by GPT-2 and\nmany derived models. It loads a standard\ntokenizer.json\nfile\n(downloaded from the HuggingFace Hub) and reproduces GPT-2 tokenization\nbit-for-bit\n: the same text yields the exact same token ids.\nThis bridges the FiveWin\nTransformer\nclass with\nreal-world vocabularies, so a model can be trained or run on real text instead of\ntoy token ids.\nTokenization Pipeline\n[diagrama]\nGetting a tokenizer.json\nDownload a tokenizer from the HuggingFace Hub. For GPT-2:\nCÓDIGO:\nhttps://huggingface.co/gpt2/resolve/main/tokenizer.json\nThe file contains a\nmodel\nobject with a\nvocab\nmap\n(token → id) and a\nmerges\nlist (ordered BPE merge rules).\nGPT-2's file is about 1.35 MB with 50,257 tokens and 50,000 merges.\nMethods\nMethod\nDescription\nNew( cFile )\nBuild the byte → unicode maps and, if\ncFile\nis given, load that\ntokenizer.json\n.\nLoad( cFile )\nParse a\ntokenizer.json\n: read\nmodel.vocab\nand\nmodel.merges\n(string or pair form both accepted). Returns\nNIL\non a malformed file.\nEncode( cText )\nTokenize text into an array of (0-based, raw HuggingFace) token ids.\nDecode( aIds )\nReconstruct the original text from an array of token ids.\nSize()\nNumber of tokens in the loaded vocabulary.\nExample\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nFUNCTION Main()\n LOCAL oTok, aIds, cBack\n\n oTok := HFTokenizer():New( \"gpt2.tokenizer.json\" )\n\n ? oTok:Size() // 50257\n\n aIds := oTok:Encode( \"hello world\" )\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/mcp-server.html", "title": "MCP Server — Computer Use", "text": "Source:\nmcp\\mcp_server.prg\nA\nModel Context Protocol (MCP)\nserver for desktop automation, built with\nHarbour/FiveWin. Exposes screenshot capture and UI action execution tools over stdio\nfor AI clients like Claude Code, OpenCode, and Cursor.\nArchitecture\nCÓDIGO:\n┌─────────────────────┐ JSON-RPC 2.0 ┌──────────────────┐\n│ Claude Code / │ stdin ──────────────► │ mcp_server.exe │\n│ OpenCode / Cursor │ stdout ◄────────────── │ (Harbour/FWH) │\n│ (the brain) │ │ (the muscles) │\n└─────────────────────┘ └──────────────────┘\n │ │\n │ 1. capture_screen → gets screenshot │\n │ 2. analyzes image (client has vision) │\n │ 3. execute_action → click/type/scroll │\n │ 4. repeat... │\n ▼ ▼\n Decides what Windows Desktop\n to do next (GDI + Win32 API)\nQuick Start\n1. Build\nCÓDIGO:\ncd C:\\FWH\\mcp\nbuild.bat\n2. Configure Claude Code\nCreate\n.mcp.json\nin your project root:\nCÓDIGO:\n{\n \"mcpServers\": {\n \"computer-use\": {\n \"command\": \"C:\\\\FWH\\\\mcp\\\\mcp_server.exe\"\n }\n }\n}\n3. Use\nAsk Claude Code to interact with your desktop:\nCÓDIGO:\nOpen Notepad and type \"Hello World\"\nMCP Tools\nTool\nDescription\nParameters\ncapture_screen\nCaptures full screen screenshot\nformat\n: \"base64\" or \"file\" (required)\npath\n: file path when format=file\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/pytorch-lite-roadmap.html", "title": "\"PyTorch-lite in FWH\" — Roadmap", "text": "Source notes:\ndocs/pytorch-lite-roadmap.md\nThe effort to bring real transformer power into FiveWin/Harbour apps by reusing\nHuggingFace resources. This page explains\nwhy\neach step is\nneeded and the order in which they land. It is a living plan — see the\nTransformer\nand\nHFTokenizer\npages for what already ships.\nPremise\nHarbour-the-language is\nnot\ninferior to Python for this. PyTorch\nis a thin Python layer over a C++/CUDA core. FWH already ships C extensions\n(\nsource/function/matrixes.c\n). The gap to close is that\nC core\n,\nnot the language.\nThree tracks\nKeep these distinct to set honest expectations:\nTrack A — local from-scratch Transformer.\nToy/educational\nscale, CPU, small\nd_model\n. Niche: tiny embeddable/offline models,\nclassification on small data, teaching. Will not match PyTorch.\nTrack B — HuggingFace as remote power (Inference API).\nAlready partial:\ntembeddings.prg\n,\ntollama.prg\n,\nchatgpt.prg\n,\ngemini*.prg\n. Vastly more capable today, no\nlocal training.\nTrack C — bind llama.cpp (\nlibllama\n) via FFI.\nHighest real value for running a real LLM\nlocally\nin an FWH app\ntoday\n. llama.cpp already does the hard part (quantized weights, SIMD, GPU,\nKV cache, mmap, GGUF); a\nTLlamaCpp\nclass would just call its C API\n(\nllama_load_model_from_file\n,\nllama_decode\n, sampling) —\nthe same pattern as the hbcurl binding — giving real Llama/Mistral/Qwen/Phi\ninference on CPU/GPU with 4-bit quantization, no training.\nThe phases below raise\nTrack A\n's ceiling. Track C is a separate,\ncomplementary effort (an FFI binding, not a from-scratch core) and is the pragmatic\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/tai_glossary.html", "title": "AI / ML Glossary", "text": "Definitions for artificial intelligence and machine learning terminology relevant to FiveWin's AI classes,\nneural network infrastructure, and LLM integration. Terms cover model architectures, training concepts,\noptimization algorithms, and the supported AI providers. Organized alphabetically.\nAdam / SGD\nTwo optimizers provided by FWH.\nAdam\n(Adaptive Moment Estimation) maintains per-parameter adaptive learning rates with bias-corrected momentum, suitable for complex models.\nSGD\n(Stochastic Gradient Descent) with optional momentum is simpler and preferred for less complex training scenarios.\nAPI Key\nAn authentication credential required by cloud AI providers. FWH's AI classes read keys from environment variables (\nOPENAI_API_KEY\n,\nDEEPSEEK_API_KEY\n,\nGEMINI_API_KEY\n) or accept them directly in the\nNew()\nconstructor. The local TOLlama class requires no API key.\nAttention\nA mechanism in Transformer networks that computes weighted relevance scores between every pair of positions in a sequence. FWH's\nMultiHeadAttention\nclass implements scaled dot-product attention with multiple parallel heads, enabling the model to focus on different representational subspaces.\nBackpropagation\nThe core training algorithm for neural networks, computing gradients of the loss function with respect to each weight via the chain rule. FWH's\nTransformer\nand neural network classes include\nBackward()\nmethods that propagate error gradients backward through the computation graph.\nChatGPT / OpenAI\nOpenAI's GPT model family accessed via REST API. FWH's\nTOpenAI\nclass integrates with models including\ngpt-4o\nand\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/tensorlogic-tutorial.html", "title": "Tensor Logic: from 0 to 100", "text": "Runnable companion:\nsamples/ai/tltutor.prg\n— build it, run it, read\ntltutor.log\nnext to this page\nThis tutorial takes you from \"what is a tensor\" to training a language model on FWH source code,\nusing one single idea from Pedro Domingos'\nTensor Logic\n(\narXiv:2510.12269\n):\na logical rule and an\nEinstein summation are the same operation\n. Every lesson below is a function in\ntltutor.prg\n— the outputs shown are its real output.\nFull API:\nTensor Logic reference\n.\nHow to use Tensor Logic — step by step\nStep 0 — Prerequisites\nFiveWin for Harbour installed (this tree under\nC:\\fwteam\n).\nA compiler variant already able to build samples (e.g. Harbour + BCC32 →\nhb32\n). See\nBuild System\n.\nFWH libraries rebuilt so they include\ntensorlogic.prg\nand\nfwtensor.c\n:\nCÓDIGO:\ncd /d C:\\fwteam\nC:\\fwteam\\mfwh_new.bat hb32\n(Use\nhm32\n,\nhm64\n,\nhg64\n, … for other variants.)\nOptional but recommended:\nOpenBLAS. Place\nlibopenblas.dll\non the PATH or next to your exe\n (a copy lives in\nsamples\\ai\\libopenblas.dll\n). Without it the pure-C loops\n still work, just slower. Force portable mode with\nset FWT_BLAS_DLL=off\n.\nStep 1 — Build and run the tutorial sample\nCÓDIGO:\ncd /d C:\\fwteam\\samples\\ai\nC:\\fwteam\\samples\\build_new.bat tltutor hb32\ntltutor.exe\ntype tltutor.log\nYou should see nine lesson blocks ending with\nTUTORIAL COMPLETE — next: tltransformer.prg, tlminillm.prg, tlfwcode.prg\n.\nKeep\ntltutor.log\nopen while you read the lessons below.\nStep 2 — Mental model (30 seconds)\n[diagrama]\nA\ntensor\nis an n-D array of float32 in C memory.\nAn\neinsum\nmultiplies along shared indices (join) and sums away indices\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/tensorlogic.html", "title": "Tensor Logic", "text": "Source:\nsource/classes/tensorlogic.prg\n,\nsource/function/fwtensor.c\nFiveWin implements Pedro Domingos'\nTensor Logic: The Language of AI\n(\narXiv:2510.12269\n). Its key insight: a logical rule and an\nEinstein summation are the\nsame operation\n. A program is just a set of\ntensor equations\n;\neach equation joins the tensors on its right-hand side (product over shared indices), projects out the\nindices that do not appear on the left-hand side (summation), and optionally applies a nonlinearity.\nOne engine therefore runs both neural networks (attention, MLPs) and symbolic reasoning (Datalog over\nDBF tables) — and can differentiate any program automatically.\n[diagrama]\nQuick start\nBuild the FWH library for your compiler variant (e.g.\nmfwh_new.bat hb32\n) so\ntensorlogic.prg\nand\nfwtensor.c\nare in the lib.\nFrom\nsamples\\ai\n, build and run the tutorial companion:\nCÓDIGO:\ncd /d C:\\fwteam\\samples\\ai\nC:\\fwteam\\samples\\build_new.bat tltutor hb32\ntltutor.exe\nOutput lands in\ntltutor.log\n. Walk it side by side with the\nstep-by-step tutorial\n.\nOptional speed: put\nlibopenblas.dll\non the PATH or next to the exe\n (or set\nFWT_BLAS_DLL\n). Check with\n? FWT_BlasActive()\n.\nTensor equations\nCÓDIGO:\noTL := TTensorLogic():New()\noTL:Let( \"W\", { { 1, -1, 0 }, { 0, 1, -1 } } ) // bind tensors (arrays or FW_Tensor)\noTL:Let( \"X\", { 1, 2, 0.5 } )\noTL:Let( \"B\", { 2, -2 } )\noTL:Eq( \"Y[i] = step( W[i,j] * X[j] + B[i] )\" ) // a perceptron, one equation\noTL:Run() // forward chaining to fixpoint\n? oTL:GetArray( \"Y\" ) // {1, 0}\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/tfwlanguagemodel.html", "title": "TFWLanguageModel", "text": "Source:\nsource/classes/tfwlanguagemodel.prg\nOverview\nTFWLanguageModel class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/thftask.html", "title": "THFTask & TChatAgent - FWAI utilities", "text": "Source:\nsource/classes/thftask.prg\n,\nsource/classes/tchatagent.prg\nTwo \"FWAI\" utility classes that bring everyday AI tasks into FiveWin apps with a\nfew lines — see the\nPyTorch-lite roadmap\n.\nTHFTask — HuggingFace NLP tasks\nOne thin class over the HuggingFace Inference API for the common NLP tasks. Each\nmethod posts to the right model endpoint and returns plain Harbour values.\nMethod\nReturns\nClassify( cText [,cModel] )\n{ {label,score}, ... }\ndescending\nZeroShot( cText, aLabels [,cModel] )\n{ {label,score}, ... }\nfor your own labels\nNER( cText [,cModel] )\n{ {entity,word,score}, ... }\nSummarize( cText [,cModel] )\nsummary string\nTranslate( cText [,cModel] )\ntranslation string (en→es by default)\nSentiment( cText [,cModel] )\n{ label, score }\n(top)\nCÓDIGO:\noT := THFTask():New() // uses HF_API_KEY\naCls := oT:Classify( \"win a free prize now\" ) // -> { {\"spam\",0.91}, {\"ham\",0.09} }\n? oT:Summarize( cLongReport )\n? oT:Translate( \"Hello world\" ) // \"Hola mundo\"\naEnt := oT:NER( \"John lives in Madrid\" ) // PER John, LOC Madrid\naZ := oT:ZeroShot( \"my invoice is wrong\", { \"billing\", \"tech\" } )\nThe transport is injectable via\n::bSender { |cUrl, cJson| -> cResponseJson }\n— leave it NIL to use libcurl, or set it to mock responses (the test\nsamples/ai/thftasktest.prg\nverifies parsing offline) or route through a\ndifferent HTTP layer / a local server.\nTChatAgent — chat over your app's data\nA minimal agent with\ntool-calling\n: the LLM either answers, or asks\nthe app to run a query; the app returns rows and the loop continues until the LLM\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/thtmlpage.html", "title": "THtmlPage", "text": "Source:\nsource/classes/thtmlpage.prg\nOverview\nTHtmlPage class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/tsemanticindex.html", "title": "TSemanticIndex - Semantic Search over DBF/SQL", "text": "Source:\nsource/classes/tsemanticindex.prg\nTSemanticIndex\nbrings\nmeaning-based search\nto ordinary\nFiveWin data apps. Instead of\nLIKE '%word%'\n, it finds the records\nwhose text is closest in\nmeaning\nto a query — e.g. searching\n\"unhappy about late delivery\" surfaces a note that says \"the order arrived two\nweeks late and the customer is furious\", even with no shared words.\nIt works by turning text into embedding vectors and ranking records by\ncosine similarity\n. It is the first of the \"FWAI\" utility classes\n— see the\nPyTorch-lite roadmap\n.\nHow it works\n[diagrama]\nVectors are stored unit-normalized, so cosine similarity is a plain dot product.\nScores range from 1.0 (identical meaning) downward.\nBackend-agnostic\nNew( bEmbed )\ntakes a codeblock\n{ |cText| -> vector }\n,\nso the embeddings can come from any source — the HuggingFace Inference API,\na local model, or your own function. To use HuggingFace MiniLM through\nTEmbeddings\n:\nCÓDIGO:\noEmb := TEmbeddings():New() // needs HF_API_KEY (384-dim MiniLM)\noIdx := TSemanticIndex():New( { |c| oEmb:GetEmbeddings( c ) } )\nFor private/offline data, plug a local embedding model behind the same codeblock\n(see the roadmap's local-vs-cloud guidance) — the index code does not change.\nMethods\nMethod\nDescription\nNew( bEmbed )\nCreate an index using the given embedding codeblock.\nAdd( cText, uId )\nEmbed\ncText\nand store it under id\nuId\n.\nAddVector( aVec, uId )\nStore a precomputed vector under\nuId\n(skips embedding).\nIndexDbf( cField, bId )\nWalk the current work area, indexing\ncField\n; id defaults to\nRecNo()\n(or\nEval(bId)\n).\n […]" }, { "src": "FWH docs · en/ai", "url": "https://fivetechsoft.github.io/FWH_docs/en/ai/ttransformer.html", "title": "Transformer Neural Network", "text": "Source:\nsource/classes/transformer.prg\n,\nsource/function/matrixes.c\n,\nsource/function/matrices.prg\nFiveWin provides a pure Harbour/C implementation of the Transformer encoder-only architecture\nfor sequence classification and language modeling. The implementation includes multi-head\nself-attention, feed-forward networks, layer normalization, and Adam/SGD optimizers. All\nheavy linear algebra is accelerated via C extensions in\nmatrixes.c\n.\nArchitecture\n[diagrama]\nClasses\nTransformer\nThe top-level class that orchestrates embeddings, positional encoding, stacked layers, and output projection.\nMethod\nDescription\nNew( num_layers, d_model, n_heads, vocab_size, max_seq_len, hEmbeddings, aVocab )\nCreate a Transformer with the given architecture. Initializes all sub-layers and embeddings.\nForward( src_indices, pos_indices )\nRun a forward pass: embedding lookup, positional encoding, N transformer blocks, average pooling, and softmax over vocabulary.\nBackward( d_output, targets, src_indices, pos_indices )\nBackpropagate gradients through all layers and accumulate weight gradients.\nzero_grad()\nReset all accumulated gradients to zero.\nMultiHeadAttention\nComputes scaled dot-product attention over multiple heads. Projects inputs into Query, Key, Value\nspaces via learned matrices, computes attention scores, and concatenates head outputs.\nFeedForward\nA position-wise two-layer MLP with ReLU activation that operates on each position independently:\nFF(x) = W2 * ReLU(W1 * x + b1) + b2\n.\nLayerNorm\nApplies layer normalization across the feature dimension:\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ac5box.html", "title": "aC5Box()", "text": "Source:\nsource/function/ac5box.prg\nDescription\nArray helper\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/agetworkareas.html", "title": "aGetWorkAreas()", "text": "Source:\nsource/function/agetworkareas.prg\nDescription\nGet work areas\nSee Also\ndata/tdatabase" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/aodata.html", "title": "aOData()", "text": "Source:\nsource/function/aodata.prg\nDescription\nArray data helper\nSee Also\ndata/tdatabase" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/browse.html", "title": "Browse()", "text": "Source:\nsource/function/browse.prg\nDescription\nBrowse function\nSee Also\nui/twbrowse\nui/txbrowse" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ccallstack.html", "title": "cCallStack()", "text": "Source:\nsource/function/ccallstack.prg\nDescription\nCall stack info\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/cgetexpression.html", "title": "cGetExpression()", "text": "Source:\nsource/function/cgetexpression.prg\nDescription\nGet expression string\nSee Also\nui/tget" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/cgetfile32.html", "title": "cGetFile32()", "text": "Source:\nsource/function/cgetfile32.prg\nDescription\nFile selection dialog\nSee Also\nui/tget" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/classes.html", "title": "Class Index", "text": "288 FiveWin for Harbour/xHarbour classes in alphabetical order.\nA\nTAccTable\nTActiveX\nTAnimate\nTArrayData\nTAutoGet\nB\nTBackup\nTBar\nTBarTabs\nTBitmap\nTBlock\nTBrush\nTBrushEx\nTBtnBmp\nTBtnClr\nTBtnFlat\nTButton\nTButtonBmp\nC\nTC5Tooltip\nTCalendar\nTCalEx\nTCalInfo\nTCBrowse\nTCColumn\nTChatAgent\nTChatgpt\nTCheckBox\nTChooseGradient\nTClipBoard\nTClipGet\nTComboBox\nTComboMetro\nTComm\nTComObject\nTComponent\nTControl\nTCoverFlow\nTCtrlSocket\nTCursor\nD\nTDataBase\nTDataBaseComp\nTDataRow\nTDatePick\nTDayView\nTDBase\nTDBCombo\nTDbfComp\nTDbg\nTDbOdbc\nTDbOdbcDirect\nTDde\nTDdeClient\nTDDEMLClient\nTDDEMLServer\nTDdeServer\nTDeepSeek\nTDialog\nTDict\nTDlgFind\nTDosPrn\nE\nTEdit\nTEmbeddings\nTEnhMetaFile\nTEReport\nTExplorerBar\nTExplorerList\nTExStruct\nF\nTFGet\nTField\nTFile\nTFileGTF\nTFLine\nTFolder\nTFolderEx\nTFont\nTForm\nTFTP\nTFtpClient\nTFTPFile\nTFtpServer\nTFtpSession\nTFWLanguageModel\nFW_EReport\nFWER_BarCode\nFWMariaRecord\nFWMSWordDoc\nFWPdf\nFWStack\nG\nTGantt\nTGemini\nTGet\nTGif\nTGmail\nGPT2Model\nTGraph\nGraphics\nTGrok\nTGroup\nTGroupEx\nH\nTHeader\nTHFTask\nTHorzScroll\nTHotKey\nTHtmlPage\nHFTokenizer\nI\nTIcon\nTIconGet\nTIconGroup\nTImage\nTImageBase64\nTImageList\nTIndex\nTIni\nTIniER\nTInstinct\nTInternet\nTIPAddress\nK\nTKimi\nTKnob\nL\nTLayout\nTLayoutManager\nTLex\nTLibFile\nTLinkList\nTListBox\nTListView\nTLocks\nM\nTMail\nTMci\nTMdiChild\nTMdiClient\nTMdiFrame\nTMenu\nTMenuItem\nTMetaFile\nTMeter\nTMeterEx\nTMetro\nTMetroPanel\nTMnuComp\nTMonthView\nTMru\nTMsgBar\nTMsgItem\nTMultiGet\nTMyBox\nTMyTitle\nN\nTNavigator\nTNeuralNetwork\nTNewsInstance\nTNewsServer\nTNg\nO\nTOAuth\nTObjFile\nTOdbc\nTOLlama\nTOpenAI\nTOpenCode\nTOrdInfo\nORM_Connection\nTOutLook\nTOutLook2003\nTOutLook2010\nTOutlookMail\nP\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/commands.html", "title": "FWH Commands Reference", "text": "FiveWin extends the Harbour/xBase command language with a rich set of preprocessor commands\ndefined in\nFiveWin.ch\n. These commands translate to class method calls at compile time,\nproviding a familiar xBase-style syntax for creating Windows GUI applications.\nWindow Commands\nDEFINE WINDOW\nCÓDIGO:\nDEFINE WINDOW oWnd ;\n [ FROM nTop, nLeft TO nBottom, nRight ] ;\n [ TITLE cTitle ] ;\n [ STYLE nStyle ] ;\n [ MENU oMenu ] ;\n [ BRUSH oBrush ] ;\n [ ICON oIcon ] ;\n [ ICONIZE | MAXIMIZE | RESTORE ] ;\n [ COLOR cClrFore [, cClrBack ] ] ;\n [ PIXEL ] ;\n [ BORDER NONE | SINGLE ] ;\n [ NOSYSMENU | NOCAPTION ] ;\n [ NOZOOM | NOMAXIMIZE ]\nACTIVATE WINDOW\nCÓDIGO:\nACTIVATE WINDOW oWnd ;\n [ ICONIZED | MAXIMIZED | NORMAL ] ;\n [ ON INIT bInit ] ;\n [ ON UP bUp ] ;\n [ ON DOWN bDown ] ;\n [ ON LEFT bLeft ] ;\n [ ON RIGHT bRight ] ;\n [ ON PAINT bPaint ] ;\n [ ON RESIZE bResize ] ;\n [ ON CLICK bClick ] ;\n [ ON DBLCLICK bDblClick ] ;\n [ VALID bValid ]\nDialog Commands\nDEFINE DIALOG\nCÓDIGO:\nDEFINE DIALOG oDlg ;\n [ FROM nTop, nLeft TO nBottom, nRight ] ;\n [ SIZE nWidth, nHeight ] ;\n [ TITLE cTitle ] ;\n [ RESOURCE cResName ] ;\n [ NAME cResName ] ;\n [ OF | WINDOW oWnd ] ;\n [ STYLE nStyle ] ;\n [ COLOR cClrFore [, cClrBack ] ] ;\n [ BRUSH oBrush ] ;\n [ FONT oFont ] ;\n [ ICON oIcon ] ;\n [ PIXEL ] ;\n [ TRANSPARENT ] ;\n [ TRUEPIXEL ]\nACTIVATE DIALOG\nCÓDIGO:\nACTIVATE DIALOG oDlg ;\n [ CENTER | CENTERED ] ;\n [ NOWAIT | NOMODAL ] ;\n [ ON INIT bInit ] ;\n [ ON PAINT bPaint ] ;\n [ VALID bValid ]\nControl Commands\n@ SAY\nCÓDIGO:\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/dbgabout.html", "title": "DbgAbout()", "text": "Source:\nsource/function/dbgabout.prg\nDescription\nDebug about\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/dbgalert.html", "title": "DbgAlert()", "text": "Source:\nsource/function/dbgalert.prg\nDescription\nDebug alert\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/dbgmemo.html", "title": "DbgMemo()", "text": "Source:\nsource/function/dbgmemo.prg\nDescription\nDebug memo\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/dbgprint.html", "title": "DbgPrint()", "text": "Source:\nsource/function/dbgprint.prg\nDescription\nDebug print\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/dbgtable.html", "title": "DbgTable()", "text": "Source:\nsource/function/dbgtable.prg\nDescription\nDebug table\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/dbgtrace.html", "title": "DbgTrace()", "text": "Source:\nsource/function/dbgtrace.prg\nDescription\nDebug trace\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/drxlsxlinked.html", "title": "DrXlsxLinked()", "text": "Source:\nsource/function/drxlsxlinked.prg\nDescription\nXLSX linked report\nSee Also\nutilities/texcel" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/editcell.html", "title": "EditCell()", "text": "Source:\nsource/function/editcell.prg\nDescription\nInline cell edit\nSee Also\nui/txbrowse" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/elementactions.html", "title": "ElementActions()", "text": "Source:\nsource/function/elementactions.prg\nDescription\nElement actions\nSee Also\nui/txbrowse" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ep_linkedtoapp.html", "title": "EP_LinkedToApp()", "text": "Source:\nsource/function/ep_linkedtoapp.prg\nDescription\nEasyReport link\nSee Also\nprinting/tereport" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/er_checkpath.html", "title": "ER_CheckPath()", "text": "Source:\nsource/function/er_checkpath.prg\nDescription\nEasyReport path check\nSee Also\nprinting/tereport" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ereport.html", "title": "EReport()", "text": "Source:\nsource/function/ereport.prg\nDescription\nEasyReport engine\nSee Also\nprinting/tereport" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/errorsys.html", "title": "Error System", "text": "Source:\nsource/function/errsysw.prg\nFiveWin replaces Harbour's default error handler with a GUI-based error dialog that displays\ndetailed diagnostic information. The error system is automatically initialized at application\nstartup via the\nErrorSys()\nprocedure, which sets an error block calling\nErrorDialog()\n.\nError Handling Flow\n[diagrama]\nAutomatic Error Handling\nCertain error types are handled automatically without showing the error dialog:\nError\ngenCode\nAutomatic Action\nDivision by zero\nEG_ZERODIV\nReturns 0 silently\nNetwork open error (OS code 32 or 5)\nEG_OPEN\nSets\nNetErr(.T.)\n, returns .F.\nAppend lock error\nEG_APPENDLOCK\nSets\nNetErr(.T.)\n, returns .F.\nRecursive error (7+ levels deep)\nany\nForces QUIT to prevent infinite loop\nError Dialog\nThe FiveWin error dialog is a modern, feature-rich dialog that adapts to the system theme:\nDark mode auto-detection\n-- the dialog reads the Windows \"AppsUseLightTheme\" registry key and adjusts its color scheme accordingly\nError message\n-- displayed prominently at the top\nCall stack\n-- shown in a listbox with procedure names, line numbers, and source files\nAction buttons\n:\nQuit\n-- writes error.log and terminates\nRetry\n-- returns .T. (if\ne:canRetry\n)\nDefault\n-- returns .F. (if\ne:canDefault\n)\nDebug\n-- activates the debugger (if available)\nCopy button\n-- copies the complete error log to the clipboard\nSee button\n-- opens error.log in Notepad\nError Log Format\nWhen the user clicks \"Quit\", an\nerror.log\nfile is written (or appended). The log contains these sections:\nCÓDIGO:\nApplication\n===========\n Path and name: C:\\myapp\\myapp.exe (32 bits)\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fefileedit.html", "title": "FEFileEdit()", "text": "Source:\nsource/function/fefileedit.prg\nDescription\nFile editor\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fmt.html", "title": "fmt()", "text": "Source:\nsource/function/fmt.prg\nDescription\nFormat function\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/functions.html", "title": "Function Index", "text": "Key FiveWin for Harbour/xHarbour functions in alphabetical order. For the full Harbour RTL see the\nHarbour Reference Guide\n.\nA\naC5Box()\naGetWorkAreas()\naOData()\n_Alert()\n_SetKey()\nB\nBrowse()\nC\ncCallStack()\ncGetExpression()\ncGetFile32()\nD\nDbgAbout()\nDbgAlert()\nDbgMemo()\nDbgPrint()\nDbgTable()\nDbgTrace()\nDrXlsxLinked()\nE\nEditCell()\nElementActions()\nEP_LinkedToApp()\nER_CheckPath()\nEReport()\nF\nFEFileEdit()\nfmt()\nFW_AT()\nFW_Decode()\nFW_dosClear()\nFW_MemoEdit()\nFW_NUMTOWORDS()\nFW_OnAdoError()\nFW_RecToJson()\nFW_SetMulti()\nFW_ShowXlsx()\nFW_XmlView()\nFWGetOleObject()\nFWNumFormat()\nFWSavePreviewToPDF()\nFWString()\nFWZEBRA_BarCode()\nG\nGetTasks()\nGetWebApp()\nH\nHB_DBG_VMSTKLCOUNT()\nI\nIsGTF()\nL\nlIsDir()\nLoadValue()\nLogStatics()\nM\nMakeWind()\nMatrixMultiply()\nMDIRecEdit()\nMemStat()\nMsgCalc()\nMsgGet()\nMsgList()\nMsgLogo()\nMsgMeter()\nMsgToolBar()\nN\nNOW()\nnRandom()\nnToBin()\nO\nOpenFile()\nOrderTagInfo()\nP\nPGLinked()\nPickColor()\nR\nRLNew()\nRtfBox()\nS\nSelectItem()\nSetDarkTheme()\nSetDefaultIconSize()\nSetErrorPath()\nSetObject()\nSetResDebug()\nSfn2Lfn()\nU\nuValBlank()\nW\nWaitSeconds()\nWQout()\nX\nXbrGetDate()\nXBrowse()\nxPadR()" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_at.html", "title": "FW_AT()", "text": "Source:\nsource/function/fw_at.prg\nDescription\nArray table\nSee Also\nutilities/tfwstack" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_decode.html", "title": "FW_Decode()", "text": "Source:\nsource/function/fw_decode.prg\nDescription\nDecode values\nSee Also\nutilities/tfwstack" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_ereport.html", "title": "FW_EReport", "text": "Source:\nsource/classes/fw_ereport.prg\nOverview\nFW_EReport class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_memoedit.html", "title": "FW_MemoEdit()", "text": "Source:\nsource/function/fw_memoedit.prg\nDescription\nMemo editor\nSee Also\nui/tget" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_numtowords.html", "title": "FW_NUMTOWORDS()", "text": "Source:\nsource/function/fw_numtowords.prg\nDescription\nNumber to words\nSee Also\nutilities/tfwstack" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_onadoerror.html", "title": "FW_OnAdoError()", "text": "Source:\nsource/function/fw_onadoerror.prg\nDescription\nADO error handler\nSee Also\ndata/trecset" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_rectojson.html", "title": "FW_RecToJson()", "text": "Source:\nsource/function/fw_rectojson.prg\nDescription\nRecord to JSON\nSee Also\ndata/tdatarow" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_setmulti.html", "title": "FW_SetMulti()", "text": "Source:\nsource/function/fw_setmulti.prg\nDescription\nSet multi values\nSee Also\nutilities/tfwstack" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_showxlsx.html", "title": "FW_ShowXlsx()", "text": "Source:\nsource/function/fw_showxlsx.prg\nDescription\nShow XLSX\nSee Also\nutilities/texcel" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fw_xmlview.html", "title": "FW_XmlView()", "text": "Source:\nsource/function/fw_xmlview.prg\nDescription\nXML viewer\nSee Also\nutilities/txmlwriter" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwer_barcode.html", "title": "FWER_BarCode", "text": "Source:\nsource/classes/fwer_barcode.prg\nOverview\nFWER_BarCode class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwgetoleobject.html", "title": "FWGetOleObject()", "text": "Source:\nsource/function/fwgetoleobject.prg\nDescription\nGet OLE object\nSee Also\nutilities/ole" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwmariarecord.html", "title": "FWMariaRecord", "text": "Source:\nsource/classes/fwmariarecord.prg\nOverview\nFWMariaRecord class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwmsworddoc.html", "title": "FWMSWordDoc", "text": "Source:\nsource/classes/fwmsworddoc.prg\nOverview\nFWMSWordDoc class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwnumformat.html", "title": "FWNumFormat()", "text": "Source:\nsource/function/fwnumformat.prg\nDescription\nNumber format\nSee Also\nutilities/tfwstack" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwpdf.html", "title": "FWPdf", "text": "Source:\nsource/classes/fwpdf.prg\nOverview\nFWPdf class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwsavepreviewtopdf.html", "title": "FWSavePreviewToPDF()", "text": "Source:\nsource/function/fwsavepreviewtopdf.prg\nDescription\nSave preview to PDF\nSee Also\nprinting/tpreview\nprinting/tpdf" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwstack.html", "title": "FWStack", "text": "Source:\nsource/classes/fwstack.prg\nOverview\nFWStack class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwstring.html", "title": "FWString()", "text": "Source:\nsource/function/fwstring.prg\nDescription\nMultilanguage string\nSee Also\ngetting-started/tlocalization" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/fwzebra_barcode.html", "title": "FWZEBRA_BarCode()", "text": "Source:\nsource/function/fwzebra_barcode.prg\nDescription\nZebra barcode\nSee Also\nprinting/tbarcode" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/gettasks.html", "title": "GetTasks()", "text": "Source:\nsource/function/gettasks.prg\nDescription\nGet running tasks\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/getwebapp.html", "title": "GetWebApp()", "text": "Source:\nsource/function/getwebapp.prg\nDescription\nWeb app data\nSee Also\ninternet/twebserver" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/graphics.html", "title": "Graphics", "text": "Source:\nsource/classes/graphics.prg\nOverview\nGraphics class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/hb_dbg_vmstklcount.html", "title": "HB_DBG_VMSTKLCOUNT()", "text": "Source:\nsource/function/hb_dbg_vmstklcount.prg\nDescription\nVM stack count\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/isgtf.html", "title": "IsGTF()", "text": "Source:\nsource/function/isgtf.prg\nDescription\nCheck GTF file\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/lisdir.html", "title": "lIsDir()", "text": "Source:\nsource/function/lisdir.prg\nDescription\nIs directory\nSee Also\nutilities/tfile" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/loadvalue.html", "title": "LoadValue()", "text": "Source:\nsource/function/loadvalue.prg\nDescription\nLoad saved value\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/logstatics.html", "title": "LogStatics()", "text": "Source:\nsource/function/logstatics.prg\nDescription\nLog static variables\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/makewind.html", "title": "MakeWind()", "text": "Source:\nsource/function/makewind.prg\nDescription\nCreate window\nSee Also\ncore/twindow" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/matrixmultiply.html", "title": "MatrixMultiply()", "text": "Source:\nsource/function/matrixmultiply.prg\nDescription\nMatrix multiply\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/mdirecedit.html", "title": "MDIRecEdit()", "text": "Source:\nsource/function/mdirecedit.prg\nDescription\nMDI record editor\nSee Also\ndata/tdatabase" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/memstat.html", "title": "MemStat()", "text": "Source:\nsource/function/memstat.prg\nDescription\nMemory stats\nSee Also\nutilities/tdbg" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/more-classes.html", "title": "Additional Classes Reference", "text": "This page documents important FiveWin classes and features that are not covered in the\n main class reference pages. Each entry includes a brief description, key DATA and METHODs,\n and a practical example.\nClass Map\n[diagrama]\nTXmlDocument — XML Parsing & Creation\nTXmlDocument\nis provided by Harbour's\nhbxml\ncontrib library\n and is used extensively in FiveWin samples (23+ examples). It provides DOM-style XML\n parsing from files or strings, with iteration via\nTXmlIterator\n.\nKey DATA\nDATA\nType\nDescription\noRoot\nTXmlNode\nRoot node of the parsed XML document\nnStatus\nNumeric\nParse status (0 = success)\nnError\nNumeric\nError code if parsing failed\nnLine\nNumeric\nLine number where error occurred\nKey METHODs\nMETHOD\nDescription\nNew( hFile | cString )\nParse XML from file handle or string\nRead( hFile )\nRead and parse from an open file handle\nToString()\nSerialize the document back to XML string\nWrite( hFile )\nWrite the document to a file handle\nTXmlNode (child nodes)\nDATA/METHOD\nDescription\ncName\nTag name of the node\ncData\nText content of the node\naAttributes\nHash of attribute name/value pairs\noChild\nFirst child node\noNext\nNext sibling node\nAddBelow( oNode )\nAdd a child node\nExample\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local hFile := FOpen( \"config.xml\" )\n local oXmlDoc := TXmlDocument():New( hFile )\n local oXmlIter := TXmlIterator():New( oXmlDoc:oRoot )\n local oTag\n\n while ( oTag := oXmlIter:Next() ) != nil\n MsgInfo( oTag:cName + \": \" + oTag:cData )\n // Access attributes:\n // HEval( oTag:aAttributes, { |k,v| QOut( k, v ) } )\n end\n\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/msgcalc.html", "title": "MsgCalc()", "text": "Source:\nsource/function/msgcalc.prg\nDescription\nMessage calc\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/msgget.html", "title": "MsgGet()", "text": "Source:\nsource/function/msgget.prg\nDescription\nMessage get\nSee Also\nui/tget" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/msglist.html", "title": "MsgList()", "text": "Source:\nsource/function/msglist.prg\nDescription\nMessage list\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/msglogo.html", "title": "MsgLogo()", "text": "Source:\nsource/function/msglogo.prg\nDescription\nMessage logo\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/msgmeter.html", "title": "MsgMeter()", "text": "Source:\nsource/function/msgmeter.prg\nDescription\nMessage meter\nSee Also\nui/tmeter" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/msgtoolbar.html", "title": "MsgToolBar()", "text": "Source:\nsource/function/msgtoolbar.prg\nDescription\nMessage toolbar\nSee Also\nui/ttoolbar" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/now.html", "title": "NOW()", "text": "Source:\nsource/function/now.prg\nDescription\nCurrent timestamp\nSee Also\nutilities/ttime" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/nrandom.html", "title": "nRandom()", "text": "Source:\nsource/function/nrandom.prg\nDescription\nRandom number\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ntobin.html", "title": "nToBin()", "text": "Source:\nsource/function/ntobin.prg\nDescription\nNumber to binary\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/openfile.html", "title": "OpenFile()", "text": "Source:\nsource/function/openfile.prg\nDescription\nOpen file array\nSee Also\nutilities/tfile" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ordertaginfo.html", "title": "OrderTagInfo()", "text": "Source:\nsource/function/ordertaginfo.prg\nDescription\nOrder tag info\nSee Also\ndata/tdatabase" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/orm_connection.html", "title": "ORM_Connection", "text": "Source:\nsource/classes/orm_connection.prg\nOverview\nORM_Connection class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/pglinked.html", "title": "PGLinked()", "text": "Source:\nsource/function/pglinked.prg\nDescription\nPostgreSQL linked\nSee Also\ndata/tpostgres" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/pickcolor.html", "title": "PickColor()", "text": "Source:\nsource/function/pickcolor.prg\nDescription\nColor picker\nSee Also\nutilities/tpicker_color" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/resources.html", "title": "GDI Resources", "text": "FiveWin wraps the Windows GDI (Graphics Device Interface) objects into Harbour classes. These\nobjects represent fonts, brushes, cursors, icons, bitmaps, and images. All GDI resources\nmust be released when no longer needed by calling\n:End()\nto prevent resource leaks.\nThis page also covers TIni (INI file management) and TReg32 (Windows Registry access).\nResource Lifecycle\n[diagrama]\nTFont\nSource:\nsource/classes/font.prg\nKey DATA Members\nDATA\nType\nDescription\ncFaceName\nCharacter\nFont face name (e.g. \"Arial\", \"Segoe UI\")\nhFont\nNumeric\nWindows HFONT handle\nlBold\nLogical\nBold weight\nlItalic\nLogical\nItalic style\nlUnderline\nLogical\nUnderline decoration\nlStrikeOut\nLogical\nStrikeout decoration\nnWeight\nNumeric\nFont weight (400=normal, 700=bold)\nnCharSet\nNumeric\nCharacter set (0=ANSI, 1=DEFAULT, 255=OEM)\nnEscapement\nNumeric\nText angle in tenths of degrees\nnOrientation\nNumeric\nCharacter orientation angle\nnInpHeight\nNumeric\nRequested height (negative = point size)\nKey Methods\nMethod\nDescription\nNew( cFaceName, nWidth, nHeight, lFromUser, lBold, ... )\nCreate a font (or return cached instance)\nChoose( @nRGBColor )\nShow font picker dialog, return selected font\nnSize()\nGet font size in points\nBold( lBold )\nCreate a new font with bold toggled\nItalic( lItalic )\nCreate a new font with italic toggled\nModify( nHeight, lBold, lItalic, lUnderline, lStrikeOut, nEsc )\nCreate a modified copy\nRotate( nRotateBy )\nCreate a rotated copy\nClone()\nShare the same handle (reference counting)\nActivate( hDC )\nSelect font into a device context\nDeActivate( hDC )\nRestore previous font\nEnd()\nRelease the font handle\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/rlnew.html", "title": "RLNew()", "text": "Source:\nsource/function/rlnew.prg\nDescription\nNew report line\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/rrw.html", "title": "RRW", "text": "Source:\nsource/classes/rrw.prg\nOverview\nRRW class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/rtfbox.html", "title": "RtfBox()", "text": "Source:\nsource/function/rtfbox.prg\nDescription\nRTF box\nSee Also\nprinting/trline" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/selectitem.html", "title": "SelectItem()", "text": "Source:\nsource/function/selectitem.prg\nDescription\nSelect item\nSee Also\nui/txbrowse" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/setdarktheme.html", "title": "SetDarkTheme()", "text": "Source:\nsource/function/setdarktheme.prg\nDescription\nDark theme toggle\nSee Also\ncore/twindow" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/setdefaulticonsize.html", "title": "SetDefaultIconSize()", "text": "Source:\nsource/function/setdefaulticonsize.prg\nDescription\nIcon size default\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/seterrorpath.html", "title": "SetErrorPath()", "text": "Source:\nsource/function/seterrorpath.prg\nDescription\nError log path\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/setobject.html", "title": "SetObject()", "text": "Source:\nsource/function/setobject.prg\nDescription\nSet object\nSee Also\ncore/tcontrol" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/setresdebug.html", "title": "SetResDebug()", "text": "Source:\nsource/function/setresdebug.prg\nDescription\nResource debug\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/sfn2lfn.html", "title": "Sfn2Lfn()", "text": "Source:\nsource/function/sfn2lfn.prg\nDescription\nShort to long filename\nSee Also\nutilities/tfile" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tacctable.html", "title": "TAccTable", "text": "Source:\nsource/classes/tacctable.prg\nOverview\nTAccTable class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tblockchain.html", "title": "TBlockChain", "text": "Source:\nsource/internal/TBlockChain.prg\nStandalone class\nTBlockChain is a pure Harbour blockchain implementation with SHA-256 hashing, proof-of-work mining, and block validation. It uses a CLASSDATA hash (\naBlocks\n) so all instances share the same chain, enabling multi-window applications to operate on the same data. The chain stores an array of hashed blocks, each containing a timestamp, data payload, once (nonce), and the previous block's hash. Mining iterates through nonce values until the hash matches the difficulty prefix.\nKey DATA Members\nDATA\nType\nDescription\naBlocks\nHash (CLASSDATA)\nAll blocks in the chain, shared across all instances\ncJson\nCharacter\nJSON representation of the entire chain\nuDifficulty\nCharacter\nMining difficulty prefix (default: \"0000\")\nnIterations\nNumeric\nTotal mining iterations performed\ncPrivateKey\nCharacter\nPrivate key for signing blocks\ncPublicKey\nCharacter\nPublic key for signature verification\ncSignature\nCharacter\nBlock signature string\nMethods\nMethod\nDescription\nNew( cKey )\nCreate a new blockchain with genesis block, keyed by cKey\nAddNewBlock( uOnce, cData )\nAdd a new block with optional nonce and data string\nBlockToHash( nIdx, uOnce, cData )\nCompute the hash for a given block index and data\nMineBlock( nIdx )\nMine block nIdx by iterating nonces until hash matches difficulty\nIsValidHash( nIdx )\nCheck whether block nIdx has a valid hash matching difficulty\nIsValidBlock( nIdx, cHash )\nValidate block nIdx against the provided hash\nCountBlocks()\nReturn the total number of blocks in the chain\nUpdateAllBlocks()\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tbrush.html", "title": "TBrush", "text": "Source:\nsource/classes/brush.prg\nStandalone class (no inheritance)\nTBrush manages Windows GDI brush objects used to fill areas with solid colors, hatch patterns, or bitmap images. A brush is required whenever you need to paint a background (window pane, control face, custom-drawn shapes). TBrush supports solid-color brushes, predefined hatch styles, gradient patterns (via an internal bitmap), image-based brushes from files or resources, and NULL brushes that suppress filling. Every TBrush must be released with\nEnd()\nto avoid GDI resource leaks.\nKey DATA Members\nDATA\nType\nDescription\nhBrush\nNumeric (Handle)\nWindows GDI brush handle. Created by\nNew()\n.\nhBitmap\nNumeric (Handle)\nHandle to the bitmap backing image-based and gradient brushes.\nnil\nfor solid and hatch brushes.\ncStyle\nCharacter\nHatch style name:\n\"HORIZONTAL\"\n,\n\"VERTICAL\"\n,\n\"CROSS\"\n,\n\"DIAGCROSS\"\n,\n\"BORLAND\"\n,\n\"BRICKS\"\n,\n\"TILED\"\n,\n\"TABS\"\n, or\n\"NULL\"\n.\nnRGBColor\nNumeric\nRGB color value for solid and hatch brushes.\naGrad\nArray\nGradient definition array for gradient brushes:\n{ { nPercent, nRGB1, nRGB2 }, ... }\n.\ncBmpFile\nCharacter\nFile path to the bitmap used for image-based brushes.\ncBmpRes\nCharacter\nResource name of the bitmap used for resource-based brushes.\nnBmpHandle\nNumeric\nDirect bitmap handle used for image-based brushes (alternative to file/resource).\ncResizeMode\nCharacter\nResize mode for bitmap brushes:\n\"T\"\n= tile,\n\"S\"\n= stretch.\nlVertical\nLogical\nIf\n.T.\n, gradient is vertical; if\n.F.\n, horizontal.\nCargo\nAny\nGeneral-purpose user data slot.\nBrush Styles\nStyle\nDescription\n\"HORIZONTAL\"\nHorizontal hatch lines\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tbrushex.html", "title": "TBrushEx", "text": "Source:\nsource/classes/brushex.prg\nStandalone class (no inheritance)\nTBrushEx creates extended GDI brush objects with gradient patterns. Unlike a standard solid-color\nbrush, TBrushEx generates a bitmap filled with a smooth gradient between two (or four) colors,\nthen creates a pattern brush from that bitmap. This allows windows and controls to be painted\nwith gradient backgrounds without manual gradient drawing code.\nKey DATA Members\nDATA\nType\nDescription\nhBrush\nNumeric (Handle)\nWindows GDI brush handle created from the gradient bitmap\nhBitmap\nNumeric (Handle)\nHandle to the gradient bitmap that backs the brush\nMethods\nMethod\nDescription\nNew( nWidth, nHeight, nColor, nColor2, lVGrad )\nCreate a two-color gradient brush.\nlVGrad\nis .T. for vertical gradient, .F. (default) for horizontal.\nNewEx( nWidth, nHeight, nC1, nC2, nC3, nC4, lVGrad )\nCreate a four-color gradient brush with two additional corner colors for more complex patterns.\nEnd()\nDelete both the brush and the bitmap, releasing all GDI resources.\nExample\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oBrush\n\n DEFINE WINDOW oWnd TITLE \"TBrushEx Demo\" SIZE 400, 300\n\n // Create a horizontal red-to-blue gradient brush\n oBrush := TBrushEx():New( 400, 300, CLR_RED, CLR_BLUE, .F. )\n\n oWnd:SetBrush( oBrush )\n oWnd:lTransparent := .F.\n\n ACTIVATE WINDOW oWnd CENTERED\n\n oBrush:End()\n\nreturn nil\nNotes\nThe bitmap dimensions (\nnWidth\n,\nnHeight\n) should match or exceed the area to be filled to avoid tiling artifacts.\nSetting\nlVGrad\nto .T. creates a vertical gradient (top-to-bottom); .F. […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tc5tooltip.html", "title": "TC5Tooltip", "text": "Source:\nsource/classes/c5tooltp.prg\nInherits from:\nTWindow\nTC5Tooltip is a rich popup tooltip window with support for multi-line body text, header, footer, an optional left-side image, and custom border/background colors. It renders as a rounded window with drop shadow, auto-sizes to content, and includes a self-dismissing timer. The tooltip is designed for C5-style (CA-Visual Objects) themed tooltips.\nKey DATA Members\nDATA\nType\nDescription\ncHeader\nCharacter\nHeader text (bold, top section)\ncBody\nCharacter\nMulti-line body text\ncFoot\nCharacter\nFooter text (bottom section, bold)\ncBmpLeft\nCharacter\nOptional left-side image filename\ncBmpHeader\nCharacter\nOptional header image\ncBmpFoot\nCharacter\nOptional footer image\nnClrPane\nNumeric\nBackground color (top of gradient)\nnClrPane2\nNumeric\nBackground color (bottom of gradient)\nnClrBorder\nNumeric\nBorder color\nnClrText\nNumeric\nDefault text color\nnClrTextHeader\nNumeric\nHeader text color (overrides default)\nnClrTextBody\nNumeric\nBody text color (overrides default)\nnClrTextFoot\nNumeric\nFooter text color (overrides default)\noFontHdr\nObject\nHeader font (Verdana, 11pt, bold)\noFontBody\nObject\nBody font (Segoe UI, 11pt)\noFontPie\nObject\nFooter font (Verdana, 11pt, bold)\nnTimer\nNumeric\nAuto-dismiss timeout in ms (default 5000)\nnWRadio / nHRadio\nNumeric\nCorner radius for the rounded window\nlBorder\nLogical\nShow/hide the outer border\nlLineHeader / lLineFoot\nLogical\nShow separator lines at header/footer boundaries\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nWidth, nHeight, oWnd, lDisenio, nClrPane, nClrPane2, nClrText, nWRadio, nHRadio )\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tcalinfo.html", "title": "TCalInfo", "text": "Source:\nsource/classes/calinfo.prg\nInherits from:\nTControl\nTCalInfo represents a calendar appointment or item displayed within a TCalex calendar control. It manages the visual appearance, temporal range, and selection state of individual calendar entries, supporting gradient-colored items across day, week, and month views.\nKey DATA Members\nDATA\nType\nDescription\nnStart / nEnd\nNumeric\nStart and end time offsets within the day (in minutes)\ndStart / dEnd\nDate\nStart and end dates for multi-day appointments\ncText\nCharacter\nDisplay text for the appointment item\ncSubject\nCharacter\nSubject or title of the appointment\naGradColor\nArray\nGradient color array for the item background\naGradColorND / aGradColorAp / aGradColorBT\nArray\nGradient colors for non-displayed, appointment, and business time states\nlSelected\nLogical\nSelection state of the appointment\noCalex\nObject\nParent TCalex calendar control\nMethods\nMethod\nDescription\nNew( oCalex, nStart, nEnd, dStart, dEnd, cText, cSubject )\nCreate a new calendar item with temporal bounds and display text\nBuildDates( nTop, nLeft, nW, nH )\nCompute the visual rectangle for the item within the calendar grid\nMove()\nReposition the item in response to calendar scrolling or resize\nPaint()\nPaint the item in the default calendar view\nPaintOnMonth()\nPaint the item within the month overview grid\nPaintOnWeek()\nPaint the item within the week/day view\nShow() / Hide()\nShow or hide the calendar item\nExample: Create Appointment\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oCalex, oAppt\n\n DEFINE WINDOW oWnd TITLE \"Calendar Demo\" SIZE 800, 600\n\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tcomponent.html", "title": "TComponent / TDataBaseComp / TDbfComp", "text": "Sources:\nsource/classes/tcompone.prg\n,\nsource/classes/tdbasecomp.prg\n,\nsource/classes/tdbfcomp.prg\nTComponent FROM TControl; TDataBaseComp FROM TComponent; TDbfComp FROM TComponent\nThe component classes provide an object-oriented composition model for FiveWin. TComponent wraps an arbitrary Harbour object (\noObject\n) and delegates messages to it, acting as an inspector/container. TDataBaseComp extends this for database tables with CRUD events, and TDbfComp adds DBF-specific index and relation support. All three support property/event inspection via\naProperties\nand\naEvents\narrays.\n[diagrama]\nTComponent\nTComponent inherits from TControl and wraps a target object (\noObject\n). Its error handler (\nError()\n) automatically delegates unknown messages to\noObject\n, so you can interact with the wrapped object transparently through the component.\nKey DATA\nDATA\nType\nDescription\noObject\nObject\nThe wrapped Harbour object\naProperties\nArray\nArray of property descriptors for the inspector\naEvents\nArray\nArray of event descriptors (codeblock pairs)\nbInspect\nBlock\nCodeblock evaluated when inspection is requested\nKey METHODs\nMethod\nDescription\nNew( oWnd, nId, oObject )\nCreate a component wrapping oObject\nError( ... )\nError handler auto-delegates to oObject\nTDataBaseComp\nTDataBaseComp extends TComponent for database table access. It provides event-driven navigation and editing with OnOpen, OnSkip, and OnSave callbacks.\nKey DATA\nDATA\nType\nDescription\ncFile\nCharacter\nDatabase file path\ncAlias\nCharacter\nWork area alias\ncDriver\nCharacter\nRDD driver name (e.g. \"DBFCDX\")\nOnOpen\nBlock\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tcursor.html", "title": "TCursor", "text": "Source:\nsource/classes/cursor.prg\nStandalone class (no inheritance)\nTCursor loads, creates, and manages mouse cursor resources. It supports predefined Windows\nsystem cursors, custom cursors from .cur/.ico files, cursors from program resources, and\ncursors created programmatically from bitmap images. TCursor is used by the FiveWin framework\nfor cursor management functions like\nCursorHand()\n,\nCursorArrow()\n,\nCursorWait()\n, etc.\nKey DATA Members\nDATA\nType\nDescription\nhCursor\nNumeric (Handle)\nWindows cursor handle\nlPredef\nLogical\nWhether the cursor is a predefined system cursor (not destroyed on End)\nSource\nCharacter\nSource description string (e.g., \"PREDEF:HAND\" or file path)\nPredefined Cursor Types\nName\nDescription\nARROW\nStandard arrow pointer (IDC_ARROW)\nIBEAM\nText I-beam cursor (IDC_IBEAM)\nWAIT\nHourglass/wait cursor (IDC_WAIT)\nCROSS\nCrosshair cursor (IDC_CROSS)\nUPARROW\nVertical arrow cursor (IDC_UPARROW)\nSIZE\nFour-pointed size/move cursor (IDC_SIZEALL)\nHAND\nHand pointer (clickable link)\nSTOP\nStop/no-entry cursor\nDRAG\nDrag cursor\nSEARCH\nSearch/zoom cursor\nSIZENWSE\nDiagonal resize NW-SE\nSIZENESW\nDiagonal resize NE-SW\nSIZEWE\nHorizontal resize (west-east)\nSIZENS\nVertical resize (north-south)\nMethods\nMethod\nDescription\nNew( cResOrFile, cPredef )\nCreate cursor from a resource name, .cur/.ico file, or predefined type\nNewBmp( oBitmap, nHotRow, nHotCol )\nCreate cursor from a TBitmap or TBtnBmp object with hotspot coordinates\nNewFromBitmap( oBitmap, nHotRow, nHotCol, hMaskBitmap )\nCreate cursor from a bitmap with a separate mask bitmap\nSetSource( cSource, cPredef )\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tdatepick.html", "title": "TDatePick", "text": "Source:\nsource/classes/tdatepick.prg\nOverview\nTDatePick class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tdayview.html", "title": "TDayView", "text": "Source:\nsource/classes/tdayview.prg\nOverview\nTDayView class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tdde.html", "title": "TDde / TDdeClient / TDdeServer", "text": "Sources:\nsource/classes/dde.prg\n,\nsource/classes/ddeclien.prg\n,\nsource/classes/ddeserv.prg\nStandalone classes (not control-based)\nThese three classes implement Dynamic Data Exchange (DDE) communication between Windows applications. TDde is a simplified DDE wrapper, while TDdeClient and TDdeServer provide a more complete client-server implementation with support for Execute, Request, Poke, and acknowledgment handling.\nTDde (Simple DDE)\nKey DATA Members\nDATA\nType\nDescription\nnService\nNumeric\nGlobal atom for the service name\nnTopic\nNumeric\nGlobal atom for the topic name\noWndServer\nObject\nServer window object after connection\nlActive\nLogical\n.T. when DDE conversation is active\nMethods\nMethod\nDescription\nNew( cService, cTopic, cItem, bAction, bEnd )\nCreate a DDE object with service, topic, item atoms and action/end code blocks\nActivate()\nBroadcast WM_DDE_INITIATE to all top-level windows\nExecute( cCommand )\nSend a DDE execute command to the server\nEnd()\nTerminate the DDE conversation and delete atoms\nTDdeClient (Full Client)\nKey DATA Members\nDATA\nType\nDescription\noWnd\nObject\nMain window object for message handling\ncService\nCharacter\nService name (converted to atom)\ncTopic\nCharacter\nTopic name (converted to atom)\nlActive\nLogical\n.T. when DDE conversation is active\nnAck\nNumeric\nACK status: 0=OK, 1=Busy, 2=NotSupported, 3=Timeout\ncData\nCharacter\nHolds data received from a Request call\nMethods\nMethod\nDescription\nNew( oWnd, cService, cTopic )\nCreate client; wires bDDE_ACK and bDDE_DATA to the window\nActivate( nWait )\nSend WM_DDE_INITIATE; optionally wait nWait seconds for ACK\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tddeml.html", "title": "TDDEMLClient / TDDEMLServer", "text": "Sources:\nsource/classes/tddemlcl.prg\n,\nsource/classes/tddemlsv.prg\nStandalone classes\nThe DDE Management Library (DDEML) classes provide a high-level interface to Windows Dynamic Data Exchange using the DDEML API. TDDEMLClient connects to DDE servers and executes commands or requests data; TDDEMLServer registers a DDE server that responds to client requests. Both classes handle conversation management, service/topic registration, and data transfer through the DDEML protocol.\n[diagrama]\nTDDEMLClient\nTDDEMLClient connects to an existing DDE server, sends commands, and requests data.\nKey DATA\nDATA\nType\nDescription\nhInst\nNumeric\nDDEML instance handle\nhConv\nNumeric\nConversation handle after successful connect\ncService\nCharacter\nService name string\nhService\nNumeric\nService handle\ncTopic\nCharacter\nTopic name string\nhTopic\nNumeric\nTopic handle\nnTimeOut\nNumeric\nTimeout in milliseconds for DDE operations\nKey METHODs\nMethod\nDescription\nNew()\nCreate DDE client and initialize DDEML\nConnect( cSvc, cTopic )\nConnect to a DDE server on the given service/topic\nDisconnect()\nTerminate the DDE conversation\nExecute( cCmd )\nSend a command string to the server for execution\nRequest( cReq )\nRequest data from the server; returns result string\nNetConnect( cSvr, cApp )\nConnect to a DDE server on a remote network machine\nTDDEMLServer\nTDDEMLServer registers as a DDE server, listening for client connections and responding to execute/request operations.\nKey DATA\nDATA\nType\nDescription\nhInst\nNumeric\nDDEML instance handle\naClients\nArray\nArray of connected client conversation handles\nbOnConnect\nBlock\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tdockpanel.html", "title": "TDockPnel", "text": "Source:\nsource/internal/tdockpnel.prg\nInherits from:\nTControl\nTDockPnel is a dockable panel control that provides a floating/tool window with a title bar and an inner content area. It supports multiple content modes (\nnMode\n: 1=TPanel, 2=TScrollPanel, 9=TDialog) and various control types (\nnType\n: 1=ButtonBar, 2=TTitle, 3=TRibbonBar, 4=TFolderEx, 5=TXBrowse). The panel can be docked to any edge and supports splitter-based resizing.\nKey DATA Members\nDATA\nType\nDescription\nnMode\nNumeric\nContent mode: 1=TPanel, 2=TScrollPanel, 9=TDialog\noPnelP / oPnelH\nObject\nPanel body and header controls\nnHTit\nNumeric\nTitle bar height\nnType\nNumeric\nControl type: 1=ButtonBar, 2=TTitle, 3=TRibbonBar, 4=TFolderEx, 5=TXBrowse\nnClrPane / nClrText\nNumeric\nPanel area colors\nnClrPaneH / nClrTextH\nNumeric\nHeader area colors\nlBottom\nLogical\n.T. to dock at the bottom edge\nlSplitV\nLogical\n.T. for a vertical splitter handle\nMethods\nMethod\nDescription\nNew( oWnd, nT, nL, nB, nR, cT, nBord, nClrT, nClrP, lClient )\nCreate a dockable panel with position, caption, border, and colors\nActivate()\nShow and activate the panel window\nSetCaption( c )\nSet the title bar caption text\nSetPosTitle( l )\nSet the title position (logical flag)\nSetBorderSize( n )\nSet the border width in pixels\nSetColors( nT, nP, nTH, nPH )\nSet text and pane colors for body and header\nSetTypeCtrl( n )\nSet the control type (1-5)\nSetCtrlsPnel( u )\nAttach a control or array of controls to the panel\nSetImgsFiles( aBtns )\nSet button images from file paths\nSetImgsResources( aBtns )\nSet button images from resource names\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tdosprn.html", "title": "TDosPrn", "text": "Source:\nsource/classes/tdosprn.prg\nStandalone class\nTDosPrn emulates DOS-style character-mode printing to a Windows printer or file. It provides row/column positioning, page control, and escape-sequence commands, making it suitable for generating plain-text invoices, reports, and labels on dot-matrix or line printers.\nKey DATA Members\nDATA\nType\nDescription\ncPort\nCharacter\nPrinter port name, default \"LPT1\"\nhDC\nHandle\nWindows printer device context handle\nnRow / nCol\nNumeric\nCurrent cursor row and column position\nlAnsiToOem\nLogical\nConvert ANSI text to OEM character set\nnLPP\nNumeric\nLines per page (page length)\nbNewPage\nCode block\nCode block executed at the start of each new page\nbPageChange\nCode block\nCode block executed when a page ends\nMethods\nMethod\nDescription\nNew( cPort, lFile, lLaser, nLPP, bNewPage )\nOpen a printer or file with lines-per-page and new-page callback\nStartPage() / EndPage()\nBegin and end a printed page\nSay( nRow, nCol, cText )\nPrint text at the specified row and column\nSayNow()\nPrint text at the current cursor position\nSayCmp()\nPrint a formatted, compressed line\nCommand( cStr, ... )\nSend an escape/printer command sequence\nWrite( cText )\nWrite raw text to the printer\nPrintFile( cFile )\nSend the content of a file to the printer\nExample: Dot Matrix Invoice\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oPrn\n\n oPrn := TDosPrn():New( \"LPT1\", .F., .F., 66 )\n\n oPrn:StartPage()\n oPrn:Say( 1, 10, \"INVOICE #1024\" )\n oPrn:Say( 3, 5, \"Customer: John Doe\" )\n oPrn:Say( 5, 5, \"Item\" )\n oPrn:Say( 5, 40, \"Qty\" )\n oPrn:Say( 5, 50, \"Price\" )\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tenhmeta.html", "title": "TEnhMetaFile", "text": "Source:\nsource/classes/tenhmeta.prg\nInherits from:\nTControl\nTEnhMetaFile displays Windows Enhanced Metafiles (EMF) inside FiveWin windows and dialogs.\nIt is a full TControl subclass supporting sizing, positioning, zoom in/out, shadow effects,\nand resource cleanup. EMF files contain vector graphics that scale without quality loss,\nmaking them ideal for diagrams, logos, and print-preview content.\nKey DATA Members\nDATA\nType\nDescription\nhMeta\nNumeric (Handle)\nEnhanced metafile handle (HENHMETAFILE)\nnWidth\nNumeric\nLogical width of the metafile\nnHeight\nNumeric\nLogical height of the metafile\nnXZoom\nNumeric\nX-axis zoom factor (default 2)\nnYZoom\nNumeric\nY-axis zoom factor (default 4)\nnXorig\nNumeric\nX-axis scroll origin offset\nnYorig\nNumeric\nY-axis scroll origin offset\nlZoom\nLogical\nWhether zoom mode is currently active\nlShadow\nLogical\nShow shadow effect around the control (default .T.)\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, cFile, oWnd )\nCreate a new TEnhMetaFile control that loads and displays an EMF file\nRedefine( nId, cFile, oWnd )\nRedefine from a dialog resource template\nSetFile( cFile )\nLoad a new EMF file, replacing the current one\nZoomIn()\nZoom into the metafile (divides nWidth/nHeight by nXZoom/nYZoom)\nZoomOut()\nZoom out of the metafile (restores original dimensions)\nSetZoomFactor( nX, nY )\nChange the zoom factor and adjust the current zoom state\nSetOrg( nX, nY )\nSet the scroll origin for panning the metafile view\nEnd()\nRelease the metafile handle and call the superclass End()\nEMF Command\nTEnhMetaFile can be created directly using the\nEMF\ncommand syntax:\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tenhmetafile.html", "title": "TEnhMetaFile", "text": "Source:\nsource/classes/tenhmetafile.prg\nOverview\nTEnhMetaFile class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/texstruct.html", "title": "TExStruct", "text": "Source:\nsource/classes/texstruct.prg\nOverview\nTExStruct class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tfget.html", "title": "TFGet", "text": "Source:\nsource/classes/fget.prg\nInherits from:\nTControl\nTFGet is a custom-painted multi-line text editor for FiveWin. Unlike the standard Windows EDIT control, it provides per-character fonts, colors, and alignment. It supports copy/cut/paste, undo, block selection, word wrap, and scroll bars. It is the foundation of FiveWin's format-capable text editing.\nKey DATA Members\nDATA\nType\nDescription\nbSetGet\nBlock\nCode block to get/set the text value\nlReadOnly\nLogical\nWhen\n.T.\n, editing is disabled\nnAlign\nNumeric\nText alignment: ES_LEFT, ES_CENTER, ES_RIGHT\nnClrText / nClrPane\nNumeric\nForeground and background colors (RGB)\noFont / aFonts\nObject/Array\nDefault font and per-character font array\nMethods\nMethod\nDescription\nNew( nRow, nCol, bSetGet, oWnd, nW, nH, oFont, lHScroll, nClrFore, nClrBack, lPixel, lReadOnly, ... )\nCreate a new TFGet control\nRedefine( nId, bSetGet, oWnd )\nRedefine from a dialog resource\nCopy() / Cut() / Paste()\nClipboard operations\nUndo()\nUndo last edit operation\nSelectAll()\nSelect all text\nSetFormat( oFont, nColor )\nApply font and color formatting\nExample: Custom GET with Picture\nCÓDIGO:\n#include \"FiveWin.ch\"\nfunction Main()\n local oWnd, oGet, cVar := \"Hello World\"\n DEFINE WINDOW oWnd TITLE \"TFGet Demo\" SIZE 400, 200\n @ 20, 20 GET oGet VAR cVar OF oWnd MEMO SIZE 300, 100\n ACTIVATE WINDOW oWnd CENTERED\nreturn nil\nNotes\nTFGet uses an internal GTF (Get Text Format) protocol for per-character font/color storage.\nFull clipboard support (Copy, Cut, Paste, Delete) with a right-click context menu.\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tfield.html", "title": "TField", "text": "Source:\nsource/classes/tfield.prg\nOverview\nTField class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tfont.html", "title": "TFont", "text": "Source:\nsource/classes/font.prg\nStandalone class (no inheritance)\nTFont manages Windows GDI font objects. It encapsulates the creation, selection, and destruction of logical fonts, providing a high-level interface for typeface name, size, weight, style (bold, italic, underline, strikeout), character set, escapement, and orientation. TFont is used throughout the FiveWin framework by every control and window that renders text. Fonts must be explicitly released with\nEnd()\nwhen no longer needed to avoid GDI resource leaks.\nKey DATA Members\nDATA\nType\nDescription\nhFont\nNumeric (Handle)\nWindows GDI font handle. Created by\nNew()\n, used when activating onto a DC.\ncFaceName\nCharacter\nTypeface name (e.g. \"Arial\", \"Segoe UI\", \"Courier New\").\nnInpHeight\nNumeric\nNominal font height in logical units. Negative values indicate character height (em-height); positive values indicate cell height.\nnInpWidth\nNumeric\nAverage character width. Zero lets Windows choose a proportional width.\nnWeight\nNumeric\nFont weight: 0=default, 400=normal, 700=bold. Set automatically when\nlBold\nis\n.T.\n.\nnEscapement\nNumeric\nAngle of the base text line in tenths of degrees (0 = horizontal, 900 = vertical upward).\nnOrientation\nNumeric\nAngle of each character in tenths of degrees.\nnCharSet\nNumeric\nCharacter set identifier: 0=ANSI, 1=DEFAULT, 204=RUSSIAN, 238=EASTEUROPE, 255=OEM.\nlBold\nLogical\nIf\n.T.\n, the font is created with bold weight (700).\nlItalic\nLogical\nIf\n.T.\n, the font is created with italic style.\nlUnderline\nLogical\nIf\n.T.\n, the font is created with underline.\nlStrikeOut\nLogical\nIf\n.T.\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tform.html", "title": "TForm", "text": "Source:\nsource/classes/tform.prg\nInherits from:\nTWindow\nTForm is a visual form container that loads its control layout from a .ffm resource (Forms File Memory). It is used by the Visual FiveWin IDE to design and run forms at runtime. The form serializes child controls, their properties, and database bindings.\nKey DATA Members\nDATA\nType\nDescription\nnBorderStyle\nNumeric\nWindow border style (default 3 = sizable)\nnPosition\nNumeric\nStartup position: 0=normal, 1=maximized, 2=minimized\ncDescription\nCharacter\nDescription visible in the Visual Project manager\ncClassName\nCharacter\nClass name used as default resource name for loading .ffm\noInspector\nObject\nProperty inspector object for design mode\naProperties\nArray\nClass DATA array listing all serializable properties\nlDesign\nLogical\nEnables design mode with drag-and-drop for child controls\nMethods\nMethod\nDescription\nNew()\nCreate a new form with default settings and load .ffm resource\nLoadRes( cResName, cResType )\nLoad form definition from a resource (default \"FORMS\" type)\nShowModal()\nShow the form as a modal dialog, respecting nPosition\nInitiate()\nInitialize controls: creates child windows, resolves aliases, sets up database bindings\nDefault()\nSet default values for border style, position, scrollbars\nExample: Load and Show Form\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oForm := TForm():New()\n\n oForm:cTitle := \"My Form\"\n oForm:nWidth := 600\n oForm:nHeight := 400\n oForm:nPosition := 0 // normal\n\n oForm:ShowModal()\n\nreturn nil\nNotes\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tgdip.html", "title": "GDI+ Classes", "text": "Source:\nsource/classes/tgdiplus.prg\nStandalone classes: Graphics, Pen, Brush, GDIBmp, Path, Region\nFiveWin provides a comprehensive set of GDI+ wrapper classes for high-quality 2D rendering\nwith anti-aliasing, alpha transparency, gradient brushes, path-based drawing, and image\nprocessing. These classes wrap the Windows GDI+ flat API and require no external ActiveX\ncomponents. GDI+ is initialized automatically when the first class is instantiated.\nGraphics Class\nThe main drawing surface. All drawing operations begin with a Graphics object.\nMethod\nDescription\nNew( hDC [, lNoHighQuality] )\nCreate from a device context handle\nNewWnd( hWnd [, lNoHighQuality] )\nCreate for window drawing\nNewFromWnd( oWnd [, lNoHighQuality] )\nCreate from a TWindow object\nNewImg( hImg [, lNoHighQuality] )\nCreate for off-screen image rendering\nSetHighQuality()\nEnable anti-aliased rendering\nSetNormalQuality()\nDisable anti-aliasing for speed\nDrawLine( oPen, nLeft, nTop, nRight, nBottom )\nDraw a line\nDrawRect( oPen, oBrush, nLeft, nTop, nWidth, nHeight )\nDraw a rectangle\nDrawEllipse( oPen, oBrush, nLeft, nTop, nWidth, nHeight )\nDraw an ellipse\nDrawArc( oPen, nLeft, nTop, nW, nH, nStartAngle, nSweepAngle )\nDraw an arc\nDrawRoundRect( oPen, oBrush, nLeft, nTop, nW, nH, nRadius )\nDraw a rounded rectangle\nDrawPath( oPen, oPath )\nDraw a graphics path outline\nFillPath( oBrush, oPath )\nFill a graphics path\nDrawImage( oImage, nTop, nLeft [, nW, nH] )\nDraw an image\nClear( nTrans, nRed, nGreen, nBlue )\nClear the surface with an ARGB color\nTranslate( nRow, nCol )\nTranslate the coordinate system\nRotate( nAngle )\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tgfx.html", "title": "Graphics Rendering Functions", "text": "Source:\nsource/function/imgtxtio.prg\n,\nsource/winapi/gdipfwh.cpp\nFiveWin's graphics rendering functions provide the core drawing primitives for all visual output across windows, dialogs, printers, and PDF documents. They abstract Windows GDI and GDI+ operations, handling resource conversion, alpha blending, gradient fills, and coordinate transformations. The middleware layer in\nimgtxtio.prg\nconverts Harbour data types (colors, arrays, objects) into low-level GDI handles.\nFW_Box() - Shape Rendering\nCÓDIGO:\nFW_Box( hDC, aRect, uPen, uBrush, aText, nShape )\nDraws rectangles, rounded rectangles, or ellipses with customizable pens and brushes. Supports gradient fills, alpha blending, and optional text inside the shape.\nParameter\nType\nDescription\nhDC\nHandle / Object\nDevice context handle, TWindow, TDialog, or TPrinter object\naRect\nArray\n{ nTop, nLeft, nBottom, nRight }\nin pixels\nuPen\nVarious\nPen color (numeric),\n{ color, nWidth }\narray, TPen object, or handle\nuBrush\nVarious\nBrush color, gradient array, TBrush object, or image handle\naText\nArray / Nil\nOptional\n{ cText, oFont, nClrText, cAlign }\nto draw inside the shape\nnShape\nNumeric\nShape constant: 0 = Rectangle, 1 = RoundRect, 2 = Ellipse\nFW_SayText() - Text Rendering\nCÓDIGO:\nFW_SayText( oWnd, cText, aRect, cAlign, oFont, nClrText, nClrBack, lBorder, nAddStyle )\nDraws text with full alignment control, word wrapping, and optional background fill. Supports GDI+ rendering for alpha colors and basic RTF formatting.\nFlag\nMeaning\nC\nCenter horizontally\nL\nLeft-align\nR\nRight-align\nT\nTop-align vertically\nB\nBottom-align vertically\nW\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tgmail.html", "title": "TGmail", "text": "Source:\nsource/classes/tgmail.prg\nOverview\nTGmail class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tgselect.html", "title": "TGSelector / TChooseGradient / TInk", "text": "Source:\nsource/classes/tgselect.prg\nTGSelector from TControl, TChooseGradient standalone dialog, TInk standalone\nTGSelector is a gradient bar editor control that allows users to visually create and edit\ncolor gradients by adding, moving, and removing color stops (\"inks\") along a gradient bar.\nTChooseGradient provides a complete dialog wrapper around TGSelector with RGB sliders for\nprecise color editing. TInk represents a single color stop within the gradient.\nTGSelector\nA TControl subclass that displays an interactive gradient bar with movable color stops.\nKey DATA Members\nDATA\nType\nDescription\naInks\nArray\nArray of TInk objects representing gradient color stops\naGradOut\nArray\nOutput gradient array:\n{ { nPercent, nColorStart, nColorEnd }, ... }\noInkOver\nObject\nThe TInk currently under the mouse cursor\nlChanged\nLogical\nWhether the gradient has been modified\nbSelected\nCode block\nEvaluated when an ink is selected\nbChanged\nCode block\nEvaluated when the gradient is modified\nnMargin\nNumeric\nLeft/right margin in pixels (default 10)\nTGSelector Methods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, oWnd, aInit )\nCreate the gradient selector.\naInit\nis an optional initial gradient array.\nAddInk( nPct, nClr1, nClr2 )\nAdd a new color stop at the given percentage with start/end colors\nInsInk( n, nPct, nClr1, nClr2 )\nInsert a color stop at position n\nSetColorInk( nClr )\nChange the color of the currently selected ink\nBuildGradientArray()\nBuild the output gradient array from current ink positions. Returns\naGradOut\n.\nBuildInkFromArray( aInit )\nInitialize inks from a gradient array\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ticon.html", "title": "TIcon", "text": "Source:\nsource/classes/icon.prg\nInherits from:\nTControl\nTIcon is a control for displaying Windows icons (.ico) from files or program resources.\nIt supports click actions, dynamic icon switching, border display, and proper resource\ncleanup. TIcon is commonly used for toolbar indicators, status icons, and decorative\nelements in windows and dialogs.\nKey DATA Members\nDATA\nType\nDescription\nhIcon\nNumeric (Handle)\nWindows icon handle (HICON)\ncIcoFile\nCharacter\nPath to the .ico file\ncResName\nCharacter\nName of the icon resource in the executable\nMethods\nMethod\nDescription\nNew( nRow, nCol, cRes, cFile, lBorder, bClick, oWnd )\nCreate an icon control. Provide either\ncRes\n(resource name) or\ncFile\n(.ico file path).\nReDefine( nId, cRes, cFile, bClick, lUpdate, oDlg )\nRedefine from a dialog resource template\nSetName( cResName )\nSwitch to a different icon resource by name. Destroys the old icon handle.\nSetFile( cIcoFile )\nSwitch to a different .ico file. Destroys the old icon handle.\nEnd()\nDestroy the icon handle and call the superclass End()\nICON Command\nCÓDIGO:\n@ nRow, nCol ICON oIcon OF oWnd FILE cFile\nExample\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oIcon\n\n DEFINE WINDOW oWnd TITLE \"Icon Demo\" SIZE 300, 200\n\n // Display an icon from a file\n @ 10, 10 ICON oIcon OF oWnd FILE \"myapp.ico\"\n\n // Make the icon clickable\n oIcon:bLClicked := {|| MsgInfo( \"Icon clicked!\" ) }\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\nNotes\nThe icon is loaded from either a file (\ncIcoFile\nvia\nExtractIcon()\n) or a program resource (\ncResName\nvia\nLoadIcon()\n). […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/timage.html", "title": "TImage", "text": "Source:\nsource/classes/image.prg\nInherits from:\nTControl\nTImage is an extended image control that displays bitmaps, icons, and metafiles within a window or dialog. It extends TBitmap with additional capabilities: loading from files, resources, memory buffers, and URLs; saving images in various formats (BMP, PNG, JPG, GIF, TIFF); rotation; and a built-in progress indicator. TImage is the recommended control for displaying static images in FiveWin applications.\nKey DATA Members\nDATA\nType\nDescription\nnProgress\nNumeric\nProgress percentage (0-100). When set, a progress bar is overlaid on the image.\nnFormat\nNumeric\nImage format identifier used when saving. Values: 0=BMP, 1=JPG, 2=PNG, 3=GIF, 4=TIFF.\ncBmpFile\nCharacter\nSource file path of the displayed image.\ncBmpRes\nCharacter\nResource name of the displayed image (if loaded from resources).\nhBitmap\nNumeric (Handle)\nHandle to the currently displayed bitmap.\nlStretch\nLogical\nIf\n.T.\n, the image is stretched to fit the control dimensions.\nlAdjust\nLogical\nIf\n.T.\n, the control size adjusts to match the image dimensions.\nnAngle\nNumeric\nCurrent rotation angle in degrees.\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, cRes, cFile, oWnd, lNoBorder, lStretch, lAdjust, oFont, bClrGrad, ... )\nCreate a new image control. Accepts either a resource name (\ncRes\n) or file path (\ncFile\n). Additional parameters control border, stretch behavior, and gradient color.\nDefine( cRes, cFile, oWnd )\nAlternative constructor for creating the control after instantiation.\nLoadImage( cRes, cFile )\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/timagebase64.html", "title": "TImageBase64", "text": "Source:\nsource/classes/imageb64.prg\nStandalone utility class\nTImageBase64 is a utility class that encodes images to Base64 for use in web pages (HTML\n\ntags with data URIs). It can also extract and save images from Base64-encoded HTML. The class auto-detects whether the input source is a file path, URL, or plain text.\nKey DATA Members\nDATA\nType\nDescription\naImage\nArray\nInternal image array from FW_ReadImage\ncFile\nCharacter\nSource file path or URL (if applicable)\ncBase64\nCharacter\nBase64 encoded image string\nlTag\nLogical\nInclude\n\ntags in output\nlHtml\nLogical\nGenerate full HTML document in output\nlUrlEncode\nLogical\nURL-encode the data URI instead of plain base64\nnImgWidth\nNumeric\nImage width in pixels (ACCESS readonly)\nnImgHeight\nNumeric\nImage height in pixels (ACCESS readonly)\nMethods\nMethod\nDescription\nNew( cSource )\nCreate object; optionally load source immediately\nSetSource( cSource )\nSet source: auto-detects file, URL, or base64 text\nChooseFile()\nOpen file picker dialog to select an image\nPaste()\nLoad image from clipboard\nMakeText( lUrlEncode, lTag, lHtml, cTitle )\nGenerate output text (data URI or HTML)\nSaveText( cFile, lUrlEncode, lTag, lHtml )\nSave output text to file; returns filename or nil\nCopyText( lUrlEncode, lTag, lHtml )\nCopy output text to clipboard; returns the text\nSaveImage()\nSave the decoded image to a file (.jpg or .png)\nTestHTML()\nGenerate a test HTML file and open it in the browser\nExample: Image to Base64 HTML Tag\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oImg := TImageBase64():New( \"c:\\images\\photo.jpg\" )\n\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tlayoutmanager.html", "title": "TLayoutManager", "text": "Source:\nsource/classes/Tlayman.prg\nStandalone class\nTLayoutManager provides resolution-independent layout calculations. It scales positions, sizes, and font sizes based on a reference screen resolution, enabling UIs that adapt to different display sizes. Supports grid-style positioning with configurable margins and spacing.\nKey DATA Members\nDATA\nType\nDescription\nnScreenWidth/Height\nNumeric\nCurrent screen resolution\nnBaseWidth/Height\nNumeric\nReference resolution (e.g., 1280x800)\nnSpacing\nNumeric\nSpacing between controls in grid layout\nnMarginTop/Left/Right/Bottom\nNumeric\nMargins around the usable area\nMethods\nMethod\nDescription\nNew( nScreenW, nScreenH, nBaseW, nBaseH, nSpacing, nMarginT, nMarginL, nMarginR, nMarginB )\nCreate a layout manager\nCalcSize( nBaseSize )\nScale a size using the minimum screen/base factor\nCalcPos( nBasePos )\nScale a position adding margins\nCalcGridPos( nIndex, nItemsPerRow, nBaseW, nBaseH, nBaseTop, nBaseLeft )\nGrid position for item at index; returns { nTop, nLeft, nWidth, nHeight }\nCalcFontSize( nBaseFontSize )\nScale a font size proportionally\nGetUsableWidth() / GetUsableHeight()\nReturn usable area excluding margins\nExample: Grid Layout\nCÓDIGO:\n#include \"FiveWin.ch\"\nfunction Main()\n local oLayout, nW, nH, aPos, n\n nW := GetSysMetrics( 0 )\n nH := GetSysMetrics( 1 )\n oLayout := TLayoutManager():New( nW, nH, 1280, 800, 10, 20, 20, 20, 20 )\n for n := 1 to 6\n aPos := oLayout:CalcGridPos( n, 3, 200, 100, 50, 50 )\n next\nreturn nil\nNotes\nScaling uses\nMin( screen / base )\nto maintain aspect ratio.\nCalcGridPos\nreturns\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tlex.html", "title": "TLex", "text": "Source:\nsource/classes/tlex.prg\nInherits from:\nTFile\nTLex is a lexical analyzer (tokenizer) that reads source text from a file or string and breaks it into tokens. It supports configurable separator characters, skip-on-blank and skip-on-CRLF modes, identifier tables, and token ID mapping. The class returns tokens sequentially via\nnGetToken()\n, which returns a numeric token ID matching the entries in the\naTokens\narray.\nKey DATA Members\nDATA\nType\nDescription\naTokens\nArray\nArray of token definitions (each entry: { cTokenString, nTokenId })\naIds\nArray\nArray of recognized identifier strings\nlSkipBlank\nLogical\nSkip whitespace characters when tokenizing\nlSkipCRLF\nLogical\nSkip carriage return and line feed characters\ncToken\nCharacter\nThe last token text extracted\ncSeparators\nCharacter\nString of separator characters used to delimit tokens\nuValue\nAny\nOptional value associated with the current token\ncText\nCharacter\nThe full source text being tokenized\nMethods\nMethod\nDescription\nNew( cFile, aTokens, aIds, cSeparators )\nCreate a TLex from a file, with token table, identifier table, and separators\nnGetToken()\nExtract the next token and return its numeric ID (0 = unrecognized, -1 = end)\nlEoF()\nReturn .T. when the end of the source text has been reached\nSetText( c )\nSet the source text to be tokenized (alternative to file-based constructor)\nAdd( cToken, nId )\nAdd a new token string with its numeric ID to the token table\nExample: Tokenize IF-THEN-ELSE Script\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oLex, nToken\n local cScript := \"IF x > 10 THEN print 'Hello' ELSE stop\"\n\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmenu.html", "title": "TMenu", "text": "Source:\nsource/classes/menu.prg\nStandalone class (not control-based)\nTMenu is the FiveWin menu system. It manages both popup menus and system menus, supporting\nmodern Office themes (2007/2010/2013/2015), keyboard accelerators, and MDI menu merging.\nMenus can be created programmatically via commands or from dialog resources.\nKey DATA Members\nDATA\nType\nDescription\nhMenu\nHandle\nWindows menu handle (HMENU)\naItems\nArray\nArray of TMenuItem objects in this menu\noWnd\nObject\nOwner window for the menu\nlPopup\nLogical\n.T. for popup (context) menus, .F. for top-level menu bar\nlSysMenu\nLogical\n.T. if this is the system menu\nl2007\nLogical\nOffice 2007 visual theme\nl2010\nLogical\nOffice 2010 visual theme\nl2013\nLogical\nOffice 2013 visual theme\nl2015\nLogical\nOffice 2015 visual theme\noAccTable\nObject\nKeyboard accelerator table\noFont\nObject\nFont used for menu text\nMethods\nMethod\nDescription\nNew( lPopup, oWnd, nClrT, nClrP, oFont, l2007, l2010, l2013, l2015 )\nCreate a new menu;\nlPopup=.T.\nfor context menus\nReDefine( cRes, ... )\nCreate a menu from a dialog resource definition\nNewSys( oWnd )\nCreate or retrieve the system menu for a window\nAdd( oMenuItem, lRoot )\nAdd a TMenuItem; if\nlRoot\nis .T. add as top-level\nInsert( oMenuItem, nAt )\nInsert a TMenuItem at the specified position\nDelItem( nAt )\nDelete a menu item at position\nCommand( nCmd )\nExecute the action associated with a command ID\nActivate( nRow, nCol, oWnd )\nShow the popup menu at screen coordinates\nRefresh()\nRedraw the entire menu\nAddMdi( aColors )\nSet up MDI menu merging with color array\nMenu Commands\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmenuitem.html", "title": "TMenuItem", "text": "Source:\nsource/classes/menuitem.prg\nStandalone class\nTMenuItem represents a single entry within a TMenu object. Each item has a prompt, an optional action\n(code block), a checked/unchecked state, an enabled/disabled state, and a WHEN condition for dynamic\nvisibility. Items can also act as separators or open submenus.\nKey DATA Members\nDATA\nType\nDescription\ncPrompt\nCharacter\nMenu item text, with & for accelerator underline\nnId\nNumeric\nCommand ID for the menu item\nbAction\nBlock\nCode block executed on selection\nbWhen\nBlock\nCode block evaluated to enable/disable item dynamically\nlChecked\nLogical\nWhether the item shows a check mark\nlActive\nLogical\nWhether the item is enabled (clickable)\nlSeparator\nLogical\n.T. for a separator bar\noMenu\nObject\nParent TMenu object containing this item\nMethods\nMethod\nDescription\nNew( cPrompt, cMsg, lChecked, lActive, bAction, bWhen, ... )\nCreate a new menu item\nReDefine( cPrompt, ... )\nRedefine a menu item from a resource\nSetCheck( lOn )\nToggle the check mark on/off\nEnable()\nEnable the menu item\nDisable()\nDisable (gray out) the menu item\nSetPrompt( cText )\nChange the menu item text at runtime\nExample: Menu Item with Action and Check\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oMenu, oItemStatus\n\n DEFINE WINDOW oWnd TITLE \"TMenuItem Demo\" ;\n MENU buildMenu( @oItemStatus )\n\n ACTIVATE WINDOW oWnd CENTERED\n\nreturn nil\n\nfunction buildMenu( oItemStatus )\n\n local oMenu\n\n MENU oMenu\n MENUITEM \"&View\"\n MENU oSub\n MENUITEM \"&Toolbar\" ACTION MsgInfo( \"Toggle Toolbar\" )\n MENUITEM \"&Status Bar\" ;\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmetafil.html", "title": "TMetaFile", "text": "Source:\nsource/classes/tmetafil.prg\nInherits from:\nTControl\nTMetaFile displays both Windows Metafiles (WMF) and Enhanced Metafiles (EMF) inside FiveWin\nwindows and dialogs. It automatically detects WMF files and converts them to EMF format for\ndisplay. TMetaFile offers the same zoom, pan, and shadow features as TEnhMetaFile, with\nadditional support for mouse wheel scrolling and coordinate system management.\nKey DATA Members\nDATA\nType\nDescription\nhMeta\nNumeric (Handle)\nMetafile handle (HENHMETAFILE or HMETAFILE)\nnWidth\nNumeric\nLogical width\nnHeight\nNumeric\nLogical height\nnXZoom\nNumeric\nX-axis zoom factor (default 1)\nnYZoom\nNumeric\nY-axis zoom factor (default 2)\nlZoom\nLogical\nWhether zoom mode is active\nlShadow\nLogical\nShow drop shadow (default .T.)\nbMouseWheel\nCode block\nMouse wheel event handler\nnVRatio\nNumeric\nVertical aspect ratio for viewport mapping\nMethods\nMethod\nDescription\nNew( nTop, nLeft, nW, nH, cFile, oWnd )\nCreate a new TMetaFile control\nRedefine( nId, cFile, oWnd )\nRedefine from dialog resource\nSetFile( cFile )\nLoad a new WMF or EMF file\nZoomIn()\nZoom in (divides dimensions by nXZoom/nYZoom)\nZoomOut()\nZoom out (restores original dimensions)\nSetZoomFactor( nX, nY )\nChange the zoom multipliers\nSetOrg( nX, nY )\nSet the scroll origin offset\nMouseWheel( nKey, nDelta, nXPos, nYPos )\nHandle mouse wheel events (delegates to bMouseWheel)\nEnd()\nRelease metafile handle and call superclass End()\nMETAFILE Command\nTMetaFile can be created directly using the\nMETAFILE\ncommand syntax:\nCÓDIGO:\n@ nRow, nCol METAFILE oMf FILE cFile OF oWnd SIZE nW, nH\nExample\nCÓDIGO:\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmetafile.html", "title": "TMetaFile", "text": "Source:\nsource/classes/tmetafile.prg\nOverview\nTMetaFile class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmeter_ex.html", "title": "TMeterEx", "text": "Source:\nsource/classes/tmeterex.prg\nInherits from:\nTControl\nTMeterEx is an extended progress meter control with dual-gradient rendering. It displays a filled progress bar over a background track, supporting custom gradient definitions, rounded corners, optional bitmap overlay, vertical orientation, and inverted fill direction. The meter value is managed through a\nbSetGet\ncode block.\nKey DATA Members\nDATA\nType\nDescription\naGrad\nArray\nBackground track gradient definition (array of {fraction, fromClr, toClr})\naGradMet\nArray\nMeter fill gradient definition\nbSetGet\nBlock\nCode block to get/set the current value\nnTotal\nNumeric\nMaximum value (100% fill)\nnRefresh\nNumeric\nLast painted pixel width (drives refresh logic)\nlRound\nLogical\nEnable rounded corners\nnRound\nNumeric\nCorner radius in pixels\nlVertical\nLogical\nVertical orientation\nlInverted\nLogical\nInvert fill direction\nhBitmap\nHandle\nOptional overlay bitmap for the fill area\nnClrBoxIn\nNumeric\nInner border color\nnClrBoxOut\nNumeric\nOuter border color\nMethods\nMethod\nDescription\nNew( nTop, nLeft, oWnd, nWidth, nHeight, cBitmap, bSetGet, nTotal, lPixel, lDesign, lRound, nRound, aGrad, aGradMet, nClrBoxIn, nClrBoxOut, lVertical, lInverted, bPainted, lUpdate )\nCreate a new meter control\nRedefine( nId, bSetGet, nTotal, oWnd, cBitmap, lRound, nRound, aGrad, aGradMet, nClrBoxIn, nClrBoxOut, lVertical, lInverted, bPainted, lUpdate )\nRedefine from a dialog resource\nSet( nActual )\nSet the current value and refresh the display\nSetTotal( nTotal )\nSet a new maximum value and refresh\nPaint()\nRender the meter with gradients and borders\nDefault()\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmnucomp.html", "title": "TMnuComp", "text": "Source:\nsource/classes/tmnucomp.prg\nOverview\nTMnuComp class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmonthview.html", "title": "TMonthView", "text": "Source:\nsource/classes/tmonthview.prg\nOverview\nTMonthView class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tmultiget.html", "title": "TMultiGet", "text": "Source:\nsource/classes/mget.prg\nOverview\nTMultiGet\nis the multi-line Windows EDIT control wrapper used for\nmemo-style input. XBrowse creates a temporary\nTMultiGet\nfor in-cell\nediting when the column value is character,\nnDataLines >= 2\n, and\ncEditPicture\nis empty.\nLimitText( nChars )\noMGet:LimitText( nChars )\nsends\nEM_LIMITTEXT\nso the user\ncannot type or paste beyond\nnChars\n. Pass\n0\nfor unlimited\n(default for a standalone multi-get).\nWhen limiting XBrowse cells that store fixed-width padded strings\n(\nPadR\n/\nSpace(n)\n), always\nRTrim()\nthe text\nbefore\nLimitText(n)\n; otherwise the control is already full and\naccepts no further input. See\nTXBrowse multi-line cell edit\nand sample\nsamples/ui/xbrowse/xbrml250.prg\n.\nSee Also\nTXBrowse multi-line cell edit\nTGet\nClasses Alphabetical" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tnewsinstance.html", "title": "TNewsInstance", "text": "Source:\nsource/classes/tnewsinstance.prg\nOverview\nTNewsInstance class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tpen.html", "title": "TPen", "text": "Source:\nsource/classes/pen.prg\nStandalone class (no inheritance)\nTPen encapsulates a Windows GDI pen object for drawing lines, borders, and outlines.\nPens define the color, width, and style (solid, dashed, dotted, etc.) of lines drawn\non any device context. TPen is used internally by many FiveWin controls and is also\navailable for direct use in custom painting routines.\nKey DATA Members\nDATA\nType\nDescription\nhPen\nNumeric (Handle)\nWindows GDI pen handle\nnStyle\nNumeric\nPen style (PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, etc.)\nnWidth\nNumeric\nPen width in logical units (pixels)\nnColor\nNumeric\nPen color as RGB value\noDevice\nObject\nOptional device context owner for DPI-aware width scaling\nMethods\nMethod\nDescription\nNew( nStyle, nWidth, nColor, oDevice )\nCreate a new pen. Defaults: PS_SOLID, width 1, CLR_BLACK. When oDevice is provided, width is scaled by DPI.\nEnd()\nDelete the GDI pen object and release resources. Alias for\nRelease()\n.\nPen Styles\nConstant\nValue\nDescription\nPS_SOLID\n0\nSolid line (default)\nPS_DASH\n1\nDashed line (valid only when width is 1)\nPS_DOT\n2\nDotted line (valid only when width is 1)\nPS_DASHDOT\n3\nAlternating dash-dot pattern\nPS_DASHDOTDOT\n4\nDash-dot-dot pattern\nPS_NULL\n5\nInvisible pen\nPS_INSIDEFRAME\n6\nSolid pen that draws inside the bounding frame\nExample\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oPen\n\n DEFINE WINDOW oWnd TITLE \"TPen Demo\" SIZE 400, 300\n\n oWnd:bPainted = {| hDC |\n // Create a red pen with width 2\n DEFINE PEN oPen WIDTH 2 COLOR CLR_RED\n\n // Draw a line from top-left to bottom-right\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tprogress.html", "title": "TProgress", "text": "Source:\nsource/classes/tprogres.prg\nInherits from:\nTControl\nTProgress wraps the Windows common control progress bar (msctls_progress32). It supports\nstandard progress indication with configurable range and position, step increments, vertical\norientation, and marquee (indeterminate) mode. TProgress is suitable for showing operation\nprogress in windows, dialogs, and status bars.\nKey DATA Members\nDATA\nType\nDescription\nnMin\nNumeric\nMinimum range value (default 0)\nnMax\nNumeric\nMaximum range value (default determined by system)\nnPos\nNumeric\nCurrent position\nnStep\nNumeric\nStep increment value\nMethods\nMethod\nDescription\nNew( nTop, nLeft, oWnd, nPos, nClrF, nClrB, lPixel, lDesign, nW, nH, cMsg, lVert, lMarquee )\nCreate a progress bar. Supports vertical and marquee modes via\nlVert\nand\nlMarquee\n.\nReDefine( nId, oWnd )\nRedefine from a dialog resource template\nSetPos( nPos )\nSet the current position (alias\n_nPosition\n,\nnPosition\n)\nGetPos()\nReturn the current position\nSetRange( nMin, nMax )\nSet the minimum and maximum range values\nSetStep( nStepInc )\nSet the step increment value\nStepIt()\nAdvance the position by the current step value\nDeltaPos( nIncrement )\nChange the position by a relative amount (positive or negative)\nSetMarquee( lOnOff )\nEnable or disable marquee (indeterminate) mode\nCommands\nCÓDIGO:\n// Standard progress bar\nDEFINE PROGRESS oProg OF oDlg\n\n// Marquee (indeterminate) progress bar\nDEFINE PROGRESS oProg OF oDlg MARQUEE\nExample\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oProg, n\n\n DEFINE WINDOW oWnd TITLE \"Progress Demo\" SIZE 400, 150\n\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/transformer.html", "title": "Transformer", "text": "Source:\nsource/classes/transformer.prg\nOverview\nTransformer class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/trbgroup.html", "title": "TRBGroup", "text": "Source:\nsource/classes/trbgroup.prg\nOverview\nTRBGroup class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/trbtn.html", "title": "TRBtn", "text": "Source:\nsource/classes/trbtn.prg\nOverview\nTRBtn class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/trdd.html", "title": "TRDD / TRDDODBC", "text": "Source:\nsource/classes/trdd.prg\n,\nsource/classes/trddodbc.prg\nTRDD is a standalone base class. TRDDODBC inherits from:\nTRDD\nTRDD is a virtual RDD (Replaceable Database Driver) base class that delegates RDD operations to code blocks. TRDDODBC extends TRDD to provide an ODBC-backed RDD, allowing standard\nUSE\n,\nSKIP\n,\nAPPEND\n,\nSEEK\n, and field access commands against ODBC data sources. It registers as the \"ODBC\" RDD via\nRddRegister\n.\nKey DATA Members (TRDD)\nDATA\nType\nDescription\nbAddField\nBlock\nCode block for adding a field definition\nbAppend\nBlock\nCode block for appending a blank record\nbGetValue\nBlock\nCode block for reading a field value\nbPutValue\nBlock\nCode block for writing a field value\nbSkip\nBlock\nCode block for moving the record cursor\nbOpen\nBlock\nCode block for opening a table\nbCloseArea\nBlock\nCode block for closing a work area\nbBof\nBlock\nCode block for beginning-of-file check\nbEof\nBlock\nCode block for end-of-file check\nbRecCount\nBlock\nCode block for record count\nbRecNo\nBlock\nCode block for current record number\nbGoTop\nBlock\nCode block for GoTop\nTRDD Methods\nMethod\nDescription\nNew()\nCreate the virtual RDD with default code blocks\nSetRdd()\nRegister this instance as the active virtual RDD\nAddField( nArea, nField )\nAdd a field via bAddField code block\nAddFields( pArea, aFields )\nAdd multiple fields using RddSetFieldExtent / RddAddField\nOpen( pArea, nArea, cFileName, cAliasName, lShared, lReadOnly )\nOpen a table via bOpen\nSkip( pArea, nArea, nRecs )\nSkip records via bSkip\nCloseArea( nArea )\nClose a work area via bCloseArea\nTRDDODBC\nDATA\nType\nDescription\noOdbc\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/trect.html", "title": "TRect / TPoint", "text": "Source:\nsource/classes/rect.prg\nStandalone classes (no inheritance)\nTRect and TPoint are utility classes for 2D geometry operations. TRect represents a\nrectangle defined by its top, left, bottom, and right edges. TPoint represents a single\npoint with row and column (or Y and X) coordinates. Both classes support arithmetic operators\nand geometric transformations commonly needed in UI layout and drawing code.\nTRect\nKey DATA Members\nDATA\nType\nDescription\naRect\nArray\nCore data:\n{ nTop, nLeft, nBottom, nRight }\nnTop\nNumeric\nTop edge (accessor for aRect[1])\nnLeft\nNumeric\nLeft edge (accessor for aRect[2])\nnBottom\nNumeric\nBottom edge (accessor for aRect[3])\nnRight\nNumeric\nRight edge (accessor for aRect[4])\nnWidth\nNumeric\nComputed width\nnHeight\nNumeric\nComputed height\ncRect\nCharacter\nBinary RECT structure (8 bytes) for Win32 API calls\nCenterPt\nArray\nCenter point as\n{ nTop, nLeft }\nlWinRect\nLogical\nWindows-style rect (exclusive right/bottom). Default .T.\nTRect Methods\nMethod\nDescription\nNew( nTop, nLeft, nBottom, nRight [, nWidth, nHeight] )\nCreate a new rectangle. Accepts array, binary string, or four coordinates. nWidth/nHeight override nRight/nBottom.\nMoveBy( nRows, nCols )\nOffset the entire rectangle by the given deltas\nMoveTo( nNewTop, nNewLeft )\nMove rectangle so its top-left corner is at the given position\nContains( aPoint )\nCheck if a point { row, col } or another rectangle is inside this one\nResize( nRatio [, aPoint] )\nResize by a ratio relative to center (or specified anchor point)\nFitInside( oRect, nType, cAlign )\nFit this rectangle inside another, optionally enlarging. […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/trpanel.html", "title": "TRPanel", "text": "Source:\nsource/classes/trpanel.prg\nOverview\nTRPanel class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tselector.html", "title": "TSelector", "text": "Source:\nsource/classes/tselector.prg\nOverview\nTSelector class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tsymbol.html", "title": "TSymbol / TSymTable", "text": "Sources:\nsource/classes/tsymbol.prg\n,\nsource/classes/tsymtabl.prg\nStandalone classes\nTSymbol and TSymTable provide runtime introspection of the Harbour symbol table. TSymbol wraps a single symbol handle (\nhSymbol\n) and exposes its name and visibility. TSymTable provides iteration over the entire symbol table, returning TSymbol objects. These classes are useful for debuggers, profilers, and tools that need to enumerate all public/static symbols in the current application.\nTSymbol\nTSymbol represents a single symbol entry in the Harbour symbol table.\nKey DATA\nDATA\nType\nDescription\nhSymbol\nNumeric\nHandle to the internal Harbour symbol entry\nKey METHODs\nMethod\nDescription\nName()\nReturn the symbol name as a character string\nIsStatic()\nReturn .T. if the symbol is static (module-scoped)\nTSymTable\nTSymTable provides indexed access to all symbols in the symbol table.\nKey METHODs\nMethod\nDescription\nGet( n )\nReturn the TSymbol at position n (1-based)\nLen()\nReturn the total number of symbols in the table\nSize()\nReturn the total size (same as Len())\nGetFirst()\nReturn the first TSymbol in the table\nGetLast()\nReturn the last TSymbol in the table\nExample: Iterate All Symbols\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oSymTable := TSymTable():New()\n local oSym, n\n\n ? \"Total symbols:\", oSymTable:Len()\n ? \"---\"\n\n // Print first 20 symbols\n for n := 1 to Min( 20, oSymTable:Len() )\n oSym := oSymTable:Get( n )\n if oSym != nil\n ? oSym:Name(), ;\n if( oSym:IsStatic(), \"(static)\", \"(public)\" )\n endif\n next\n\n // Get first and last symbols\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ttagent.html", "title": "TAgent / TOLlama", "text": "Source:\nsource/classes/tollama.prg\nTOLlama: Standalone | TAgent: Uses TOLlama internally\nTOLlama provides integration with locally running Ollama LLM models via the Ollama REST API. It supports text prompts, streaming responses, and image analysis (for multimodal models). TAgent builds on TOLlama to create an AI agent that can invoke Harbour functions as tools, enabling LLM-driven automation.\nKey DATA Members\nDATA\nType\nDescription\ncModel\nCharacter\nOllama model name (default \"deepseek-r1:14b\")\ncUrl\nCharacter\nAPI URL (default \"http://localhost:11434/api/chat\")\ncSystemPrompt\nCharacter\nSystem prompt defining agent behavior\naTools\nArray\nArray of tool definitions for the agent\nMethods\nMethod\nDescription\nNew( cModel )\nCreate an Ollama client with the specified model\nSend( cPrompt )\nSend a prompt; returns the complete response\nSendStream( cPrompt, bWriteFunction )\nSend with streaming callback for real-time token output\nSendImage( cImageFile, cPrompt )\nSend image + prompt for multimodal models\nGetValue()\nParse JSON response and extract content text\nEnd()\nClean up the libcurl handle\nSetSystemPrompt( c )\nSet the system prompt for the agent\nAddTool( cName, cDesc, bAction )\nRegister a Harbour function as a callable tool\nRun( cPrompt )\nExecute a prompt through the agent; returns result\nExample: Agent with Calculator Tool\nCÓDIGO:\n#include \"FiveWin.ch\"\nfunction Main()\n local oAgent\n oAgent := TAgent():New( \"deepseek-r1:14b\" )\n oAgent:SetSystemPrompt( \"You are a helpful assistant.\" )\n oAgent:AddTool( \"calculator\", \"Add two numbers\", { |a,b| a + b } )\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ttimepick.html", "title": "TTimePick", "text": "Source:\nsource/classes/ttimepick.prg\nOverview\nTTimePick class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ttitle.html", "title": "TTitle / TTitleText / TTitleImg", "text": "Source:\nsource/classes/ttitle.prg\nInherits from:\nTControl\nTTitle is a decorative title / header control that combines gradient backgrounds, text elements, and bitmap images into a single visual header. It supports shadows, borders, rounded corners, image animation, alpha blending, and reflex (mirror) effects. Text and images can be added independently via\nAddText()\nand\nLoadBitmaps()\n.\nKey DATA Members\nDATA\nType\nDescription\naImgs\nArray\nArray of 10-position image descriptors: row, col, hBitmap, hPalette, hasAlpha, alphaLevel, reflex, transparent, anima, action\naText\nArray\nArray of text descriptors: row, col, text, justify, brush, pen, shadow, font, textColor\naGrdBase\nArray\nGradient array for the base (header) area\naGrdBack\nArray\nGradient array for the background\nhBackBrush\nHandle\nInternal background pattern brush handle\nnShadow\nNumeric\nShadow direction: TOPLEFT, TOPRIGHT, BOTTOMLEFT, BOTTOMRIGHT\nnShadowIntensity\nNumeric\nShadow opacity percentage (0-100)\nnShadowSize\nNumeric\nShadow spread distance in pixels\nlBase\nLogical\nPaint the Mac-style dock base area\nlBorder\nLogical\nDraw a border around the header\nlRound\nLogical\nUse rounded corners\nlVertical\nLogical\nApply gradient vertically (default: true)\nnClrLine1\nNumeric\nBorder line 1 color\nnClrLine2\nNumeric\nBorder line 2 color\nMethods\nMethod\nDescription\nNew( oWnd, nRow, nCol, nW, nH, cText, lBorder, lRound, lBase, lVertical, ... )\nCreate a decorative title header with gradient, shadow and text\nAddText( nRow, nCol, cText, lBold, lStrike, lShadow, cAlign, oFont, nClr )\nAdd a text element to the header at the given coordinates\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ttreeitem.html", "title": "TTreeItem / TTVItem", "text": "Source:\nsource/classes/treeitem.prg\n,\nsource/classes/ttvitem.prg\nTTreeItem implements a linked-list tree node for custom tree widgets. Each node stores a prompt, level, bitmaps, action codeblock, and cargo data, and maintains prev/next/child pointers via an associated TTree object. TTVItem wraps a native Win32 TreeView item (HTREEITEM) for use with the standard Windows tree control, providing insert, expand, edit, check-box and persistence operations.\nTTreeItem — Linked-List Tree Node\nKey DATA Members\nDATA\nType\nDescription\ncPrompt\nCharacter\nNode display text\noTree\nObject\nReference to the child TTree object (children), nil if leaf\nlOpened\nLogical\nNode is expanded (children visible)\nnLevel\nNumeric\nIndentation level (0 = root)\nhBmpOpen\nHandle\nBitmap handle for expanded state\nhBmpClose\nHandle\nBitmap handle for collapsed state\nbAction\nCodeblock\nCode block executed when the node is activated\nCargo\nAny\nUser-defined data attached to the node\nMethods\nMethod\nDescription\nNew( cPrompt, nLevel, hBmpOpen, hBmpClose, bAction, uCargo, uValue )\nCreate a new tree node at the specified level\nOpen()\nExpand the node to show children\nClose()\nCollapse the node to hide children\nToggle()\nToggle between open and closed state\nAdd( cPrompt )\nAdd a sibling node after this one (linked-list insert)\nAddChild( cPrompt, lFirst )\nAdd a child node (creates or uses existing TTree)\nDelete( oRoot )\nRemove this node from the list\nMoveUp( oRoot )\nMove the node up in the list\nMoveDown( oRoot )\nMove the node down in the list\nSort( oRoot, lAsc, lRecurs )\nSort siblings by prompt, optionally recursive\nPromote()\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ttvitem.html", "title": "TTVItem", "text": "Source:\nsource/classes/ttvitem.prg\nOverview\nTTVItem class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/ttxtfile.html", "title": "TTxtFile", "text": "Source:\nsource/classes/ttxtfile.prg\nOverview\nTTxtFile class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tvbcontrol.html", "title": "TVbControl", "text": "Source:\nsource/classes/tvbcontrol.prg\nOverview\nTVbControl class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tvbxarray.html", "title": "TVbxArray", "text": "Source:\nsource/classes/tvbxarray.prg\nOverview\nTVbxArray class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tview.html", "title": "TView", "text": "Source:\nsource/classes/tview.prg\nTView is a lightweight view stub that associates a name with a set of work areas. It serves as a simple data container for organizing and referencing related database work areas under a single named view. It can be used as a building block for more complex view-management systems.\nKey DATA Members\nDATA\nType\nDescription\ncName\nCharacter\nView name identifier\naWorkAreas\nArray\nArray of associated work area references\nMethods\nMethod\nDescription\nNew( cName )\nCreate a named view with an empty work area list\nExample: Create View Object\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oView\n\n oView := TView():New( \"CustomerOrders\" )\n AAdd( oView:aWorkAreas, \"CUSTOMER\" )\n AAdd( oView:aWorkAreas, \"ORDERS\" )\n AAdd( oView:aWorkAreas, \"ITEMS\" )\n\n MsgInfo( \"View: \" + oView:cName + \" has \" + ;\n Str( Len( oView:aWorkAreas ) ) + \" work areas\" )\n\nreturn nil\nNotes\nTView is a minimal class with no methods beyond the constructor. It is intended as a data structure for organizing work area references.\nThe\naWorkAreas\narray is freely extensible; elements can be alias names, area numbers, or any user-defined identifier.\nThis class does not perform any database operations — it is purely a naming and grouping container.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tvistamenu.html", "title": "TVistaMenu", "text": "Source:\nsource/classes/vistamnu.prg\nInherits from:\nTControl\nTVistaMenu provides a modern vertical menu panel with Vista-style visual rendering.\nEach item displays text and an optional icon, with configurable highlight colors for\nthe hovered selection. The control is suitable for navigation panels and sidebar menus.\nKey DATA Members\nDATA\nType\nDescription\naItems\nArray\nArray of menu item definitions\noOver\nNumeric\nIndex of the item currently under the mouse\nnOptionFocus\nNumeric\nIndex of the currently focused item (keyboard navigation)\nnClrPaneOver\nNumeric\nBackground color of the hovered item\nnClrTextOver\nNumeric\nText color of the hovered item\nnClrBorderOver\nNumeric\nBorder color of the hovered item\nMethods\nMethod\nDescription\nNew( nRow, nCol, nW, nH, oWnd, oFont, oFont2 )\nCreate a new vista menu control\nRedefine( nId, oWnd, oFont, oFont2 )\nRedefine from a dialog resource\nAddItem( cText, cImage, bAction )\nAdd a menu item with text, image path and action\nInsertItem( n, cText, cImage, bAction )\nInsert a menu item at the specified position\nDelItem( n )\nDelete a menu item at the given position\nGoUp()\nMove keyboard focus to the previous item\nGoDown()\nMove keyboard focus to the next item\nExample: Vertical Menu with Icons\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oVMenu\n\n DEFINE WINDOW oWnd TITLE \"TVistaMenu Demo\" SIZE 400, 400\n\n @ 10, 10 VISTAMENU oVMenu ;\n OF oWnd ;\n SIZE 180, 300 ;\n FONT oWnd:oFont\n\n oVMenu:AddItem( \"&Dashboard\", \"images/dash.bmp\", { || MsgInfo( \"Dashboard\" ) } )\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tvitem.html", "title": "TVItem", "text": "Source:\nsource/classes/vitem.prg\nStandalone class (not inheriting TControl)\nTVItem represents a single item within a TVMenu panel. Each TVItem holds a text caption,\noptional bitmap/icon, action codeblock, and display properties. When created, a TVItem\nautomatically adds itself to its parent TVMenu's aItems array. TVItem supports multiple\nseparator styles, group headings, popup menus, when-clauses, and custom coloring.\nNew() Constructor\nCÓDIGO:\nTVItem():New( oParent, cText, cBmp1, cBmp2, lGroup, nClrText, nClrPane,;\n nTextAlign, nImgAlign, nHeight, nLeft, separator, nWidth,;\n lUnder, nLeftImg, nClrPane2, lVGrad, bAction, oPopup,;\n nClrPSel, nClrTSel, lMirGrad, nSteps, cToolTip,;\n nColorSep, lIcon, nTop, bWhen, nClrPSel2 )\nParameter\nType\nDescription\noParent\nTVMenu\nParent menu (required)\ncText\nCharacter\nItem caption text\ncBmp1\nCharacter/Numeric\nBitmap file path, resource name, or bitmap handle\nlGroup\nLogical\nIs a group heading (default: .f.)\nnClrText\nNumeric\nCustom text color (nil = parent default)\nnClrPane\nNumeric\nCustom background color\nnTextAlign\nCharacter\n\"LEFT\", \"CENTER\", \"RIGHT\", \"MULTILINE\"\nnImgAlign\nCharacter\n\"IMAGELEFT\" (default), \"IMAGECENTER\", \"IMAGERIGHT\"\nseparator\nCharacter\n\"LINE\", \"SEPARADOR\", \"INSET\", \"DOTDOT\"\nbAction\nCodeblock\nItem action codeblock\noPopup\nTPopup\nAssociated popup menu\nbWhen\nCodeblock\nWhen clause (returns .t. to enable)\nMethods\nMethod\nReturns\nDescription\nSetImage(cBmp, lIcon)\nnil\nSet image from file, resource, object, or numeric handle\nSetBold(lBold)\nLogical\nToggle bold text\nSetDialog(cResName)\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tvmenu.html", "title": "TVMenu", "text": "Source:\nsource/classes/VMenu.prg\nInherits from:\nTControl\nTVMenu is an ExplorerBar-style panel control that displays a list of TVItem objects.\nIt supports a collapsible title header, open/close animation, multiple selection styles\n(SOLID, INSET, XBOX, BUMP, ETCHED, RAISED, UNDERLINE), gradient backgrounds, and\ntheme-aware rendering. TVMenu is the parent container for TVItem objects, which are\nautomatically added to the menu's aItems array when created.\nTC5ImgList\n(used by\noImageList\n) lives in\nsource/classes/tc5imglst.prg\nand is linked from\nFiveH.lib\n(32-bit) and, since 26.08, from\nFive64.a\n/\nFivexh64.a\n(FWH64). Sample:\nsamples/test/vmenu_test.prg\n(\nbuild_new.bat vmenu_test hb64\n).\nNew() Constructor\nCÓDIGO:\nTVMenu():New( nTop, nLeft, nWidth, nHeight, oWnd, bAction, nClrText, nClrPane,;\n oFont, lBorder, nClrBorder, nHItem, cTextAlign, under, nMargen,;\n nClrPSel, nSpeed, selmode, bChange, nClrTSel, oAttach,;\n nClrTOver, nClrPOver, nClrPOver2, nClrPSel2,;\n lVGradSel, lMGradSel, nClrPane2, cWaterMark )\nParameter\nType\nDescription\nnTop, nLeft\nNumeric\nPosition in pixels\nnWidth, nHeight\nNumeric\nSize in pixels\noWnd\nTWindow\nParent window\nbAction\nCodeblock\nDefault action for items\nnClrText\nNumeric\nText color (default: white)\nnClrPane\nNumeric\nBackground color (default: light gray)\noFont\nTFont\nFont for item text\nlBorder\nLogical\nShow border (default: .f.)\nnHItem\nNumeric\nMinimum item height in pixels\ncTextAlign\nCharacter\n\"LEFT\", \"CENTER\", \"RIGHT\", \"MULTILINE\"\nunder\nCharacter\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tweekview.html", "title": "TWeekView", "text": "Source:\nsource/classes/tweekview.prg\nOverview\nTWeekView class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/twhispercpp.html", "title": "TWhisperCpp", "text": "Source:\nsource/classes/twhispercpp.prg\nOverview\nTWhisperCpp class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/txbrcode.html", "title": "TXBrCode", "text": "Source:\nsource/classes/xbrcode.prg\nInherits from:\nTXBrowse\n+\nTXBrColCode\nTXBrCode is a code-generation tool that produces FiveWin PRG source code from a live TXBrowse configuration. It inspects the browse definition, including columns, data sources, headers, footers, and button bars, and outputs ready-to-compile Harbour code in multiple coding styles.\nMethods\nMethod\nDescription\nPrgCode()\nReturn an array of 4 strings representing the generated code segments: (1) main window/browse setup, (2) column definitions, (3) button bar, (4) activation code\nPrgCodeMain()\nGenerate the main window and browse definition code block\nPrgCodeOpenData()\nGenerate the data source opening code block\nPrgCodeBtnBar()\nGenerate the button bar definition code block\nBrwDataCode( lOops )\nGenerate browse column definitions with optional error-handling wrapper\nRptCode()\nGenerate a report definition based on the browse layout\nTXBrColCode\nTXBrColCode extends column code generation with multiple style options and the ability to reuse column definitions across different output formats.\nMethod\nDescription\nPrgCode( nStyle, lSameCols )\nReturn a character string with column PRG code in the specified style (1=command syntax, 2=WITH_OBJECT syntax, 3=OOP syntax). Set\nlSameCols\nto reuse column definitions from a previous call\nExample: Generate Browse PRG\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oBrw, oCode\n local aCode\n\n // ... browse definition ...\n\n oCode := TXBrCode() // Same object as oBrw\n // or create an independent code generator\n\n aCode := oCode:PrgCode()\n\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/tyacc.html", "title": "TYacc + TLex", "text": "Sources:\nsource/classes/tyacc.prg\n,\nsource/classes/tlex.prg\nStandalone classes (TYacc, TLex)\nTYacc and TLex implement a complete LALR(1) parser generator and lexical analyzer in pure Harbour. TYacc performs shift-reduce parsing using a generated state machine, while TLex handles tokenization by matching input against a set of token patterns. Together they enable parsing of structured languages, expressions, and configuration files.\nTYacc Key DATA Members\nDATA\nType\nDescription\noLex\nObject\nReference to the associated TLex tokenizer\nlDebug\nLogical\nEnable debug trace of parser states and transitions\nnToken\nNumeric\nCurrent look-ahead token identifier\nnState\nNumeric\nCurrent parser state number\naStates / aValues\nArray\nParser state stack and semantic value stack\nbShift / bReduce\nCode block\nCallbacks executed on shift and reduce actions\nTYacc Methods\nMethod\nDescription\nNew( oLex )\nCreate a parser associated with the given lexer object\nParse( cText )\nParse the input text and return the result value\nShift( n )\nShift the next state onto the parser stack\nReduce( n )\nReduce by grammar rule number\nn\nAccept()\nSignal successful parse completion\nProdValue( n )\nRetrieve the semantic value of a production symbol at position\nn\nTLex\nTLex inherits from\nTFile\nand provides tokenization services: it reads input text and returns a stream of tokens with associated semantic values.\nDATA\nType\nDescription\naTokens\nArray\nArray of token pattern strings\naIds\nArray\nArray of numeric token IDs corresponding to each pattern\ncToken\nCharacter\nCurrent matched token text\nuValue\nVarious\n […]" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/uvalblank.html", "title": "uValBlank()", "text": "Source:\nsource/function/uvalblank.prg\nDescription\nBlank value check\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/vrd.html", "title": "VRD", "text": "Source:\nsource/classes/vrd.prg\nOverview\nVRD class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/vrdbarcode.html", "title": "VRDBarcode", "text": "Source:\nsource/classes/vrdbarcode.prg\nOverview\nVRDBarcode class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/vrditem.html", "title": "VRDItem", "text": "Source:\nsource/classes/vrditem.prg\nOverview\nVRDItem class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list." }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/waitseconds.html", "title": "WaitSeconds()", "text": "Source:\nsource/function/waitseconds.prg\nDescription\nWait seconds\nSee Also\nutilities/ttimer" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/wqout.html", "title": "WQout()", "text": "Source:\nsource/function/wqout.prg\nDescription\nWindows console out\nSee Also\nreference/functions" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/xbrgetdate.html", "title": "XbrGetDate()", "text": "Source:\nsource/function/xbrgetdate.prg\nDescription\nBrowse get date\nSee Also\nui/txbrowse" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/xbrowse.html", "title": "XBrowse()", "text": "Source:\nsource/function/xbrowse.prg\nDescription\nXBrowse function\nSee Also\nui/txbrowse" }, { "src": "FWH docs · en/reference", "url": "https://fivetechsoft.github.io/FWH_docs/en/reference/xpadr.html", "title": "xPadR()", "text": "Source:\nsource/function/xpadr.prg\nDescription\nPad right extended\nSee Also\nreference/functions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/remoteview.html", "title": "Remote View", "text": "Sources:\nsource/internal/remoteview/remoteviewfw.c\n,\nserver.c\n,\ncapture.c\nRemote View lets any browser on the LAN see and control a live FWH window.\nThe window is captured in real time by GDI+, streamed as JPEG frames over\na WebSocket, and drawn on an HTML5 canvas. Mouse clicks, movement, wheel,\nand keyboard input flow back from the browser to the real window via\nPostMessage\n.\nQuick Start\nStart a server in\nON INIT\nand stop it in\nVALID\n.\nPoint any browser on the LAN to\nhttp://:8080\n:\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oWnd, oSay, oBtn\n local nClicks := 0\n\n DEFINE WINDOW oWnd TITLE \"FWH Remote View\" ;\n FROM 4, 4 TO 22, 60\n\n @ 1, 2 SAY oSay PROMPT \"Open http://localhost:8080\" ;\n OF oWnd SIZE 300, 20\n\n @ 3, 2 BUTTON oBtn PROMPT \"Click (local or remote)\" ;\n OF oWnd SIZE 160, 30 ;\n ACTION ( nClicks++, oSay:SetText( \"Clicks: \" + Str( nClicks, 4 ) ) )\n\n ACTIVATE WINDOW oWnd ;\n ON INIT ( RemoteViewStart( oWnd:hWnd, 8080 ), ;\n oWnd:SetText( \"FWH Remote View - http://localhost:8080\" ) ) ;\n VALID ( RemoteViewStop(), .T. )\n\nreturn nil\nThe browser shows the window as-is — buttons, SAYs, GETs, browses, menus, all\nwork. Clicks on the canvas become real clicks on the real window.\nArchitecture\n[diagrama]\nComponent\nFile\nRole\nHarbour binding\nremoteviewfw.c\nExposes\nRemoteViewStart/Stop/Serve/StopAll/SetOffset\nto PRG\nWebSocket server\nserver.c\nSingle-threaded non-blocking Winsock server, client HTML/JS, binary protocol\nCapture engine\ncapture.c\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tai.html", "title": "AI Classes", "text": "Sources:\nsource/classes/topenai.prg\n,\nsource/classes/tdeepseek.prg\n,\nsource/classes/tgemini.prg\n,\nsource/classes/tollama.prg\n,\nsource/classes/topencode.prg\nFiveWin provides a unified set of AI/LLM classes that integrate with popular cloud AI\nproviders and local models. All classes follow the same basic pattern: instantiate with\nan API key (or model name for local), send a prompt, and extract the response. They use\nHarbour's\nhb_curl\nlibrary for HTTPS communication with the respective API endpoints.\nFor the complete AI documentation including all class members and extended examples, see\nTOpenAI / TChatGPT\n— that page documents every AI class\nwith full reference tables, code samples, and a comparison guide.\nCommon Pattern\nAll AI classes share this basic workflow:\nCÓDIGO:\n// 1. Create instance with API key (or model name for local)\noAI := TSomeAI():New( cApiKey )\n\n// 2. Send a prompt\noAI:Send( \"Your question here\" )\n\n// 3. Extract the response text\ncAnswer := oAI:GetValue()\n\n// 4. Clean up\noAI:End()\nClass Reference\nTOpenAI\nSource:\nsource/classes/topenai.prg\nOpenAI ChatGPT integration. Supports text, vision (image analysis), and streaming responses.\nDATA\nDefault\nDescription\ncKey\nOPENAI_API_KEY env\nOpenAI API key\ncModel\ngpt-4o-mini\nModel name (e.g. gpt-4o, gpt-4o-mini)\nnTemperature\n0.5\nSampling temperature (0.0 to 2.0)\ncResponse\nRaw JSON response from API\nMethod\nParameters\nDescription\nNew()\ncKey, cModel\nConstructor. Reads env var if cKey empty.\nSend()\ncPrompt\nSend text prompt, return raw JSON\nSendStream()\ncPrompt, bCallback\nStreaming response via callback\nSendImage()\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tchatagent.html", "title": "TChatAgent", "text": "Source:\nsource/classes/tchatagent.prg\nOverview\nTChatAgent class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tchatgpt.html", "title": "TChatgpt", "text": "Source:\nsource/classes/tchatgpt.prg\nOverview\nTChatgpt class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tctrlsocket.html", "title": "TCtrlSocket", "text": "Source:\nsource/classes/tctrsock.prg\nStandalone class\nTCtrlSocket implements a multiplexed socket server that manages multiple client connections through a request queue. Instead of dedicating one thread per client, it maintains an array of pending requests (\naRequests\n) and serves them in sequence. Each request entry stores the socket object and optional callback blocks for connection end (\nabEnd\n) and processing chance (\nabChance\n). The class tracks sent byte counts (\nanSended\n) and the server running state (\nlServerWorking\n).\nKey DATA Members\nDATA\nType\nDescription\naRequests\nArray\nArray of pending request objects (socket + callbacks)\nabEnd\nArray\nArray of codeblocks evaluated when each request connection ends\nabChance\nArray\nArray of codeblocks evaluated when each request gets processing time\nanSended\nArray\nArray of byte counts sent for each request\nlServerWorking\nLogical\n.T. when the server is actively serving requests\nMethods\nMethod\nDescription\nNew()\nCreate a new multiplexed socket controller\nAddRequest( oSocket, bEnd, bChance )\nQueue a socket with optional end and chance callbacks\nServeClients()\nProcess all pending requests in round-robin fashion\nExample: 2-Socket Multiplexed Server\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oCtrl, oSocket1, oSocket2\n\n // Create the multiplexed socket controller\n oCtrl := TCtrlSocket():New()\n\n // Create two client sockets\n oSocket1 := TSocket():New()\n oSocket2 := TSocket():New()\n\n // Add requests with callbacks\n oCtrl:AddRequest( oSocket1, ;\n { || QOut( \"Socket 1 ended\" ) }, ;\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tddeclient.html", "title": "TDdeClient", "text": "Source:\nsource/classes/tddeclient.prg\nOverview\nTDdeClient class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tddemlclient.html", "title": "TDDEMLClient", "text": "Source:\nsource/classes/tddemlclient.prg\nOverview\nTDDEMLClient class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tddemlserver.html", "title": "TDDEMLServer", "text": "Source:\nsource/classes/tddemlserver.prg\nOverview\nTDDEMLServer class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tddeserver.html", "title": "TDdeServer", "text": "Source:\nsource/classes/tddeserver.prg\nOverview\nTDdeServer class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tdeepseek.html", "title": "TDeepSeek", "text": "Source:\nsource/classes/tdeepseek.prg\nTDeepSeek is FiveWin's client for the\nDeepSeek API\n. DeepSeek is known for its\nstrong coding and reasoning capabilities, making it an excellent choice for code\ngeneration, analysis, and logic tasks. The class provides a simple chat completion\ninterface using Harbour's\nhb_curl\nlibrary. It supports the\ndeepseek-chat\nand\ndeepseek-reasoner\nmodels.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncKey\nCharacter\n\"\"\nDeepSeek API key. Reads\nDEEPSEEK_API_KEY\nenv var if empty.\ncModel\nCharacter\n\"deepseek-chat\"\nModel:\n\"deepseek-chat\"\nor\n\"deepseek-reasoner\"\ncResponse\nCharacter\nRaw JSON response from the API\ncUrl\nCharacter\nAPI endpoint URL (auto-set to DeepSeek endpoint)\nhCurl\nHandle\nlibcurl easy handle\nnError\nNumeric\n0\ncurl error code (\nHB_CURLE_OK\n= 0 = success)\nnHttpCode\nNumeric\n0\nHTTP response status code\nMethods\nMethod\nDescription\nNew( cKey, cModel )\nCreate a TDeepSeek instance. If\ncKey\nis empty, reads\nDEEPSEEK_API_KEY\nfrom the environment. Sets the API endpoint and initializes a libcurl handle.\nSend( cPrompt )\nSend a text prompt to the DeepSeek API. Stores the raw JSON response in\ncResponse\n.\nGetValue()\nExtract the text response from the JSON in\ncResponse\n. Navigates\nchoices[1].message.content\non success, or returns the error message on failure.\nEnd()\nClean up the libcurl handle.\nExample: Chat Completions\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oAI := TDeepSeek():New( \"sk-deepseek-key\" )\n local cAnswer\n\n // Send a prompt\n oAI:Send( \"Write a Harbour function to calculate the Fibonacci sequence\" )\n\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tembeddings.html", "title": "TEmbeddings", "text": "Source:\nsource/classes/tembeddings.prg\nTEmbeddings is FiveWin's class for generating and comparing text embeddings (vector\nrepresentations of text). It supports both\nHuggingFace\n(via the Inference API\nfeature-extraction pipeline) and\nOpenAI\nembeddings API. Embeddings convert text\ninto high-dimensional vectors that capture semantic meaning, enabling operations like\nsemantic similarity search, clustering, and classification.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncModel\nCharacter\n\"sentence-transformers/all-MiniLM-L6-v2\"\nEmbeddings model name. HuggingFace model ID or OpenAI embedding model.\ncKey\nCharacter\nAPI key. Reads\nHF_API_KEY\nfirst, then\nOPENAI_API_KEY\n.\naEmbeddings\nArray\nThe embedding vector returned by the API (array of numeric values)\ncResponse\nCharacter\nRaw JSON response from the API\ncUrl\nCharacter\nAPI endpoint URL (auto-set based on model prefix)\nnError\nNumeric\n0\ncurl error code\nnHttpCode\nNumeric\n0\nHTTP response status code\nMethods\nMethod\nDescription\nNew( cModel, cKey )\nCreate a TEmbeddings instance. Defaults to HuggingFace MiniLM model. Reads API key from\nHF_API_KEY\nthen\nOPENAI_API_KEY\nenv vars if not provided.\nGetEmbeddings( cText )\nGenerate embeddings for the given text. Stores the vector in\naEmbeddings\n. Returns the raw vector array.\nDistance( aVector, lCosine )\nCompute distance between\naEmbeddings\nand another vector. Default uses cosine distance. Set\nlCosine := .F.\nfor Euclidean distance.\nDistanceFrom( oEmbeddings )\nCompute distance to another TEmbeddings object by comparing their\naEmbeddings\nvectors.\nEnd()\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tftp.html", "title": "TFtpClient / TFtpSession", "text": "Source:\nsource/classes/tftpcli.prg\n(TFtpClient),\nsource/classes/tftpsess.prg\n(TFtpSession)\nFiveWin provides FTP client capabilities through\nTFtpClient\n, which implements\nthe FTP protocol for file transfer operations. It supports uploading (STOR), downloading (RETR),\ndirectory navigation (CWD, PWD), directory creation (MKD), file deletion (DELE), and\nbinary/text transfer modes (TYPE).\nTFtpSession\nis a lightweight class used by\nthe internal FTP server to track connected client sessions.\nTFtpClient Class\nDATA Members\nDATA\nType\nDescription\ncIPServer\nCharacter\nFTP server hostname or IP address\nnPort\nNumeric\nFTP server port (default 21)\nUser\nCharacter\nFTP username\nPass\nCharacter\nFTP password\noSocket\nTSocket\nControl connection socket\noDataSocket\nTSocket\nData connection socket for file transfers\nnStatus\nNumeric\nSession state (CONNECTING, IDENTIFY1, IDENTIFY2)\nAllOk\nLogical\nSet to .T. after successful login\nSrvLastMsg\nCharacter\nLast server response message\nlWaiting\nLogical\nBusy flag during synchronous command execution\nlTimeOut\nLogical\nSet to .T. if a command times out (30 seconds)\nnSended\nNumeric\nBytes sent counter\nbConnecting\nBlock\nCallback during connection\nbConnected\nBlock\nCallback when connected\nbDone\nBlock\nCallback when operation completes\nMethods\nMethod\nDescription\nNew( cIPServer, nPort, User, Pass )\nCreate FTP client and connect to server. nPort defaults to 21.\nPWD()\nPrint working directory. Returns server response.\nCWD( cDirName )\nChange working directory on the server\nMKD( cDirName )\nCreate a directory on the server\nDELE( cFileName )\nDelete a file from the server\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tftpclient.html", "title": "TFtpClient", "text": "Source:\nsource/classes/tftpclient.prg\nOverview\nTFtpClient class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tftpfile.html", "title": "TFTPFile", "text": "Source:\nsource/classes/tftpfile.prg\nOverview\nTFTPFile class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tftpserver.html", "title": "TFtpServer", "text": "Source:\nsource/classes/tftpserv.prg\nStandalone class\nTFtpServer implements a basic FTP server using TSocket. It listens on port 21 and handles standard FTP commands (USER, PASS, STOR, RETR, LIST, CWD, PWD, QUIT). Supports anonymous access and serves files from a configurable root directory.\nKey DATA Members\nDATA\nType\nDescription\noSocket\nObject\nMain listening TSocket\ncRootDir\nCharacter\nDefault FTP directory (default \"ftp\")\nnPort\nNumeric\nListening port (default 21)\nlDebug\nLogical\nEnable debug logging to\ncLogFile\nMethods\nMethod\nDescription\nNew( nPort )\nCreate server; creates root dir if missing\nActivate()\nStart listening for clients\nEnd()\nStop the server\nOnAccept()\nHandle new client connections\nOnRead( oSocket )\nProcess FTP commands from a client\nTFTP\nSource:\nsource/classes/tftp.prg\nFTP client via WinINet. Supports directory listing, file deletion, rename, and directory management.\nMethod\nDescription\nNew( cFTPSite, oInternet, cUser, cPass )\nConnect to an FTP site\nDirectory( cMask )\nReturn array of remote file records\nDeleteFile( cFile )\nDelete a remote file\nRenameFile( cOld, cNew )\nRename a remote file\nTFTPFile\nSource:\nsource/classes/tftpfile.prg\nManages individual remote file transfers. Supports ASCII and binary modes.\nMethod\nDescription\nNew( cFileName, oFTP )\nCreate a file object\nOpenRead() / OpenWrite()\nOpen for reading or writing\nRead( nBytes ) / Write( cData )\nRead or write data\nSeek( nBytes, nFrom )\nSeek to a position\nEnd()\nClose the file handle\nExample: Start FTP Server\nCÓDIGO:\n#include \"FiveWin.ch\"\nfunction Main()\n local oServer\n oServer := TFtpServer():New( 21 )\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tftpsession.html", "title": "TFtpSession", "text": "Source:\nsource/classes/tftpsession.prg\nOverview\nTFtpSession class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tgemini.html", "title": "TGemini (Google Gemini)", "text": "Source:\nsource/classes/tgemini.prg\nTGemini is FiveWin's client for the\nGoogle Gemini API\n. It provides access to Google's\nGemini family of models with support for text chat, streaming responses, image and file analysis\n(PNG, JPEG, PDF, TXT, CSV, PRG), and file uploads to Google's file service. The class uses Harbour's\nhb_curl\nlibrary for HTTPS communication. API keys can be passed explicitly or read from the\nGEMINI_API_KEY\nenvironment variable.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncKey\nCharacter\n\"\"\nGemini API key. Reads\nGEMINI_API_KEY\nenv var if empty.\ncModel\nCharacter\n\"gemini-2.0-flash\"\nGemini model identifier\ncResponse\nCharacter\nRaw JSON response from the API\ncUrl\nCharacter\n\"https://generativelanguage.googleapis.com/v1beta/models\"\nAPI base endpoint\ncUploadUrl\nCharacter\n\"https://generativelanguage.googleapis.com/upload/v1beta/files\"\nFile upload endpoint\nhCurl\nHandle\nlibcurl easy handle\nnError\nNumeric\n0\ncurl error code (0 =\nHB_CURLE_OK\n)\nnHttpCode\nNumeric\n0\nHTTP response status code\nnTemperature\nNumeric\n0\nSampling temperature (0.0 - 1.0)\nMethods\nMethod\nDescription\nNew( cKey, cModel )\nCreate a TGemini instance. Reads\nGEMINI_API_KEY\nfrom environment if\ncKey\nis empty. Initializes the libcurl handle.\nSend( uContent, [cPrompt], [bCallback] )\nCore method accepting flexible input.\nuContent\ncan be a text string, a file path, or an array of file paths.\ncPrompt\nsupplies optional text alongside files.\nbCallback\nenables streaming via codeblock. Returns raw JSON.\nGetValue()\nExtract the response text from\ncResponse\nJSON. Navigates path\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tgrok.html", "title": "TGrok (xAI)", "text": "Source:\nsource/classes/tgrok.prg\nTGrok is FiveWin's client for the\nxAI Grok API\n. It provides access to Grok\nlanguage models with support for text chat, streaming responses, and image analysis\n(including both local file uploads and image URLs). The class uses Harbour's\nhb_curl\nlibrary for HTTPS communication with the xAI API endpoint. API keys can be passed\nexplicitly or read from the\nXAI_API_KEY\nenvironment variable.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncKey\nCharacter\n\"\"\nxAI API key. Reads\nXAI_API_KEY\nenv var if empty.\ncModel\nCharacter\n\"grok-3-latest\"\nGrok model to use\ncPrompt\nCharacter\nLast prompt sent to the API\ncResponse\nCharacter\nRaw JSON response from the API\ncUrl\nCharacter\nAPI endpoint URL (auto-set to xAI endpoint)\nhCurl\nHandle\nlibcurl easy handle\nnError\nNumeric\n0\ncurl error code (\nHB_CURLE_OK\n= 0 = success)\nnHttpCode\nNumeric\n0\nHTTP response status code\nnTemperature\nNumeric\n0.5\nSampling temperature (0.0 - 2.0)\nMethods\nMethod\nDescription\nNew( cKey, cModel )\nCreate a TGrok instance. If\ncKey\nis empty, reads\nXAI_API_KEY\nfrom the environment. Initializes the libcurl handle.\nSend( cPrompt )\nSend a text prompt to the Grok API. Stores the raw JSON response in\ncResponse\n.\nSendStream( cPrompt, bCallback )\nSend a prompt with streaming enabled. The\nbCallback\ncodeblock receives each data chunk as it arrives.\nSendImage( cImageFile, cPrompt )\nSend a local image file with a text prompt for vision analysis. Encodes the image as base64.\nSendImageURL( cImageUrl, cPrompt )\nSend an image URL with a text prompt for vision analysis.\nGetValue()\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tinstinct.html", "title": "TInstinct", "text": "source/classes/tinstinct.prg\nPrototype email transport for an application to talk to its user's own Instinct. This is not an official API. A separately configured receiver is required; sending email does not authorize actions.\nConfiguration\ncFrom\n: Application sender mailbox.\ncToken\n: Shared secret agreed through a secure means; keep it out of source code.\ncTo\n: The user's assistant mailbox. Ask the assistant for its address; there is no default destination.\nOnly a local relay (127.0.0.1 or localhost) is accepted. The external hop must use TLS and validate certificates. Default ports are SMTP 25 and POP 110; override nSmtpPort and nPopPort as needed. Set cPopUser/cPopPassword for a dedicated reply mailbox.\nExamples\nCÓDIGO:\noInstinct := TInstinct():New( cFrom, cToken, cTo )\nif oInstinct:Send( \"Hello Instinct\" )\n cAnswer := oInstinct:Answer( 10 )\nendif\n\n// Register once, then call Pump() from the application's timer:\noInstinct:OnAnswer( {| cText, cId | MsgInfo( cText, cId ) } )\noInstinct:Pump()\nAnswer() waits and blocks. OnAnswer() registers a callback; Pump() polls once from a timer, but the connection can take up to nTimeout. It does not start a background thread.\nsamples/instinct/tinstinct.prg\n:\nINSTINCT_FROM\n,\nINSTINCT_TOKEN\n,\nINSTINCT_TO\n,\nINSTINCT_POP_USER\n,\nINSTINCT_POP_PASSWORD\n.\nState and limits\ncError\n: last error.\ncLog\n: activity log.\nSaveLog( cFile )\n: save the log.\nSend( cText, cId )\n: .T. means relay acceptance, not delivery. Do not retry blindly after a final timeout.\nParseReply( cRaw, cExpectedId )\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tinternet.html", "title": "TInternet", "text": "Source:\nsource/classes/internet.prg\nInherits from: none (base class)\nTInternet is the base class for WinInet-based internet access in FWH. It manages a global WinInet session handle and provides a factory method for creating TFTP connections. The class uses a reference-counted singleton pattern for the WinINet session handle.\nKey DATA Members\nDATA\nType\nDescription\nhWinINet\nHandle\n(Class data) Handle to the opened WinINet.dll\nhSession\nHandle\n(Class data) Handle of the current WinINet session (InternetOpen)\nnCount\nNumeric\n(Class data) Reference count of active TInternet objects\naFTPs\nArray\n(Class data) Array of all TFTP objects currently in use\nMethods\nMethod\nDescription\nNew()\nCreate a new TInternet object; increments the session reference count and opens the WinINet session on first use\nEnd()\nRelease the internet object; decrements the reference count and closes the WinINet session when the count reaches zero\nFTP( cFTPSite, cUserName, cPassword )\nCreate and return a new TFTP object connected to the specified FTP site\nExample: FTP File Upload via WinInet\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oInet := TInternet():New()\n local oFtp := oInet:FTP( \"ftp.example.com\", \"user\", \"pass\" )\n\n if oFtp:hFTP != nil\n oFtp:SetCurrentDirectory( \"/uploads\" )\n FtpPutFile( oFtp:hFTP, \"c:\\data\\report.txt\", \"report.txt\" )\n MsgInfo( \"File uploaded successfully\" )\n else\n MsgAlert( \"FTP connection failed\" )\n endif\n\n oFtp:End()\n oInet:End()\n\nreturn nil\nNotes\nTInternet uses a class-data singleton pattern: the\nhSession\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tkimi.html", "title": "TKimi (Moonshot)", "text": "Source:\nsource/classes/tkimi.prg\nTKimi is FiveWin's client for the\nMoonshot Kimi API\n. It features a unified\nSend()\nmethod that automatically detects the input type: plain text, local image file,\nimage URL, or streaming request. This design simplifies integration by eliminating the\nneed to call different methods for different input types. Kimi models offer strong\nmultilingual capabilities with context windows from 8K to 128K tokens.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncKey\nCharacter\n\"\"\nMoonshot API key. Reads\nKIMI_API_KEY\nenv var if empty.\ncModel\nCharacter\n\"moonshot-v1-8k\"\nModel name:\nmoonshot-v1-8k\n,\nmoonshot-v1-32k\n, or\nmoonshot-v1-128k\ncPrompt\nCharacter\nLast prompt sent to the API\ncResponse\nCharacter\nRaw JSON response from the API\ncUrl\nCharacter\nAPI endpoint URL (auto-set to Moonshot endpoint)\nhCurl\nHandle\nlibcurl easy handle\nnError\nNumeric\n0\ncurl error code (0 = success)\nnHttpCode\nNumeric\n0\nHTTP response status code\nnTemperature\nNumeric\n0.5\nSampling temperature (0.0 - 2.0)\nMethods\nMethod\nDescription\nNew( cKey, cModel )\nCreate a TKimi instance. If\ncKey\nis empty, reads\nKIMI_API_KEY\nfrom the environment.\nSend( xInput, uOptional )\nUnified send method. Auto-detects the input type: plain text string, local file path (sends as image), HTTP URL (sends as image URL), or if the second parameter is a codeblock (streaming).\nGetValue()\nExtract the text response from the JSON in\ncResponse\n. Navigates\nchoices[1].message.content\n.\nEnd()\nClean up the libcurl handle.\nExample: Plain Text Prompt\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tmail.html", "title": "TMail", "text": "Source:\nsource/classes/tmail.prg\nTMail is FiveWin's MAPI (Messaging API) email class. It uses the Windows Simple MAPI\ninterface to send emails through the default email client (such as Microsoft Outlook,\nWindows Mail, or any MAPI-compliant email application). TMail supports subject, body\ntext, multiple recipients, file attachments, read receipts, and originator information.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncSubject\nCharacter\n\"\"\nEmail subject line\ncNoteText\nCharacter\n\"\"\nEmail body text\ncMsgType\nCharacter\nMessage type (optional, e.g. \"IPM.Note\")\ncConversationID\nCharacter\n\"\"\nConversation thread identifier\ndDate\nDate\nDate()\nMessage date\ncTime\nCharacter\nTime()\nMessage time\nlReceipt\nLogical\n.F.\nRequest a read receipt\nlFromUser\nLogical\n.T.\nPrompt user before sending\naOrigin\nArray\n{}\nOriginator address information\naRecipients\nArray\n{}\nArray of recipients; each item is\n{ cName [, cAddress ] }\naFiles\nArray\n{}\nArray of file paths to attach\nnRetCode\nNumeric\n0\nReturn code from MAPISendMail (0 = success)\nMethods\nMethod\nDescription\nNew( cSubject, cNoteText, cMsgType, cConversationID, dDate, cTime, lReceipt, lFromUser, aOrigin, aRecipients, aFiles )\nCreate a new mail message with all optional parameters. Defaults: empty subject, empty body, today's date, current time, no receipt, prompt user.\nActivate()\nSend the email via MAPI. Calls\nMAPISendMail()\nwith all configured properties. Stores the return code in\nnRetCode\n.\nEnd()\nLog off from the MAPI session. Calls\nMAPILogOff()\n.\nExample: Send Email with Attachments\nCÓDIGO:\n#include \"FiveWin.ch\"\n\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tneuralnet.html", "title": "TNeuralNetwork", "text": "Source:\nsource/classes/tneuralnet.prg\nTNeuralNetwork is FiveWin's feedforward neural network implemented in pure Harbour.\nIt provides a multi-layer perceptron (MLP) with backpropagation training. The network\nconsists of three layer types: an input layer, one or more hidden layers, and an output\nlayer. Each neuron uses the sigmoid activation function. The class is ideal for simple\npattern recognition tasks such as the XOR problem.\nArchitecture\n[diagrama]\nKey DATA Members\nTNeuralNetwork\nDATA\nType\nDefault\nDescription\noInputLayer\nObject\nTNeuralLayer for the input layer\naHiddenLayers\nArray\n{}\nArray of TNeuralLayer objects (one or more hidden layers)\noOutputLayer\nObject\nTNeuralLayer for the output layer\nnLearningRate\nNumeric\n0.1\nLearning rate for backpropagation weight updates\nTNeuralLayer\nDATA\nType\nDefault\nDescription\naNeurons\nArray\n{}\nArray of TNeuron objects in this layer\nTNeuron\nDATA\nType\nDefault\nDescription\nnBias\nNumeric\nhb_Random()\nBias term for this neuron\naWeights\nArray\nArray of connection weights from the previous layer, initialized randomly\nnValue\nNumeric\nCurrent activation value after forward propagation\nnDeltaError\nNumeric\nError gradient computed during backpropagation\nMethods\nMethod\nDescription\nNew( nInputs, aHiddenLayers, nOutputs )\nCreate a neural network with\nnInputs\ninput neurons, an array of hidden layer sizes (e.g.\n{ 4, 3 }\nfor two hidden layers), and\nnOutputs\noutput neurons.\nLearn( aInputs, aOutputs, lDebug )\nTrain the network on one sample: runs forward propagation, then backpropagation to adjust weights and biases.\nPropagation( aInputs )\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tneuralnetwork.html", "title": "TNeuralNetwork", "text": "Source:\nsource/classes/tneuralnetwork.prg\nOverview\nTNeuralNetwork class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tnewsserver.html", "title": "TNewsServer / TNewsInstance", "text": "Sources:\nsource/classes/tnewssrv.prg\n,\nsource/classes/tnewsins.prg\nTNewsServer standalone | TNewsInstance helper\nTNewsServer implements an NNTP (Network News Transfer Protocol) news server on port 119. It is built on TSocket and uses DBF/CDX files to store newsgroups and articles. TNewsInstance handles each connected client session, parsing NNTP commands and serving article data.\nTNewsServer\nKey DATA Members\nDATA\nType\nDescription\noTimer\nObject\nTimer for periodic client task processing\noSocket\nObject\nListener socket bound to port 119\naInstances\nArray\nArray of TNewsInstance objects for active clients\ncDefPath\nCharacter\nDefault data directory for DBF/CDX files\nlDebug\nLogical\nEnable debug logging to cLogFile\nMethods\nMethod\nDescription\nNew( oWnd, cPath )\nCreate server; creates Groups.dbf and indexes in cPath\nActivate()\nStart listening on port 119 for incoming connections\nEnd()\nStop timer, close socket, and terminate all client instances\nTNewsInstance\nKey DATA Members\nDATA\nType\nDescription\noSocket\nObject\nClient socket for this NNTP session\noServer\nObject\nParent TNewsServer reference\ncGroup\nCharacter\nCurrently selected newsgroup name\nlPostAllow\nLogical\nWhether posting is allowed\nNNTP Commands Implemented\nMethod\nNNTP Command\nDescription\nArticle()\nARTICLE\nRetrieve article head and/or body\nHead()\nHEAD\nRetrieve article header only\nBody()\nBODY\nRetrieve article body only\nGroup()\nGROUP\nSelect a newsgroup\nList()\nLIST\nList available newsgroups\nListGroup()\nLISTGROUP\nList article numbers in current group\nPost()\nPOST\nBegin posting a new article\nQuit()\nQUIT\nEnd the NNTP session\nNewGroups()\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/toauth.html", "title": "OAuth2 Email: TOAuth, TGmail, TOutlookMail", "text": "Sources:\nsource/classes/oauth.prg\n,\nsource/classes/gmail.prg\n,\nsource/classes/outlookmail.prg\nFiveWin provides OAuth2 email support for Gmail (TGmail) and Outlook/Office 365 (TOutlookMail) through a common class hierarchy.\nTOAuth\nhandles authentication, token management, and MIME message construction.\nTGmail\nimplements the Gmail REST API,\nTOutlookMail\nuses Microsoft Graph. All network communication uses\nlibcurl\n; the interactive login uses\nTWebView2\n.\nOAuth2 Authentication Flow\n[diagrama]\nTOAuth: Base Class\nTOAuth provides the core OAuth2 workflow and MIME multipart construction. It manages client credentials, the local HTTP server for redirect capture, and token lifecycle including automatic refresh.\nDATA\nType\nDescription\ncClientId\nCharacter\nOAuth2 client ID from provider\ncClientSecret\nCharacter\nOAuth2 client secret\ncRedirectUri\nCharacter\nRedirect URI (defaults to\nhttp://localhost:2025\n)\ncAccessToken\nCharacter\nCurrent access token\ncRefreshToken\nCharacter\nPersistent refresh token\nMethod\nDescription\nGetAuthCode()\nOpens WebView2, navigates to provider auth URL, captures authorization code via local THttpServer\nGetToken()\nExchanges authorization code for access and refresh tokens via POST to /token endpoint\nRefreshToken()\nUses refresh_token to obtain a new access_token when the current one expires\nmimeMultipart(cTo,cSubj,cBody,aAttach)\nBuilds an RFC-compliant MIME multipart message with base64-encoded attachments\ngetFileMime(cPath)\nReturns MIME type string for a given file extension (lookup table for jpg, png, pdf, etc.)\nTGmail: Google Gmail API\nMethod\nDescription\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tollama.html", "title": "TOLlama (Ollama / Local LLM)", "text": "Source:\nsource/classes/tollama.prg\nTOLlama is FiveWin's client for the\nOllama API\n, enabling interaction with locally-hosted\nLLMs via Ollama's REST API (default:\nhttp://localhost:11434\n). It supports text chat, streaming\nresponses, and image analysis for vision-capable models. The class uses Harbour's\nhb_curl\nlibrary and connects to your local Ollama server, requiring no API keys or internet connectivity.\nThe companion\nTAgent\nclass provides a data container for tool/agent definitions.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncModel\nCharacter\n\"deepseek-r1:14b\"\nOllama model to use\ncPrompt\nCharacter\nLast prompt sent to the API\ncResponse\nCharacter\nRaw JSON response from the API\ncUrl\nCharacter\n\"http://localhost:11434/api/chat\"\nOllama chat API endpoint\nhCurl\nHandle\nlibcurl easy handle\nnError\nNumeric\n0\ncurl error code (0 =\nHB_CURLE_OK\n)\nnHttpCode\nNumeric\n0\nHTTP response status code\naAgents\nArray\nArray of\nTAgent\nobjects\nMethods\nMethod\nDescription\nNew( cModel )\nCreate a TOLlama instance. Sets the model name and initializes the libcurl handle. Default endpoint is\nhttp://localhost:11434/api/chat\n.\nSend( cPrompt )\nSend a text prompt to the Ollama chat API. Stores the raw JSON response in\ncResponse\nand returns it.\nSendStream( cPrompt, bWriteFunction )\nSend a prompt with streaming enabled. The\nbWriteFunction\ncodeblock receives each JSON chunk as it arrives from the server.\nSendImage( cImageFileName, cPrompt )\nSend a local image file with a text prompt for vision analysis. Encodes the image as base64. Supported by vision models like LLaVA.\nGetValue()\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/topenai.html", "title": "TOpenAI / TChatGPT", "text": "Source:\nsource/classes/topenai.prg\n(TOpenAI),\nsource/classes/chatgpt.prg\n(TChatGPT)\nFiveWin provides two classes for integrating with the OpenAI API:\nTOpenAI\n(full-featured\nwith vision, streaming, and image support) and\nTChatGPT\n(simpler wrapper for basic chat\ncompletions). Both use Harbour's\nhb_curl\nlibrary for HTTPS communication.\nArchitecture\n[diagrama]\nTOpenAI Class\nDATA Members\nDATA\nType\nDefault\nDescription\ncKey\nCharacter\n\"\"\nOpenAI API key\ncModel\nCharacter\n\"gpt-4o-mini\"\nModel to use\ncPrompt\nCharacter\nLast prompt sent\ncResponse\nCharacter\nRaw JSON response from API\ncUrl\nCharacter\nAPI endpoint URL\nhCurl\nHandle\nlibcurl easy handle\nnError\nNumeric\n0\ncurl error code (0 = success)\nnHttpCode\nNumeric\n0\nHTTP response status code\nnTemperature\nNumeric\n0.5\nSampling temperature (0.0 - 2.0)\nMethods\nMethod\nDescription\nNew( cKey, cModel )\nCreate instance. If cKey is empty, reads OPENAI_API_KEY env var.\nSend( cPrompt )\nSend a text prompt, return raw JSON response\nSendStream( cPrompt, bCallback )\nSend prompt with streaming; bCallback receives chunks\nSendImage( cImageFileName, cPrompt )\nSend a local image file with a prompt (Vision API)\nSendImageURL( cImageUrl, cPrompt )\nSend an image URL with a prompt (Vision API)\nGetValue()\nExtract the text response from cResponse JSON\nEnd()\nClean up curl handle\nTChatGPT Class\nTChatGPT is a simpler alternative with fewer features, suitable for basic prompt/response interactions.\nDATA Members\nDATA\nType\nDefault\nDescription\ncKey\nCharacter\n\"\"\nOpenAI API key\ncModel\nCharacter\n\"gpt-4o-mini\"\nModel name\ncUrl\nCharacter\n\"https://api.openai.com/v1/chat/completions\"\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/topencode.html", "title": "TOpenCode (OpenCode Zen)", "text": "Source:\nsource/classes/topencode.prg\nTOpenCode talks to the\nOpenCode Zen\nchat API\n(\nhttps://opencode.ai/zen/v1/chat/completions\n) with\nAuthorization: Bearer public\n. No API key. Free models\n(\nmimo-v2.6-flash-free\n,\nspace-bunny-free\n,\nbig-pickle\n,\nbeam-free\n,\nglm-5.3-flash-free\n,\ndeepseek-v4.1-flash-free\n; checked 2026-10-17).\nUses\nhb_curl\n. Async methods need the Harbour MT VM\n(\nbuild_new.bat hb32 mt\n).\nTransport:\nhbcurl\nover a static\nlibcurl\n(Schannel) — no\nlibcurl.dll\nto ship. Curl sources and\nbuild scripts live in\n3rdparty/\n(outputs:\nlib/libcurl_static*.{lib,a}\nfor bcc32/bcc64/msvc32/\nmsvc64/gcc).\nArchitecture\n[diagrama]\nKey DATA\nDATA\nDefault\nDescription\ncModel\n\"mimo-v2.6-flash-free\"\nZen free model\ncUrl\nZen chat completions\nEndpoint\nnTemperature\n0.7\n0.0–2.0\naFallbackModels\nother free models\nUsed on rate limit\nlVerifySSL\n.T.\nVerify the server certificate. Leave it on; set\n.F.\nonly to diagnose a certificate problem.\nlRunning\n.F.\nAsync in flight\ncBaseUrl\n\"\"\nopencode serve\nURL (local server mode); empty = Zen\ncProviderID\n\"\"\nServer mode: provider for\ncModel\n(empty = server default)\nnTimeout\n90000\nPer-request timeout, ms (\nSetTimeout()\n)\nlHistory\n.T.\nSend()\nuses and updates the\naMessages\nconversation\nMethods\nMethod\nDescription\nNew( cModel )\nOwn curl handle per instance (safe to run several in parallel).\nSend( cPrompt )\nSync. Retries with\ncFallbackModel()\non rate limit.\nSendWithSystem( cSys, cUser )\nSync with a system prompt (agent role).\nSendAsync( cPrompt )\nReturns at once. Poll\nIsRunning()\n.\nSendWithSystemAsync( cSys, cUser )\nAsync + system prompt.\nIsRunning()\n.T.\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tpop3.html", "title": "TPop3", "text": "Source:\nsource/classes/tpop3.prg\nTPop3 is FiveWin's email retrieval class, implementing the POP3 protocol to receive\nmessages from a mail server. It handles the full POP3 session lifecycle: connect,\nauthenticate, list messages, retrieve content, optionally delete messages from the server,\nand quit. Like TSmtp, it is built on top of\nTSocket\n.\nProtocol Flow\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncIPServer\nCharacter\nPOP3 server hostname or IP address\nnPort\nNumeric\n110\nPOP3 server port\nUser\nCharacter\nUsername for authentication\nPass\nCharacter\nPassword for authentication\naMsgs\nArray\nArray of retrieved email messages (raw POP3 format)\nnAtMsg\nNumeric\nIndex of the message currently being retrieved\nlDelMsgs\nLogical\n.T.\nDelete messages from server after retrieval\nlHeaderOnly\nLogical\n.F.\nRetrieve only email headers (using TOP command)\nAllOk\nLogical\n.F.\nSet to .T. when all operations complete successfully\nbConnecting\nBlock\nCallback while connecting\nbConnected\nBlock\nCallback when connected and authenticated\nbDone\nBlock\nCallback when all messages have been retrieved\nMethods\nMethod\nDescription\nNew( cIPServer, nPort, User, Pass )\nCreate a new POP3 session. nPort defaults to 110.\nGetMail()\nConnect to the server and begin the mail retrieval sequence. Messages are stored in aMsgs[].\nExample: Check Inbox\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oPop3, n\n\n oPop3 := TPop3():New( \"mail.example.com\", 110, ;\n \"user@example.com\", \"password\" )\n\n oPop3:bConnected := { || MsgInfo( \"Connected! Messages: \" + ;\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tproxy.html", "title": "TProxy", "text": "Source:\nsource/classes/tproxy.prg\nTProxy is FiveWin's multi-protocol TCP proxy server. It listens on a local port,\naccepts incoming connections, and forwards traffic to a remote backend server.\nThe proxy works transparently for any TCP-based protocol (HTTP, POP3, SMTP, FTP,\netc.) by creating paired socket connections between the client and the backend\nserver and relaying data bidirectionally.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\noSocket\nObject\nMain TSocket listening for incoming connections\ncAddress\nCharacter\nLocal IP address the proxy listens on (auto-detected)\ncServerIP\nCharacter\n\"194.224.203.2\"\nRemote backend server IP address to forward traffic to\nnPort\nNumeric\n110\nLocal port the proxy listens on\nlDebug\nLogical\nEnable debug logging to\ncLogFile\ncLogFile\nCharacter\n\"proxy.log\"\nPath to the debug log file\nMethods\nMethod\nDescription\nNew( nPort, cServerIP )\nCreate a proxy instance. Creates the listening TSocket and sets up the accept callback. Defaults to port 110 (POP3). Resolves hostnames to IP addresses automatically.\nActivate()\nStart listening for incoming connections. Delegates to\noSocket:Listen()\n.\nEnd()\nStop the proxy and release the listening socket. Delegates to\noSocket:End()\n.\nOnAccept()\nInternal: Called when a new client connects. Creates a paired client socket and backend socket, sets up bidirectional data relay with read/close callbacks.\nOnRead( oSocket, oServer )\nInternal: Called when data arrives from the client. Forwards the data to the backend server.\nExample: POP3 Proxy\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tras.html", "title": "TRas", "text": "Source:\nsource/classes/tras.prg\nTRas is FiveWin's Remote Access Service (RAS) class for managing dial-up connections\non Windows. It wraps the Windows RAS API to initiate phone connections, monitor\nconnection status, and hang up. TRas supports both manual and automatic (blocking)\nconnection modes with timeout-based fail-safes.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\nhRas\nNumeric\n0\nRAS connection handle returned by RaDial\ncPhone\nCharacter\n\"\"\nPhone number to dial\ncUser\nCharacter\n\"\"\nUsername for authentication\ncPass\nCharacter\n\"\"\nPassword for authentication\ncStatus\nCharacter\n\"\"\nHuman-readable connection status string\nnStatus\nNumeric\n0\nNumeric RAS connection status code\nnTimeout\nNumeric\n60\nTimeout in seconds for auto-wait mode\nlOperation\nLogical\n.F.\nWhether the last operation succeeded\ncError\nCharacter\n\"\"\nLast error message\ncDevType\nCharacter\n\"\"\nDevice type (e.g. \"modem\")\ncDevName\nCharacter\n\"\"\nDevice name\nbStatus\nBlock\nCallback codeblock invoked on each status change\naMsgStatus\nArray\nInternal mapping of RAS status codes to descriptive strings\nMethods\nMethod\nDescription\nNew( oWnd, cPhone, cUser, cPass )\nCreate a RAS instance. Requires a valid window handle, phone number, username, and password. Validates all parameters on construction.\nCall( lMode, bStatus )\nInitiate the dial-up connection. If\nlMode\nis\n.T.\n(auto-wait), blocks until connected or timeout. Optionally sets\nbStatus\ncallback.\nStatus()\nPoll the current connection status and update all status DATA members. Invokes\nbStatus\ncallback if set.\nHangUp()\nTerminate the RAS connection. Calls\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tsmtp.html", "title": "TSmtp", "text": "Source:\nsource/classes/tsmtp.prg\nTSmtp is FiveWin's email-sending class. It implements the SMTP protocol to send\nmessages through a mail server, with support for authentication (AUTH LOGIN),\nHTML content, file attachments, CC/BCC recipients, and return receipts.\nIt is built on top of\nTSocket\nand uses the\nasynchronous event model for communication.\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncIPServer\nCharacter\nSMTP server hostname or IP address\nnPort\nNumeric\n25\nSMTP server port\ncFrom\nCharacter\nSender email address\naTo\nArray\n{}\nArray of recipient email addresses\naCC\nArray\n{}\nArray of CC recipient addresses\naBCC\nArray\n{}\nArray of BCC recipient addresses\ncSubject\nCharacter\n\"[no subject]\"\nEmail subject line\ncMsg\nCharacter\n\"\"\nPlain text message body\ncHTML\nCharacter\n\"\"\nHTML message body (alternative to plain text)\naFiles\nArray\n{}\nArray of file paths to attach\ncPriority\nCharacter\n\"Normal\"\nMessage priority: Normal, High, or Low\ncUser\nCharacter\n\"\"\nUsername for SMTP authentication\ncPassword\nCharacter\n\"\"\nPassword for SMTP authentication\nlDoAuth\nLogical\n.F.\nEnable SMTP authentication (AUTH LOGIN)\ncReplyTo\nCharacter\nReply-To email address\nlReceipt\nLogical\n.F.\nRequest a return receipt (Disposition-Notification-To)\ncMailer\nCharacter\n\"FiveWin Mailer\"\nX-Mailer header value\ncError\nCharacter\n\"\"\nError description if sending fails\nbConnecting\nBlock\nCallback during connection\nbConnected\nBlock\nCallback when connected to server\nbDone\nBlock\nCallback when message is successfully sent\nbFailure\nBlock\nCallback when an error occurs\nMethods\nMethod\nDescription\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tsocket.html", "title": "TSocket", "text": "Source:\nsource/classes/tsocket.prg\nTSocket is FiveWin's low-level TCP/IP socket class, wrapping the Windows Winsock API.\nIt provides both client and server socket functionality through an asynchronous,\nevent-driven model that integrates naturally with FiveWin's message loop.\nTSocket is the foundation for TWebServer, TSmtp, TPop3, TFtpClient, and TWebClient.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDefault\nDescription\nnPort\nNumeric\n0\nSocket port number\ncIPAddr\nCharacter\n\"\"\nLocal IP address (auto-detected on creation)\nnSocket\nNumeric\n-1\nWinsock socket handle\nnTimeOut\nNumeric\n30\nTimeout in seconds for operations\nnBackLog\nNumeric\n5\nMaximum pending connections for listening\nbAccept\nBlock\nCallback when a new connection is accepted (server mode)\nbRead\nBlock\nCallback when data is available to read\nbWrite\nBlock\nCallback when the socket is ready to write\nbClose\nBlock\nCallback when the remote end closes the connection\nbConnect\nBlock\nCallback with connection result (client mode)\nbOOB\nBlock\nCallback for out-of-band data\nlDebug\nLogical\nEnable debug logging\ncLogFile\nCharacter\nPath for debug log file\naBuffer\nArray\n{}\nInternal buffer for queued outgoing data\nlSending\nLogical\nWhether a send operation is in progress\naSockets\nArray (Class)\n{}\nClass-level array tracking all active sockets\nMethods\nMethod\nDescription\nNew( nPort, oWnd, cIp )\nCreate a socket and bind to port. Calls WSAStartup on first socket. Registers with oWnd for async events.\nListen()\nStart listening for incoming connections on the bound port\nAccept( nSocket, oWnd )\nAccept an incoming connection. […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/tssh.html", "title": "TSSH", "text": "Source:\nsource/classes/tssh.prg\n| C backend:\nsource/winapi/ssh.c\nHierarchy:\nTSSH\n(standalone class, no inheritance)\nTSSH wraps the Windows 10+ OpenSSH client (\nssh.exe\nand\nscp.exe\n) via\nCreateProcess\nwith anonymous pipe capture. It supports remote command execution,\nSCP file transfer, key-based authentication, and host key scanning.\nRequirements:\nOpenSSH Client installed (Windows Settings → Apps →\nOptional Features → OpenSSH Client). For password-based authentication, set up\nSSH keys or use an external tool like Plink.\nC Backend Functions\nFunction\nSignature\nDescription\nSSH_EXEC()\nSSH_EXEC( cHost, cUser, cCmd, cKeyFile, nPort, @cOut, @cErr ) → nExitCode\nExecute a remote command via SSH\nSCP_SEND()\nSCP_SEND( cHost, cUser, cLocal, cRemote, cKeyFile, nPort, @cErr ) → nExitCode\nUpload a file via SCP\nSCP_RECV()\nSCP_RECV( cHost, cUser, cRemote, cLocal, cKeyFile, nPort, @cErr ) → nExitCode\nDownload a file via SCP\nSSH_HASSSH()\nSSH_HASSSH() → lResult\nCheck if ssh.exe is available in PATH\nKey DATA Members\nDATA\nType\nDefault\nDescription\ncHost\nCharacter\n\"\"\nRemote hostname or IP address\ncUser\nCharacter\n\"\"\nSSH username\nnPort\nNumeric\n22\nSSH port\ncKeyFile\nCharacter\n\"\"\nPrivate key file path (PEM format)\ncPassphrase\nCharacter\n\"\"\nKey passphrase (for KeyGen)\ncOutput\nCharacter\n\"\"\nLast command stdout\ncError\nCharacter\n\"\"\nLast command stderr\nnExitCode\nNumeric\n0\nLast command exit code\ncKnownHosts\nCharacter\n\"\"\nCustom known_hosts file path\nMethods\nConnection\nMethod\nDescription\nNew( cHost, cUser, nPort, cKeyFile )\nConstructor. Configure target host and credentials.\nConnect()\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/twebclient.html", "title": "TWebClient", "text": "Source:\nsource/classes/twebclie.prg\nTWebClient is FiveWin's lightweight HTTP client class, built directly on top of\nTSocket\n. It provides a simple interface for\nconnecting to web servers, fetching pages, and processing HTTP responses. For more\nadvanced HTTP features (HTTPS, POST with JSON, custom headers), consider using\nthe\nhb_curl\nlibrary directly or the TOpenAI/AI classes as reference.\nKey DATA Members\nDATA\nType\nDescription\noSocket\nTSocket\nUnderlying TCP socket for the HTTP connection\nbOnConnect\nBlock\nCallback executed when the connection to the server is established\nbOnRead\nBlock\nCallback executed when data arrives from the server\nMethods\nMethod\nDescription\nNew()\nCreate a new TWebClient. Creates and configures the underlying TSocket with default read/connect/close handlers.\nConnect( cIPAddress )\nConnect to a web server. Accepts hostname (e.g. \"example.com\") or IP address. Resolves hostnames automatically.\nGetPage( cPageName )\nSend an HTTP GET request for the specified page path. Supports both full URLs (http://...) and relative paths.\nOnConnect()\nCalled internally when the connection is established. Triggers the bOnConnect callback if set.\nOnRead( cData )\nCalled internally when data is received. Triggers the bOnRead callback with the received data.\nExample: Fetch a Web Page\nCÓDIGO:\n#include \"FiveWin.ch\"\n\nfunction Main()\n\n local oClient, cResponse := \"\"\n\n oClient := TWebClient():New()\n\n oClient:bOnConnect := { ||\n oClient:GetPage( \"/\" )\n }\n\n oClient:bOnRead := { |cData|\n cResponse += cData\n }\n\n oClient:Connect( \"www.example.com\" )\n\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/twebserver.html", "title": "TWebServer / TSocket", "text": "Source:\nsource/classes/twebserv.prg\n(TWebServer),\nsource/classes/tsocket.prg\n(TSocket)\nTWebServer is FiveWin's built-in HTTP server that can serve HTML pages, process GET/POST requests,\nand merge dynamic content into HTML templates. It is built on top of TSocket, which provides\nlow-level TCP/IP socket communication using the Windows Winsock API.\nArchitecture\n[diagrama]\nTWebServer Class\nKey DATA Members\nDATA\nType\nDefault\nDescription\noSocket\nTSocket\nMain listening socket object\naSockets\nArray\nArray of client socket objects\ncAddress\nCharacter\nServer IP address\ncDefPage\nCharacter\n\"default.htm\"\nDefault page to serve\ncDefPath\nCharacter\n\"www\"\nRoot directory for web pages\ncCookie\nCharacter\nCurrent request cookie data\nlDebug\nLogical\n.F.\nEnable debug logging\ncLogFile\nCharacter\n\"\"\nLog file path\ncHtmlError\nCharacter\nHTML to show on file-not-found errors\nMethods\nMethod\nDescription\nNew( nPort )\nCreate server on specified port (default: 80). Creates \"www\" directory if missing.\nActivate()\nStart listening for connections\nExplore( cHtmlFile )\nOpen the page in the default browser via ShellExecute\nOnAccept()\nHandle new client connection (creates client TSocket)\nOnRead( oSocket )\nRead incoming data, dispatch to OnGet/OnPost\nOnGet( oClientSocket, cData )\nHandle HTTP GET requests\nOnPost( oClientSocket, cData )\nHandle HTTP POST requests\nHtmlMerge( cHtml, cParams, mSocket, cQuery )\nMerge dynamic content into HTML templates\nHtmlRead( cFileName )\nRead an HTML file from disk\nFileExist( cFileName )\nCheck if a file exists in the web root\nEnd()\nStop the server and close all sockets\nTSocket Class\n […]" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/twebsocketserver.html", "title": "TWebSocketServer", "text": "Source:\nsource/classes/twebsocketserver.prg\nOverview\nTWebSocketServer class — part of the FiveWin for Harbour/xHarbour framework.\nSee\nClasses Alphabetical\nfor full class list.\nSee Also\nClasses Alphabetical\nFunctions" }, { "src": "FWH docs · en/internet", "url": "https://fivetechsoft.github.io/FWH_docs/en/internet/twebview.html", "title": "TWebView2", "text": "Source:\nsource/classes/twebview2.prg\nTWebView2 embeds the Microsoft Edge (Chromium) browser engine into FiveWin applications.\nIt provides a modern HTML5/CSS3/JavaScript rendering engine that can navigate URLs, display\nlocal HTML, execute JavaScript from Harbour, and receive JavaScript callbacks back into Harbour code.\nThis replaces the older Internet Explorer-based TActiveX(\"Shell.Explorer.2\") approach.\nArchitecture\n[diagrama]\nKey DATA Members\nDATA\nType\nDescription\nhWebView\nNumeric\nWebView2 internal handle\noWnd\nTWindow\nParent window object\nbOnBind\nBlock\nCallback block when JavaScript calls\nSendToFWH()\nbOnNavigationCompleted\nBlock\nCallback when page navigation finishes\nbOnEval\nBlock\nCallback with result of JavaScript evaluation\ncUserDataFolder\nCharacter\nPath for cookies, cache, and user data storage\ncBrowserExecutableFolder\nCharacter\nOptional Fixed Version Runtime folder (Microsoft\nbrowserExecutableFolder\n). Empty = system Evergreen Runtime\nMethods\nMethod\nDescription\nNew( oWndParent, cUserDataFolder, cBrowserExecutableFolder )\nCreate WebView2 control. If oWndParent is nil, creates its own window. Optional 2nd param = isolated user-data folder; optional 3rd = Fixed Version Runtime root (folder with\nmsedgewebview2.exe\n). Both must be passed at construction because the WebView2 environment is created immediately.\nNavigate( cURL )\nNavigate to a URL\nSetHtml( cHtml )\nDisplay HTML string directly\nEval( cJavaScript )\nExecute JavaScript code in the web page\nInjectJavascript( cScript )\nInject a