Someone else has written a win32::Gui program to do just what you are trying to do. I don't seem to have the code anymore. Maybe they can post it again, or you can search the archives.
Here's a piece of code I just wrote that gets all the data, including the image, from a listview, it puts it into a hash. I used this with the column sort routine that has been floating around, by Jonathan Southwick [EMAIL PROTECTED] I am still working out the bugs, but this section of code should help you. # you must already have $totalcols (the # of columns in your listview) # I don't think there is a way to pull this from the object. %data=(); $rows=$ListView->Count(); for $i(0..$rows-1) { $row=""; my %result=$ListView->GetItem($i,0); $image=$result{-image}; for $j(0..$totalcols-1) { my %result=$ListView->GetItem($i,$j); $text=$result{-text}; $row.=",$text"; } $data{$i}="$image$row"; #Win32::MsgBox("data($i)=$image$row\n"); } ---------------------------------------------------------------------------- --------------------- Tim Thomas Unix Systems Administrator Lockheed Martin EIS ยท Denver Data Center 303-430-2281 mailto:[EMAIL PROTECTED] ---------------------------------------------------------------------------- --------------------- -----Original Message----- From: Michael Solomon [mailto:[EMAIL PROTECTED] Sent: Thursday, February 15, 2001 5:19 AM To: Perl Gui (E-mail) Subject: [perl-win32-gui-users] get value from list I am querying a database and putting the output into a listview What I would like to next is to click on an item in the list and then drilldown into the data base The question is how can I return the value from a List I am fairly new at using Win32::GUI and apologise if this is a stupid question. Should I be using a different type than listview and if so what should I be using? use strict; use Socket; use Win32::GUI; use Win32::ODBC; #set variables my (%Data, %new, $result, $Window, $width); my $Dir = "//neptune/tech_dept/databases"; my $DBase = "asset.mdb"; my $DriverType = "Microsoft Access Driver (*.mdb)"; my $Desc = "Description=The Win32::ODBC Test DSN for Perl"; my $DSN = "tmpdsn"; $Window = new GUI::Window( -name => "Window", -text => "Win32::GUI::ListView test", -width => 350, -height => 500, -left => 100, -top => 100, ); $Window->AddListView( -name => "ListView", -left => 10, -top => 10, -width => 330, -height => 383, -style => WS_VISIBLE | 1, -gridlines => 1, ); $width = $Window->ListView->ScaleWidth; $Window->ListView->InsertColumn( -index => 0, -width => $width/2, -text => "Asset No", ); $Window->ListView->InsertColumn( -index => 1, -width => $width/2, -text => "IP Address", ); $Window->AddRadioButton( -name => "Radio1", -left => 8, -top => 410, -text => "192 Network ", -tabstop => 1, ); $Window->AddRadioButton( -name => "Radio2", -left => 8, -top => 430, -text => "212 XTML ", -tabstop => 1, ); $Window->AddRadioButton( -name => "Radio3", -left => 8, -top => 450, -text => "212 EasyNet ", -tabstop => 1, ); #$Window->ListView->TextColor(hex("0000FF")); $Window->Show(); $Window->Dialog(); sub MAIN { #set up dsn Win32::ODBC::ConfigDSN(ODBC_ADD_DSN, $DriverType, ("DSN=$DSN", "Description=The Win32 ODBC Test DSN for Perl", "DBQ=$Dir\\$DBase", "DEFAULTDIR=$Dir", "UID=", "PWD=")); #open connection as $0 my $cO = new Win32::ODBC($DSN); #run sql $cO->Sql("SELECT assetid, ipaddress FROM ip_address where ipaddress like '${result}%'"); #reset new %new = (); # Fetch the next rowset while($cO->FetchRow()){ %Data = $cO->DataHash(); #convert to binary $new{inet_aton($Data{ipaddress})} = "$Data{assetid},$Data{ipaddress}"; } #close database $cO->Close(); #remove tempdsn Win32::ODBC::ConfigDSN(ODBC_REMOVE_DSN, $DriverType, "DSN=$DSN"); #clear items $Window->ListView->Clear(); foreach (sort keys %new) { my ($asset, $ip ) = split(",",$new{$_}); $Window->ListView->InsertItem(-text => [ "$asset", "$ip" ] ); }; } sub MAIN1 { #clear items $Window->ListView->Clear(); foreach (sort numeric values %new) { my ($asset, $ip ) = split(",",$_); $Window->ListView->InsertItem(-text => [ "$asset", "$ip" ] ); }; } sub numeric { $a <=> $b }; sub Radio1_Click { if($Window->Radio1->Checked()) { $result = "192"; &MAIN; } elsif($Window->Radio2->Checked()) { $result = "212.88"; &MAIN; } elsif($Window->Radio3->Checked()) { $result = "212.74"; &MAIN; } } sub Radio2_Click { Radio1_Click(); } sub Radio3_Click { Radio1_Click(); } sub ListView_ColumnClick { my $column = shift; if ($result ne "" ) { if ( $column == 1 ) {&MAIN;} if ( $column == 0 ) {&MAIN1;} } } __END__ Regards Mike Solomon Technical Manager Work 01582 831125 Mobile 07941 537 172 email [EMAIL PROTECTED] ============================================================================ ====== Important: Any views or opinions expressed by the sender do not necessarily represent those of the 3s Group. This e-mail and any attachment(s) are intended for the above named only and may be confidential. If you are not the named recipient please notify us immediately. You must not copy or disclose the contents to any third party. Internet e-mail is not a fully secure communications medium. Please take this into account when sending e-mail to us. Any attachment(s) to this e-mail are believed to be free from virus, but it is the responsibility of the recipient to make all the necessary virus checks. www.3s-group.com =========================================================================