| |
|
|
| ich habe ein programm, das 3 listviews verwendet. durch die selektion von jeweils einer zeile in den ersten beiden LVs und anschließendem drücken eines buttons, werden die selektieren zeilen verknüpft und in der 3. LV dargestellt.
bisher ist es mir nicht gelungen die selektion einer zeile in einer LV zu erhalten wenn man in die 2. LV klickt. geht das überhaupt ? der weg den ich jetzt realisiert habe, indem ich mit dem anklicken die zeilen mit RaiseLine() einfärbe, funktioniert zwar, ist aber umständlich und langsam (da mein programm nicht nur auf das anklicken wartet, sondern auch im hintergrund schuftet).
r.r. |
|
|
| |
|
|
|
| Hallo,
das mit Selektion und Focus finde ich auch eine seltsame Sache, durch die ich auch noch nicht richtig gestiegen bin. Ist aber anscheinend eine Eigenart des Listview Controls... Versuch mal ein vorangestelltes SetFocus oder BringWindowToTop, usw.
Gruß, Frank |
|
|
| |
|
|
|
| Hallo Frank,
ich benutze diesen Thread mal gleich, um ähnliche Fragen zur Selektion von Zeilen zu stellen.
-Im Explorer sind viele Spalten inaktiv, das heisst man kann die Zeile nicht markieren wenn man sie anklickt. Dafür kann man dort aber ein Auswahlrechteck großziehen, welches ich gerne nicht nur zum selektieren sondern auch zum scrollen benutze - möglich?
-In Listboxen kann ich überall mit gehaltener Maustaste scrollen, kann man das realisieren?
-Markierung bei Listview ohne Focus fände ich genau wie Ragnar auch wichtig.
-Zeilenmarkierungen sollte bei Rechtsklick nicht aufgehoben werden. Das macht sich gar nicht gut bei Rechtsklick-Menüs, die sich auf eine Zeile beziehen. Eben so wie im Explorer...
Vielleicht dürfen wir uns in der nächsten Version auf die ein oder andere Funktion zu diesem Thema freuen?
Gruß, Sven |
|
|
| |
|
|
|
| Hallo Sven,
> Hallo Frank, > > ich benutze diesen Thread mal gleich, um ähnliche Fragen zur Selektion von Zeilen zu stellen. > > -Im Explorer sind viele Spalten inaktiv, das heisst man kann die Zeile nicht markieren wenn man sie anklickt. Dafür kann > man dort aber ein Auswahlrechteck großziehen, welches ich gerne nicht nur zum selektieren sondern auch zum scrollen benutze > - möglich?
Ja, allerdings geht das nur in der ersten Spalte. Auch so eine Listviewsache, für die es kein Einstellungsflag gibt.
> > -In Listboxen kann ich überall mit gehaltener Maustaste scrollen, kann man das realisieren? >
Wie gesagt, in der ersten (linken) Spalte.
> -Markierung bei Listview ohne Focus fände ich genau wie Ragnar auch wichtig.
Dafür gibt es ein Flag: Vor dem Erstellen eines Listviews das Flag setzten via SetStyle(8). Damit können alle LVS_ Styles gesetzt werden. Das Flag, das bei CreateListview() übergeben, ist LVS_EX_ Style.
> -Zeilenmarkierungen sollte bei Rechtsklick nicht aufgehoben werden. Das macht sich gar nicht gut bei Rechtsklick-Menüs, > die sich auf eine Zeile beziehen. Eben so wie im Explorer...
Sven, die Listview.dll creiert ja kein eigenes (selbstgemachtes) Control, sondern vereinfacht das Handling mit SysListview-Controls. Ich kann zwar einiges innerhalb des Subclassings ändern/hinzufügen, aber hier gibt es Grenzen. Der Explorer arbeitet mit Ownerdrawn Listviews.
> Vielleicht dürfen wir uns in der nächsten Version auf die ein oder andere Funktion zu diesem Thema freuen?
Ich werde mir Gedanken machen. Wenn es wieder kühler ist
Gruß, Frank |
|
|
| |
|
|
|
| Zum eigentlichen Thema des Threads nochmal:
if and(not(GetSelectedLine(box&)), gt(lastsel&,-1)) SelectLine(box&,lastsel&,0) endif
if gt(GetSelectedLine(box&),-1) lastsel& = GetSelectedLine(box&) endif
Funktioniert aber flackert leider, da das Listview den Schwindel sofort bemerkt und die Markierung wieder aufheben möchte. Ich weiß du verwendest nur normale Listviews und mit denen ist nicht alles möglich doch hierfür muss es eigentlich einen Style Parameter geben, denn man sieht dies in sehr vielen Programmen. |
|
|
| |
|
|
|
| Vergiss meinen letzten Beitrag, hast du schon beantwortet und funktioniert so auch - die Hitze...
Ich habe übrigens das mit der Selektierung bei Rechtsklick hinbekommen. Einfach ein SelectLine() vor das Trackmenu und die Zeile bleibt markiert. Man möchte doch wissen, welchen Datensatz man gerade bearbeitet. |
|
|
| |
|
|
|
| Hi.
Noch besser. Allerdings ist SetStyle(8) die bessere Lösung.
Gruß, Frank |
|
|
| |
|
|