Solved

quicken accounting interface

Posted on 1998-11-19
16
266 Views
Last Modified: 2010-05-03
rather basic but,, can you tell me whether the FORM for an
accounting type program like quicken or misrosoft money
uses textbox arrays for accepting data or a type of flexi
grid ???? please.
I have tried duplicating the "look" however when I use textbox arrays I can't make the lines over the top of
textboxes visible to separate them ,as they are right up against each other for neatness, I need to have
a few verticle lines separating them however it seems textboxes have right of way when it comes to visibility.
Also I would like to have some help scrolling many hundreds of textboxes vertically!!?? I added another 50 points.
Is an object "DATA" or are controls objects like text box. I mean what is an object and what is a class.
0
Comment
Question by:d8950093
  • 9
  • 7
16 Comments
 
LVL 1

Expert Comment

by:mithomas
Comment Utility
Objection!  Calls for conjecture!  :-)

Just kidding.  I'm pretty sure that Intuit has pretty much invented all of their controls from scratch for Quicken/QuickBooks (such as in the "register" windows).  It's pretty obvious when you look at them.

I haven't used Money, so wouldn't know about that one.

Good luck...
0
 

Author Comment

by:d8950093
Comment Utility
Edited text of question
0
 

Author Comment

by:d8950093
Comment Utility
Adjusted points to 100
0
 
LVL 1

Expert Comment

by:mithomas
Comment Utility
OK, now that you've added some extra detail, I can help a bit, but I still won't call it an answer.

I'd put money on the fact that Intuit developed their own register control.  But now I understand why you're asking in the first place.

Idea 1:
Why not make the textboxes borderless by choosing borderstyle = 1 (None).  That way YOU can control what types of lines are drawn around them.  Alternatively, you can use borderstyle = fixed single along with appearance = flat to get just a simple line (rather than the 3d effect).  If you place the textboxes closely enough, then they can share borders and look somewhat like a grid.

Idea 2:
In relation to your "many hundreds" question.  I don't think it's necessarily a good idea to create ALL of the textboxes at once.  It would be better, in my opinion, to "scroll" the data thru the text boxes, rather than actually scrolling the textbox UI elements themselves.  So in effect, you'd be using 10 rows (just as an example) of textboxes, which represents a "window" into your data.  As the user scrolls, you'd move the data from row to row to make it appear as if they're actually scrolling thru the control.  This makes better use of memory (in theory).  Good object design can make this a relatively simple process, but it would take a while to design (if you do it right).  Good object design can things seem simpler once you get to coding.
0
 
LVL 1

Expert Comment

by:mithomas
Comment Utility
I've put an object model on my website.  It's at:
http://www.digitalanswers.com/TabularDataViewer.gif.

This model could be taken even further to make it more general, but represents the minimum good object design for this sort of thing.  It could be loosely called a "design pattern", I suppose, and its name could be ViewPort.  It's built upon other design patterns called Iterator and Mediator.

The model shows the following classes:

ObjectCollection - this represents the set of objects that you're displaying and editing.  Perhaps you're using UDTs instead.  It doesn't matter.  This just represents your 'data'.

ViewPort - This is what represents the "view" of your data.  You may only be able to put 4 rows (or whatever) of textboxes in your UI, but you may have hundreds of "objects" to display.  The ViewPort gives you a simple way to access a subset of the objects in the ObjectCollection.  This one must be a VB class in order to be really good.

TabularObjectViewer - This maps objects from the ViewPort into your UI (array of textboxes, etc), and also responds to events from your UI.  For example, when the Scrollbar is moved, you need to let the TOV know that a UI change has occured.  You could do this by using WithEvents for scrollbar objects.  It would be slick.  When the scrollbar changes, you convert this into a call such as ViewPort.MoveDownBy(moveamount), or ViewPort.GetNextView().

UI - this just represents all of the things in your UI, like the textbox array, etc.

If you're not familiar with object models, just map each of the boxes to a class file in VB (or, or the UI side, whater controls you're using).  Since the drawing is pretty general, you'll have to do a little thinking to do this.  If you have questions, make a comment.

Plus, it would be great if you would increase this to even more points, since you're getting some pretty intense OO training here. :-)
0
 

Author Comment

by:d8950093
Comment Utility
I am going to have a look at this soon, some very good tips about scrolling the data. my text boxes are borderless and every second one is a different colour and there are parallel arrays of them on the form and this is why I need lines vertically to separate them as putting them futher apart looks bad but no big deal I will read full comment and see what happens.
0
 

Author Comment

by:d8950093
Comment Utility
Edited text of question
0
 

Author Comment

by:d8950093
Comment Utility
Objects and classes !
0
Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

 

Author Comment

by:d8950093
Comment Utility
Edited text of question
0
 

Author Comment

by:d8950093
Comment Utility
how do i link a data array to the scrollcontrol, perhaps I will have a go first!
0
 
LVL 1

Accepted Solution

by:
mithomas earned 160 total points
Comment Utility
If you have the manuals for VB, there's a ton on using VB to do object-oriented programming in the Programmer's Guide.  I can't possibly do justice to the OO field (and the VB capability) in a few sentences.  But, to answer your direct question, an object is the combination of data, and functions that act on the data.  This is opposed to data that's kept separate from functions that act upon it.  OO Analysis, Design, and Programming are an important technique in modern computer science and information systems.  In VB, a textbox is indeed an object.  For example, you can pass a textbox to a function:
Public Sub X(tb as TextBox)

The code in X() can do all the things to the TextBox at runtime that you can do at design time.  I recommend that you spend some time with your nose in the VB books to learn these concepts.

You're on the right track with the array of textboxes -- but that's just the UI stuff.  You now need a way to synchonize the contents of those boxes with the "data" of your program.  That's what the model that I gave you helps to do.  It could be more complete, but I've spent a ton of time already :-).

Good luck!!
0
 
LVL 1

Expert Comment

by:mithomas
Comment Utility
Oh, let me also add that VB5+ offers the ability for you to create your own ActiveX 'control', which would show up on the tool palette, and have a property sheet, etc.  I've never actually done it, but it would be a great way to implement the UI part of your problem.  You could then just pop the control onto whatever window needs that sort of interface, even in a different program.

Again, read the manuals!

later...
0
 
LVL 1

Expert Comment

by:mithomas
Comment Utility
Sorry, I missed your comment about a "data array".  Well, the model that I pointed you to kind of answers that question, except that it assumes the use of a Collection of objects rather than an array of UDTs.  This collection would suppot the creation of a "ViewPort", which represents a small bit of the total data in the collection..  Then you would write the "TabularObjectViewer" class, which copies data out of the ViewPort and into your array of textboxes.

For example, if you have 3 rows of textboxes, you'd create a ViewPort by calling ObjectCollection.GetViewPort(3), which returns a ViewPort object.  You'd then loop thru the ViewPort, copying object values from the ViewPort Items to your array of textboxes.  When the user clicks on the scrollbar, you call the appropriate function on ViewPort, and again you copy the data over to your textboxes.

If you're not used to object programming, all of this probably seems very difficult, but it's not once you get used to it.

If you're not interested in using objects, you just need to keep track of what the "top" (the first element shown by your grid) element in the array is at all times, and the number of elements that can be shown by your grid.  When the user clicks the scrollbar, then move the "top" pointer (really just a long which stores the index) to the appropriate place and call a function that knows how to copy data from your array to the textboxes starting with the "top" element and looping "rows" times to fill in the data.  It's really the same process as the object approach, except that objects let you hide a lot of the gory details inside of them, so your code turns out much cleaner.

Good luck...
0
 

Author Comment

by:d8950093
Comment Utility
This has been great, I wouldnt get half that answer from a lecturer, just some cryptically
meaningfull crap that means I have to work it out myself or they dont want to know.
But you have done me a good turn. If I push it any further it would prevent me from learning.Still I wouldn't exactly lose sleep:)
0
 
LVL 1

Expert Comment

by:mithomas
Comment Utility
Hehe.  Thanks for the points, and the kind words.  I like teaching, but I'd prefer not to have to WRITE all my bits of "wisdom".  If you're interested, I have an article online that covers yet another object technique for VB programmers.  It has to do with having your UI automatically reflect changes in your data.  It's at:
http://www.digitalanswers.com/Notification
(caps matter)

I'm trying to get the folks here to add a topic for OO design, but they haven't done it yet.  Maybe you could suggest it as well, if you're interested in asking more questions about OO as time goes on.

Good luck...

later...
0
 

Author Comment

by:d8950093
Comment Utility
Thanks again , i will follow suggestions.
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
The debugging module of the VB 6 IDE can be accessed by way of the Debug menu item. That menu item can normally be found in the IDE's main menu line as shown in this picture.   There is also a companion Debug Toolbar that looks like the followin…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now