Autor Beitrag
FinalFantasy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Di 05.07.05 14:46 
Hi,

Ich habe hier eine ListBox mit einem Kontextmenü. Bei einem Rechtsklick auf die Liste soll allerdings nicht nur das Menü erscheinen, sondern auch der unter dem Cursor befindliche Eintrag der Box markiert werden. Wie kann ich das machen?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 05.07.05 14:59 
Moin!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.ListBox1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
  var
    i: Integer;
begin
  i := ListBox1.ItemAtPos(MousePos,TRUE);
  if (i > -1) then begin
    ListBox1.ItemIndex := i;
    ListBox1Click(Self); // wenn mit dem R-Klick auch die "normalen" Klick-Aktionen laufen sollen
  end
  else
    Handled := TRUE;
end;


cu
Narses
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 05.07.05 16:47 
Ich würde davon absehen das standard Verhalten von standard Komponenten zu ändern. Verwirrt nur den Benutzer und trägt nicht dazu bei dein Programm anwenderfreundlich zu machen.
sahib
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117

Win 2000 SP4+
Delphi 5 Prof.
BeitragVerfasst: Di 05.07.05 20:11 
[OT]
Hi Michael.

Ich halte das für sehr anwenderfreundlich. Angenommen, das Menu ist kontextsensitiv, dann kommt es natürlich vor, dass bei der Deinigen Methode falsche Informationen auftauchen. Zumindest anders, als die erwarteten. Standard Komponenten und Standard-Verhalten läßt sich wohl nur auf Delphi beziehen? Denn im Explorer zB wrid bei Klick mit rechter Maustaste zuerst der Eintrag selektiert und dann erscheint das Menu. Und das ist auch gut so (meiner Meinung nach). Ok, vielleicht ein schlechtes Beispiel, weil der Explorer keine ListBox ist ;)

Christian
FinalFantasy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Di 05.07.05 20:49 
Auf einen Rechtsklick werden je nach Auswahl aus dem Kontextmenü unterschiedliche Forms mit jeweils unterschiedlichen Details zu dem gerade in der Listbox ausgewähltem Item angezeigt.
Es ist also durchaus sinnvoll, dass so zu gestallten, da man sonst immer erst mit einem Links-Click das Item auswählen muss, und dann erst mit dem Kontextmenü arbeiten kann (und das finde ich sehr umständlich vor allem verwirend, weil man immer die Details zum selektiertem Item erhält, auch wenn man ein anderes Rechts-Clickt).
Ausserdem war dieser Punkt so ziemlich der erste, der an meinem Programm von den Anwerden bemängelt wurde.
Ob es es sich dabei um eine ListBox, TreeView (wie im Explorer) oder sonstiges Handelt, finde ich ziemlich unwichtig. Der Zweck ist jedoch derselbe.

Von daher kann ich mich nur sahib anschliessen.