Although the windows are similar in concept, ie. they have questions with answers to select from, the actual layout of each one is totally different. They all have associated pictures and graphics and some even have movies to view before answering the quesiton, so it's not possible to make them "generic" and add the question in on the fly at runtime, otherwise your suggestion would be a good one.

I'm throwing in another idea that occured to me just now, but I have NO experience whatsoever as to whether this would work or not, but could I create an RBScript and then just add a bit of text that would contain "xxxxx.show" in it, which I could vary as I liked, to load the Windows? I'm not sure if there are any overheads or reasons why I would not use an RBScript?

In the meantime, despite me not wanting to do it, I think I'll just go for the Select Case type option as I need to finish the job, even though I was trying to avoid it, but it does seem as though the option I really need just doesn't exist. Shame, I think it's something that should be considered for a future release.

Richard


On 20 Aug 2006, at 06:26, [EMAIL PROTECTED] wrote:

Are the windows similar in any way? If the layout of the forms is identical, then I would strongly suggest having one form with the spots where you put your questions, and then you create one and insert your text on the fly. This would significantly reduce the amount of memory your program needs.

If the numbering scheme you're using for the windows is a simple serial number starting at zero, you could easily use a string array for each piece of text. For example sQuestions(120) As String would contain your questions, sExplanations(120) would contain your explanations, sYesButtons(120) As String would contain the captions for the buttons that equal to "Yes", sNoButtons(120) As String would contain the captions for the buttons that equal to "No", and so on.

Then, for the order of your questions, you could use two arrays. The first, sPrevQuestions(50) As String would contain a comma or dash delimited list of the previous questions in order, and iNextQuestion(50) As Integer would give the next question. The rows in these two arrays would have to line up. For example, suppose you asked questions 3, 2, 4 and 6 in that order. You could figure out what row that's on in the first array... sPrevQuestions.Lookup("3,2,4,6") .... and then pull that row from iNextQuestion(). Suppose the value in that cell is 9, so the next question to ask is number nine.

To load all these arrays, I would suggest writing all the text in text files, one for each array, and dragging the text files into your project. Then, when the project is compiled, the text files will be available to you at runtime in the form of strings. Use Split(sourcetext, chr(13)) to convert a return delimited text file into an array. If you are using Windows, I believe a return is actually chr(13) + chr(10).

Again, I don't know exactly what your idea is, so I'm just throwing an idea out there.


Now, as for actually answering your question... :) RB uses window objects to reference windows, unlike VB, where you can use a string. To tell you the truth, I don't know if you can access a window using a string variable in RB. The suggestion Peter Truskier made about using a dictionary is a good one. Because a dictionary uses variants, any cell can have any one object, whether it's the same type as the cells around it or not. Store your index into the key and the window object into the value.

HTH,
Andrew Keller

On Aug 19, 2006, at 7:45 PM, Richard Hillsdon wrote:

Hi,

Ok, I'm new to RB but have to develop a package that is going really well thanks to the ease of use of RB. I need one technical issue solving that is driving me mad! As someone who has used VB it was an easy one and an everyday task. I've found one article in the archives, which sort of might do it, but actually more work and more complex code than I want.

Here it is. The problem is simple. I have about 120 Windows in my app that form a survey. The questions will be answered in a different order each time, depending on the answers to previous questions. So Window1 may be followed by Window3 etc. I also want one subroutine that controls the display of all the Windows.

In theory this is easy. My code can create the name of the next required form easily, such as "Window105". But how on earth can I now load Window105 using a String as my reference? It's such a simple requirement, but I cannot find a simple way to do it. In Visual Basic (and I know this isn't the same language but just to show what I need), I would simply have said forms(myNextForm) or forms("Window105"). How can I do this in RB?

It's really holding me back from completing this project which I need to do quick, and everything else is working fine. I could also use an integer to determine the next Window to display if that would help.

As I said, I've looked at one solution that kind of gets close to the problem, but the amount of code required and sub-classing and method add-ons would make it unworkable.

Any ideas? I've been searching all day for the answer to this little problem...


Richard
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to