🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.os.os2.programmer
Article #2352

Re: Spread Sheets in PM

#2352
From: ie15
Date: Sun, 23 Dec 1990 19:58
73 lines
3762 bytes
In article <1990Dec17.173811.4382@thunder.mcrcim.mcgill.edu>, marco@damrod.McRCIM.McGill.EDU (Marco Petroni) writes:> 
> I am developping an application in PM which is to have the look and feel
> similar to a spread sheet with rows and columns of data. The rows and columns
> should be similar to text entry fields where the user can type in data.
> Now, what I want to do is to be able to select an entire row, or column
> or, groups of rows or columns at a time. Additionally, I would like to
> be able to display the selected rows or columns of the "spread sheet"
> as being highlighted, say, in reverse video.
> 
> I have been thinking of a number of different possibilites:
> 
> 1) A conventional PM list box with text fields.
>    - Selected items in a list box do get highlighted in reverse video,
>      but can one make a 2-D grid in a list box? (None of the literature
>      mentions 2-D grids in list boxes).
> 
> 2) A dialog window with a 2-D grid of text entry fields.
>    - PM does not seem to allow you to set the colors of an individual
>      (or many for that matter) text entry field object(s).
> 
> 3) Defining my own object class (similar to what Petzold does with
>    the square button)
>    - Probably the best and only way of doing this, but I haven't jumped
>      into the details yet.
Any way you do it a window full of controls is bad news.  Way too slow and
a resource management problem for OS/2.  Programmer guidelines say an app
shouldn't have more than 100 windows created at once, a simple 10x10 
spread sheet would reach that too quickly.

I wrote a sample spread sheet which had an array of entry fields in the
client area thinking how easy it was, but too many windows can get created.

I friend of mine tried subclassing the listbox control to make what he
called  a 'multi-columned listbox'.  This would set individual fonts, colors,
handle cross-hair grids, etc.  By the time he was finished the subclassing
was so deep he started over.

The best approach would be to clone EXCEL which has 1 data entry entry-field
at the top and the bottom 90% of the client area is merely GpiCharStrAt()
calls to write the data out in row/column format.  With mouse control
a GpiBox() can be drawn around the text to simulate a cursor-bar-selector
for individual cells.  As the the box is moved around the client area the
cells' contents is echoed in the main-entry-field for editing.

If you want the user to be able to "enter right into the cells' then move
a single entryfield around the client area shadowing WM_MOUSEMOVES and
WM_BUTTON1DOWNS.  WinSetWindowPos() will work for that.

To set the entryfield's colors use the WinSetPresParam() API only available
in OS/2 1.2 and up.

VOID   SetEntryF( hwnd   hwndEF)
{ LONG   color;

   color =CLR_BLUE;
   WinSetPresParam( hwndEF, PP_BACKGROUNDCOLORINDEX, sizeof( LONG), &color);
   color =CLR_YELLOW;
   WinSetPresParam( hwndEF, PP_FOREGROUNDCOLORINDEX, sizeof( LONG), &color);
}

... for instance.  These are briefly mentioned in the IBM Programmers Guide
on pages 13-2 and 13-3.

If you handle all of the end-presentation of the data thru the client window
you can easily support nice font touches like italics and underline that
entry fields won't.

wisdom and fun,

Ken Tabor
OS/2 Graphics Guru in Training
IE15@UNTVAX.BITNET
IE15@vaxa.acs.unt.edu
Technical Details
Message-ID: <1990Dec23.200416.44153@vaxb.acs.unt.edu>
Path: arc1-ca.pugleaf.net!utzoo!attcan!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!solo!vaxb.acs.unt.edu!ie15
References: <1990Dec17.173811.4382@thunder.mcrcim.mcgill.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!solo!vaxb.acs.unt.edu!ie15
From: ie15@vaxb.acs.unt.edu
Newsgroups: comp.os.os2.programmer
Subject: Re: Spread Sheets in PM
Message-ID: <1990Dec23.200416.44153@vaxb.acs.unt.edu>
Date: 23 Dec 90 19:58:16 GMT
References: <1990Dec17.173811.4382@thunder.mcrcim.mcgill.edu>
Lines: 73