Einzelnen Beitrag anzeigen

bombjack

Registriert seit: 10. Nov 2003
Ort: Dresden
6 Beiträge
 
Delphi 5 Professional
 
#1

TListBox - Eintrag makrieren (Fokus setzen?)

  Alt 16. Nov 2003, 09:06
Hallo,

Ich habe ein Hauptformular, in dem sich eine TListBox befindet. Ich möchte darin dann einzelne Einträge nach oben bzw. nach unten verschieben. Gelöst habe ich das Problem mit folgender Methode:

Hier noch falls es erklärt werden sollte:

EditList = TListBox
UpButton / DownButton sind die entsprechenden Button's
(wer hätte das gedacht? )


Delphi-Quellcode:
// -- nach oben bewegen --
procedure MainForm.UpButtonClick(Sender: TObject);
begin
  if MainForm.EditList.ItemIndex > 0 then
    MainForm.EditList.Items.Move(MainForm.EditList.ItemIndex, MainForm.EditList.ItemIndex - 1);
  MainForm.EditList.SetFocus;
end;
Delphi-Quellcode:
// -- nach unten bewegen --
procedure MainForm.DownButtonClick(Sender: TObject);
begin
  try
    if (MainForm.EditList.ItemIndex < (MainForm.EditList.Items.Count - 1)) and (MainForm.EditList.Items.Count > 1 ) then
      MainForm.EditList.Items.Move(MainForm.EditList.ItemIndex, MainForm.EditList.ItemIndex + 1);
  except
  end;
  S_Alg.EditList.SetFocus;
end;
Das try ... except ist nur weil ich immer eine Exception bekam, sobald ich gerade ein Element nach unten bewegt hatte und der Fokus nicht mehr auf einem Eintrag stand. Und genau da liegt mein Problem:

Ich möchte gern, dass bei einem Move der geschobene Eintrag den Fokus erhält (und selektiert = [blau] unterlegt ist). Den Fokus hat der Eintrag zumindest bei dem MoveUp immer noch. Bei dem MoveDown wandert der Fokus allerdings auch nach oben (anstatt nach unten) und man ist dann zwei Einträge weg von dem eigentlich gewünschten Element. Auch verschwindet die Selektierung einfach (die würde ich halt gerne nachträglich setzen).

Mit TListItem.Focused kann man ja abfragen ob ein bestimmter Eintrag fokusiert ist. Allerdings müsste ich setzen und nicht abfragen... Geht das? Und wenn ja, wie?


Danke für Eure Hilfe schonmal!
Wenn Sie glauben, Sie hätten mich verstanden, dann habe ich mich falsch ausgedrückt!
  Mit Zitat antworten Zitat