I used the Hotspot XML for testing, because it has a listview. So I popped it up through Immed with:

dlg "t:\hotspot\hotspot.xml", "hotspotsDialog"

I then made a copy of the control:

set w  = mouse.window.control

Then I nuked all the columns:

w.columns(1).delete (I did this several times until all the columns were removed).

Then I created a new column:

Set c = w.newcolumn

Added it's text:

c.header = "Blah1"

Inserted it:

c.insert 0

Then set its width to autosize:

c.width = -2

I repeated those last few steps until I had columns Blah1 to Blah4.

Then I added several new list items:

set i = w.newitem
i.text = "Something"
i.insert 99

I repeated that about six times. That gave me several listview items, all with the text "something."

Then came the fun part. x represents column headers. y represents listview items.

for x = 0 to 3 : for y = 1 to 6 : w.text(y, x) = "r" & y & "c" & x + 1 : next : next

That populated every listview item in every column with the RyCx coordinates, like:

Blah1 Blah2 Blah3 Blah4
r1c1  r1c2  r1c3  r1c4
r2c1  r2c2  r2c3  r2c4
r3c1  r3c2  r3c3  r3c4
r4c1  r4c2  r4c3  r4c4
r5c1  r5c2  r5c3  r5c4
r6c1  r6c2  r6c3  r6c4

Aaron

On 11/3/2009 2:33 PM, Jeff Bishop wrote:
Can  you provide a snippit of the code used in IMMED?

----- Original Message ----- From: "Aaron Smith" <[email protected]>
To: <[email protected]>
Cc: "Doug Lee" <[email protected]>
Sent: Tuesday, November 03, 2009 12:26 PM
Subject: Re: Best way to do dynamic listviews in a WE dialog?


Well, I guess we should all prepare to be surprised. You really can
loop how you want to create listview items. You can add however many
columns you want, however many listview items you want, and then loop
through the items and populate them with whatever you want. We just
tried this using Immed and a blank listview control, and it worked
fine. You'll want to set the column widths to -2 so they autosize, and
pay special attention to the order in which you add them -- that seems
to make a difference. But it does work.

Whodda thunk it?

Aaron

On 11/3/2009 1:54 PM, Aaron Smith wrote:
Doug,

As long as you specify a width (explicitly or implicitly) for the
containing listview control, the control itself should take care of
sizing the column widths.

Also, you don't have to write your dynamic XML to a file before using
it. You can pass XML data directly to the Dialog method via a string.
Take a look at the simple dialogs and message box objects in the toolkit
for examples.

Regarding your last question, you would indeed be surprised if that
worked. So would we. Each listview item is it's own entity, so you can't
get there from here via your route.

Aaron

On 11/3/2009 11:37 AM, Doug Lee wrote:
I have occasion to create a scripted dialog containing a ListView
control which, depending on runtime circumstances, will either have no
column headers or will have an unknown number of columns with dynamic
names. By "dynamic," I mean they will change from one dialog creation
to another; they will not change while one dialog is showing.

This scenario obviously outrules xml specification of column headers.
My basic question, though, is how dynamic is WE's code for positioning
and sizing things, and when does it run?

Specifics:

If I don't say in xml that there will be column headers, then I create
them at runtime, will things look out of whack on screen?

Related: Would it be better to say in XML that there will be column
headers, then turn them off in code when necessary?

If spacing and sizing is worked out at dialog creation time, I'm
wondering if I should pull the crazy stunt of writing out a dynamic
xml file and then using that to open the dialog. I doubt this is
necessary, but since I won't know the column count or widths in
advance, who knows...

And one final question, though I bet I know the answer: Text items
and subitems look writeable, but I don't suppose this means I can
shortcut the normal red tape of inserting rows and columns a cell at a
time with Insert calls, and just fill listview.text(i,j) as a
two-dimensional array to populate the control? I'll be surprised if
that one works...




--
To insure that you receive proper support, please include all past
correspondence (where applicable), and any relevant information
pertinent to your situation when submitting a problem report to the GW
Micro Technical Support Team.

Aaron Smith
GW Micro
Phone: 260/489-3671
Fax: 260/489-2608
WWW: http://www.gwmicro.com
FTP: ftp://ftp.gwmicro.com
Technical Support & Web Development



--
To insure that you receive proper support, please include all past
correspondence (where applicable), and any relevant information
pertinent to your situation when submitting a problem report to the GW
Micro Technical Support Team.

Aaron Smith
GW Micro
Phone: 260/489-3671
Fax: 260/489-2608
WWW: http://www.gwmicro.com
FTP: ftp://ftp.gwmicro.com
Technical Support & Web Development

Reply via email to