Newsgroup: it.comp.lang.vo-clipper
Titolo: [VO2.5b3]Seek su ListView

 	ENDIF	
Il problema è che oLVI è sempre vuota, il Seek fallisce sempre. 
Ovviamente se chiedo il GetText della column che mi interessa risponde 
correttamente con il testo associato alla LVI. Ho provato anche a 
mettere come prima column quella che mi interessava, nell'ipotesi che il 
seek operasse solo sulla prima column visualizzata, ma senza esito. 
Qualcuno ha già combattuto con questo problema?
Grazie, Antonio

 ha scritto nel messaggio 
news:479227a8$0$10627$4faf...@reader2.news.tin.it...


Grazie Massimo della risposta domenicale.
Le opzioni wrap e partial le ho attivate dopo nei vari tentativi perchè 
il codice minimo identico a quello da te inserito non funzionava...ma tu 
l'hai mai usato il seek dell'LV con successo? Se si allora devo avere 
fatto qualche cavolata io, altrimenti potrebbe essere una cavolata di 
VO, in fondo già sapere quale delle due è di molto aiuto.
Saluti, Antonio
Massimo Bighelli ha scritto:


 ha scritto nel messaggio 
news:47938d94$0$36448$4faf...@reader5.news.tin.it...


 ha scritto nel messaggio 
news:47938d94$0$36448$4faf...@reader5.news.tin.it...


Antonio
METHOD Seek(uValue, kSeekType, nStart, lWrap, lPartial) CLASS LVNuova
	LOCAL strucFindInfo IS _winLV_FindInfo
	LOCAL oPoint AS Point
	LOCAL pszText AS PSZ
	LOCAL nItem AS INT
	LOCAL dwIndex AS DWORD
	// start the seek at the beginning by default
	IF IsNil(nStart)
		nStart := -1
	ELSE
		nStart--
	ENDIF
	// find the item closest to the given point
	IF IsInstanceOfUsual(uValue, #Point)
		// kSeekType is a usual
		Default(@kSeekType, LV_SEEKDOWN)
		IF kSeekType == LV_SEEKUP
			strucFindInfo.vkDirection := VK_UP
		ELSE
			strucFindInfo.vkDirection := VK_DOWN
		ENDIF
		// convert the point to a _winPoint
		oPoint := uValue
		oPoint := __WCConvertPoint(SELF, oPoint)
		strucFindInfo.pt.x := oPoint:X
		strucFindInfo.pt.y := oPoint:Y
		strucFindInfo.flags := LVFI_NEARESTXY
		// do the seek
		nItem := ListView_FindItem(SELF:Handle(), nStart, LONG(_CAST,
@strucFindInfo))
	ELSEIF kSeekType == LV_SEEKTEXT
		// uValue is the item text, so a text seek is in order
		strucFindInfo.flags := LVFI_STRING
		// set wrap-around (off by default)
		Default(@lWrap, FALSE)
		IF lWrap
			strucFindInfo.flags := _Or(strucFindInfo.flags, LVFI_WRAP)
		ENDIF
		// set exact search (on by default)
		Default(@lPartial, FALSE)
		IF lPartial
			strucFindInfo.flags := _Or(strucFindInfo.flags, LVFI_PARTIAL)
		ENDIF
 
		// do the seek
		pszText := StringAlloc(AsString(uValue))
		strucFindInfo._psz := pszText
		nItem := ListView_FindItem(SELF:Handle(), nStart, LONG(_CAST,
@strucFindInfo))
		IF (PTR(_CAST, pszText) != NULL_PTR)
			MemFree(pszText)
		ENDIF
	ELSEIF kSeekType == LV_SEEKVALUE
		// uValue is the associated usual value, so a usual seek is in order
		strucFindInfo.flags := LVFI_PARAM
		// set wrap-around (off by default)
		Default(@lWrap, FALSE)
		IF lWrap
			strucFindInfo.flags := _Or(strucFindInfo.flags, LVFI_WRAP)
		ENDIF
		// find uValue in the first column's value list
		dwIndex := AScan(SELF:__GetColumnFromIndex(1):__ValueList, uValue)
		IF dwIndex != 0
			strucFindInfo.lParam := LONG(_CAST, dwIndex)
		ENDIF
		nItem := ListView_FindItem(SELF:Handle(), nStart, LONG(_CAST,
@strucFindInfo))
	ENDIF
	// return the ListViewItem object from nItem, if it exists
	IF (nItem != -1)
		ListView_EnsureVisible(hwnd, nItem, 1)
		RETURN SELF:GetItemAttributes(nItem + 1)
	ELSE
		RETURN NULL_OBJECT
	ENDIF
E' un bug del metodo seek!
Sostituisci il metodo originale con questo.
Saluti 
Mario Costantino
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Grazie a tutti. Antonio