TListView -> HILFE !!

Wie immer ein nichtlösbares Problem.

Hab ne TListView mit Scrollbalken darin befinden sich 20 Einträge,
also Zahlen von 1-20.

Nun kann man ja mit TopItem feststellen welcher Eintrag der erste sichtbare in der TListView ist.

Jetzt mein Riesenproblem: Wie kann ich selber einen Eintrag als TopItem bestimmen ?.
Also so in etwa:
Code:
TListView->TopItem->Index = 12;
Es geht so aber nicht, da man diesen Wert nur lesen kann, nicht aber selber setzen.

Jemand ne Ahnung wie ich das anstellen kann ?
 
Hi,

keine Ahnung, ob TListView eine Eigenschaft oder Methode besitzt, um das hinzubekommen, du kannst aber eine Windows Nachricht an das Control schicken:

Code:
::SendMessage( MyListView->Handle, LVM_ENSUREVISIBLE, iIndex, true );

iIndex ist der Index, der angezeigt werden soll und der letzte Paramter signalisiert, ob der Eintrag auch teilweise angezeigt werden darf. Ob der angezeigte Eintrag ganz oben in der Liste steht wird nicht garantiert, es wird nur garantiert, dass der Eintrag angezeigt wird.
Wenn der Eintrag unbedingt als erstes angezeigt werden muss bleibt dir wohl nichts anderes übrig, als die Anzahl der Einträge im ListView im Verhältnis zur Range der vertikalen Scrollbar zu berechenen, und dann per Scroll die Scrollbar zu positionieren.

Gruss,
Guido
 
Erstma Danke, es gibt eine Lösung, bei der muss aber etwas gerechnet werden.
Bin immer noch dabei !

Der gewünschte Eintrag muss selectiert werden.
Dann mit "MakeVisible" in der ListView Sichtbar machen.

Genau da ist aber dann der Haken, der Eintrag erscheint in der Listview aber nicht als TopItem.

Code:
ListView->Items->Item[ListView->VisibleRowCount-1 + ListView->ItemIndex]->MakeVisible(false);

Das nur provisorisch als Ansatz.

bis denne und danke nochma
 
Zuletzt bearbeitet:
Zurück