Hi,
I recently joined this mailing list and have enjoyed, and learned a lot, from
the
various posting. I've also been browsing the older posts on SourceForge and
found
those equally helpful. Unfortunately, I'm still struggling with bits and
pieces and
agree with the statement others have made that the documentation is lacking.
That
being said I have a few questions.
1) Can you lock the columns in a ListView so you can't drag the headers to
resize?
I can see the value in resizing a column on the fly, but for whatever reason
resizing
screws up the layout sometimes and I would prefer to just lock it down.
2) Has anyone attempted an application that was "skinable" similar to WinAmp?
Not
sure of the BitMap stuff would make this possible.
3) Dumb question but the I have to ask...The latest version of Win32::GUI is
1.0
therefore if I have installed that version I should see Win32-GUI [1.0] when I
query
my installed package...right?
Finally, in the spirit of giving back to the group, here is a little sub
routine I use to
insert list items into a list view.
My first Win32 app was created mostly from example/sample code. Whenever I
needed something different I often just screwed around with the code till I
figured
how to do what I needed. In the case of inserting items into a ListView I
found
myself rewriting the same sub procedure and giving it a different name. After
creating about 5 of nearly the same thing I woke up and said "there has to be a
better way." What I came up with was a way, at least for my app, to use one
sub to
insert content into different size ListViews. Here is the sub procedure:
sub InsertListItem {
# Sub-procedure that inserts results into the list table
# Takes an array that starts with List View Name followed by data for each
Column
my @InsertItems = @_;
my $ListViewName = shift(@InsertItems);
$Window->$ListViewName->Clear();
my $FirstItem = shift(@InsertItems);
my $item = $Window->$ListViewName->InsertItem(
-item => $Window->$ListViewName->Count(),
-text => $FirstItem,
);
$i=1;
foreach(@InsertItems){
$Window->$ListViewName->SetItem(-item=>$item,-subitem=>$i,-text=>$_);
$i++;
}
$Window->$ListViewName->View(1);
}
Basically, the sub takes an array where the first item is the name of the
ListView.
The first item is shifted off the array which leaves the content that needs to
be
inserted into the ListView. I clear the contents of the ListView because I'm
refreshing data rather than adding to it. If, however, you're adding to
existing data,
then just remove $Window->$ListViewName->Clear(). Next, I handle the first
insertion item on its own by shifting if off the array mostly because this is
what I
picked up in other examples; however, I'm not sure why this first item is
handled
differently. After that I just loop through the remaining items and increment
the $i
so the data is placed in the right subitem and then I set View to 1. Now
instead of 5
different subs doing nearly the same thing, I've got one that can insert data
into
ListViews of varying sizes. Hope someone else finds this useful.