Showing posts with label BROWSE. Show all posts
Showing posts with label BROWSE. Show all posts

Saturday, March 21, 2009

HMG: Grid versus Browse [Updated 25th March 2009]

CCH :
According to the MiniGUI Help File, a Browse control is a general purpose database browser.
while a control Grid is a container object that displays data in rows and columns, and is similar in appearance to a Browse window.

Q1. So, what are the differences ?

Q2. When to use BROWSE ?

Q3. When to use GRID ?

Sudip :

Q4. For browse control (for data editing), do we need to use table "EXCLUSIVELY" ?


Answers

1. Rathinagiri (HMG Forum) :

1.1 Browse controls are always linked with one table (that too a .dbf table).

1.2 Grid controls are for used for other purposes where, you wish to represent data in row,col format. For example, it may show a two dimensional array!

1.3 All the browse controls are grid controls but not vice versa.

2. MOL aka Malek, Poland (HMG Forum)

2.1 I think you will have problems with browsing huge tables (exhausting memory, etc) while using grid. Using Browse, I didn't found problems with database which has 100MB.

2.2 You need to open table in exclusive mode only when you want to add records or edit record via ALT-A, ALT-E.

2.3 If you open table in shared mode, you must write your own function to add, edit or delete rows.

2.4 WORKAREA property of Browse is available at control definition only.


3. Sudip, Kolkata, West Bengal India

3. 1 I just found a big difference in Grid and Browse in MiniGUI extended!
If you use SET AUTOADJUST ON. Then Grid will be auto adjusted, but normal Browse (not tsbrowse) will not! :)

3.2 As per help file (hmg_hlp.chm), we can set WORKAREA during definition of browse only! Cannot change on the fly!

3. Bicahi Esgici, HMG Forum, Turkey

Hi to all Clipper and especially HMG fans

I want give a humble answer to an unanswered question in Saturday, March 21, 2009 post HMG; Grid versus Browse;

Sudip ;

Q4. For browse control (for data editing), do we need to use table "EXCLUSIVELY" ?

A4. No. If your application will run in a single machine this doesn’t matter. In a network environment you can’t open your files exclusively. If so, only one user (who come first) can use your application. Than, you MUST use SHARED mode. BTW you don’t need specify SHARED mode option every open (USE); setting globally EXCLUSIVE OFF is sufficient.

When a file open by shared, editing need some considerations. Under Browse or not, you have LOCK every record before and UNLOCK after edit ( changing record pointer also issue an UNLOCK). LOCK ( .T.) property of BROWSE successfully achieve this duty for you.

While a BROWSE active, ALT-A allow row appending to table. This is only issued an APPEND BLANK command. This command automatically LOCK new appended (empty) record. So, doesn’t require any precaution.

Precaution required for operations intended multiple records, such as PACK, ZAP, APPEND FROM, DELETE FOR ... / ALL, RECALL FOR ... / ALL, REPLACE FOR ... / ALL, UPDATE ON ...

The best way for such operations is "close" application to network ( all user ) and performing on a single machine. Another way is using FLOCK() for a limited time.

I hope that this answer will be useful.

Regards and happy HMG’ing

Tuesday, March 17, 2009

Programming MDI with MiniGUI - Part II [Updated 22nd march 2009]

After tinkering with MDI programming and with the help of Grigory of HMG Extended Forum :-






Basic syntax for a Browse which works perfectly in a non-MDI environment is as follows :-

[ @ , ] BROWSE
[ ID ]
[ OF | PARENT | DIALOG ]
WIDTH
HEIGHT
HEADERS
WIDTHS
WORKAREA
FIELDS
[ VALUE ]
[ FONT SIZE ]
[ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ]
[ TOOLTIP ]
[ BACKCOLOR ]
[ DYNAMICBACKCOLOR ]
[ DYNAMICFORECOLOR ]
[ FONTCOLOR ]
[ ON GOTFOCUS | ]
[ ON CHANGE | ]
[ ON LOSTFOCUS | ]
[ [ ON DBLCLICK | ] | [ EDIT | ALLOWEDIT [ INPLACE ] ] [ APPEND | ALLOWAPPEND] ]
[ ON HEADCLICK | ]
[ WHEN ]
[ VALID ]
[ VALIDMESSAGES ]
[ READONLY ]
[ LOCK ]
[ DELETE ]
[ NOLINES ]
[ IMAGE ]
[ JUSTIFY ]
[ NOVSCROLL ]
[ HELPID ]
[ BREAK ]

However, please note that for MDI environment:-

[ [ ON DBLCLICK | ] | [ EDIT | ALLOWEDIT [ INPLACE ] ] [ APPEND | ALLOWAPPEND] ]

a) EDIT/APPEND does not work
b) You may use EDIT INPLACE

This is exactly why I wrote my own UDF to replace them :-)

Update on 23rd March 2009

Finally, perfected (with the help of Grigory of HarbourMiniGUI Forum) TILING/CASCADE of Child Windows populated with different DBF

Tuesday, March 10, 2009

MDI Programming with MiniGui [Updated 12th March 2009]

Having pushed the very stable HMG to it's limits and as documented in my previous articles, I was encouraged by Sudip and decided to take a serious look at HMG Extended ie MiniGui as most of the apps that I have in mind must be MDI in nature..

This is what I started With


What did I do Next ?

I took the codes from FAS4HMG and copied the Project folder under the MiniGui folder. I was then able to recompile it as a MIDI apps with some minor adjustments.

Code Snippet
DEFINE WINDOW MainForm ;
AT 0,0 ;
WIDTH 600 ;
HEIGHT 480 ;
TITLE 'FAS4MiniGUI' ;
MAIN ;
MDI
DEFINE MAIN MENUEX

Opening First Child Window, containing a BROWSE


Opening two Child Windows & CASCADE


Tiling Vertically

Code Snippet
TILE MDICHILDS VERTICAL

Tiling Horizontally

Code Snippet
TILE MDICHILDS HORIZONTAL

More to come ...

Friday, March 6, 2009

HMG : How to Create Browses, the easy way ? (Updated 9th March 2009)

In FAS4DOS/FAS4XHB and FAS4HMG, I was using DBEDIT() as the primary data entry mechanism for user input.


On studying the numerous samples in HMG, I decided to replace all the text DBEDIT() with HMG's BROWSE. The following was achieved by using BROWSE functionality in place of DBEDIT() within FAS4HMG



How did I achieve this ?

Code Snippet

DEFINE WINDOW BrowseGLACForm ;
AT 0,0 ;
WIDTH 640 HEIGHT 480 ;
TITLE 'Browse Chart of Accounts' ;
CHILD ;
NOMAXIMIZE;
ON INIT OpenTables() ;
ON RELEASE CloseTables()


DEFINE STATUSBAR
DATE
STATUSITEM ' / Double Click To Edit' WIDTH 190
STATUSITEM 'Alt+A: Append Record' WIDTH 140
STATUSITEM ': Delete Record' WIDTH 140
CLOCK
END STATUSBAR

@ 10,10 BROWSE Browse_1 ;
WIDTH 580 ;
HEIGHT 400 ;
HEADERS { 'GL Code' , 'GL Name' , 'GL Type', 'GL Group'} ;
WIDTHS { 80 , 320 , 80 , 80 , 120 } ;
WORKAREA GLAC ;
FIELDS { 'GLAC->GLCODE' , 'GLAC->GLNAME' , 'GLAC->GLTYPE' , 'GLAC->GLGROUP'} ;
VALUE 1 ;
EDIT ;
APPEND;
DELETE;
LOCK

END WINDOW

CENTER WINDOW BrowseGLACForm

BrowseGLACForm.Browse_1.SetFocus

ACTIVATE WINDOW BrowseGLACForm

Return Nil

Welcome to Clipper... Clipper... Clipper


In 1997, then using Delphi 3, I had already created 32-bits Windows applications for HRIS, ERP and CRM. In 2007, using Ruby on Rails, an AJAX powered CRM site running on Apache & MySQL was created and I am now using Visual Studio .Net 2008 to create web-based projects and Delphi 7 for Win32 applications using SQL2005 & DBFCDX.

So, why then am I reviving the Original Clipper... Clipper... Clipper via a Blog as CA-Clipper is a programming language for the DOS world ? Believe it or not, there are still some clients using my mission-critical CA-Clipper applications for DOS installed in the late 80's and up to the mid 90's. This is testimony to CA-Clipper's robustness as a language :-)

With the widespread introduction of Windows 7 64-bits as the standard O/S for new Windows based PCs & Notebooks, CA-Clipper EXE simply will not work and it has become imperative for Clipper programmers to migrate immediately to Harbour to build 32/64 bits EXEs

Since 28th January 2009, this blog has been read by 134,389 (10/3/11 - 39,277) unique visitors (of which 45,151 (10/3/11 - 13,929) are returning visitors) from 103 countries and 1,574 cities & towns in Europe (37; 764 cities), North America (3; 373 cities) , Central America & Caribeans (6; 13 cities), South America(10; 226 cities), Africa & Middle-East (12; 44 cities) , Asia-Pacific (21; 175 cities). So, obviously Clipper is Alive & Well : -)


TIA & Enjoy ! (10th October 2012, 11:05; 13th November 2015)


Original Welcome Page for Clipper... Clipper... Clipper

This is the original Welcome Page for Clipper... Clipper... Clipper, which I am republishing for historical and sentimental reasons. The only changes that I have made was to fix all the broken links. BTW, the counter from counter.digits.com is still working :-)

Welcome to Chee Chong Hwa's Malaysian WWW web site which is dedicated to Clipperheads throughout the world.

This site started out as a teeny-weeny section of Who the heck is Chee Chong Hwa ? and has graduated into a full blown web site of more than 140 pages (actually hundreds of A4 size pages) ! This is due to its growing popularity and tremendous encouragements from visiting Clipperheads from 100 countries worldwide, from North America, Central America, Caribbean, South America, Europe, Middle-East, Africa and Asia-Pacific. Thanx Clipperheads, you all made this happen !


What is Clipper ?

You may ask, what is this Clipper stuff ? Could Clipper be something to do with sailing as it is the name of a very fast sailing American ship in the 19th century ?

Well, Clipper or to be precise, CA-Clipper is the premier PC-Software development tool for DOS. It was first developed by Nantucket Corporation initially as a compiler for dBase3+ programs. Since then, CA-Clipper has evolved away from its x-base roots with the introduction of lexical scoping & pre-defined objects like TBrowse. As at today, the most stable version ofClipper is 5.2e while the latest version, 5.3a was introduced on 21 May 1996.

As at 11th November, 1996, an unofficial 5.3a fixes file was made available by Jo French. See the About CA-Clipper 5.3a section for more details. BTW, Jo French uploaded the revised 5.3a fixes file on 20th November, 1996.

Latest News

The latest news is that CA has finally released the long-awaited 5.3b patch on 21 May, 1997.

For 5.3b users, you must a take a look at Jo French's comments on unfixed bugs in 5.3b.

BTW, have you used Click ? If you're a serious Clipperprogrammer and need an excellent code formatter, Click is a natural choice. How to get it ? Simple, access Phil Barnett's site via my Cool Clipper Sites.

32-bits Clipper for Windows ?

Have you tried Xbase ++ ? Well, I have and compared to Delphi (my current Windows programming tool of choice), I'm still sticking to Delphi.

Anyway, you should visit the Alaska Home Page. Give it a chance and then draw your own conclusions !.

The Harbour Project

Is this the future of Xbase ? Take a look at at the Harbour Project

You are Visitor # ...

According to counter.digits.com, you are visitor since 3 June 1996.

If you like or dislike what you see on this website, please drop me a line by clicking the email button at the bottom of this page or better still, by filling out the form in my guest book. If you are not sure what to write,click here to take a look at what other Clipperheads have to say.