Zitat:
Hmmm - uff! Ich drück mich einfach mal nicht richtig aus - oder?
Nein ! Du probierts einfach nicht die Vorschläge aus, die du bekommst!
Wenn Du das mit dem Itemindex in dein "Programm" einbaust funktioniert es so
wie Du willst
Delphi-Quellcode:
procedure TMainForm.UpButtonClick(Sender: TObject);
var
i : Integer;
begin
if EditList.ItemIndex > 0 then
begin
i := EditList.ItemIndex;
EditList.Items.Move(i, i-1);
EditList.SetFocus;
EditList.ItemIndex := i-1;
end;
end;
procedure TMainForm.DownButtonClick(Sender: TObject);
var x,y: Integer;
tstr: string;
begin
x:= EditList.ItemIndex;
y:= EditList.Items.Count;
str(x, tstr);
TempLabel.Caption:= tstr;
try
if (x < (y - 1)) and (y > 1 ) then
EditList.Items.Move(x, x + 1);
except
end;
EditList.SetFocus;
EditList.ItemIndex := x + 1;// := true;
end;
Zitat:
Falsch ist es nicht wirklich, wie ich finde.
Doch.
Die Logik Deines Programms, soweit man überhaupt schon davon sprechen kann ist :
Verschiebe den Eintrag auf dem aktuellen Formular wo der Button ist.
Du codest aber:
Verschiebe den Eintrag auf dem Formular, das in der globalen Variable MainForm steht.
Fügt doch mal spasseshalber einen Button Test zu, mit folgenden Code:
Delphi-Quellcode:
with TFormMain.Create(nil) do
begin
Left := Left + Width;
Show;
end;
Und nun schau Dir dein Programmverhalten an, wenn Du MainForm verwendest.
Macht das Verhalten Sinn ? Nein!
Solltest Du dies Formular irgendwo wiederverwenden wollen oder den Code
musst Du ausserdem völlig unnötige Änderungen vornehmen, die dir der Compiler
zudem nicht anzeigt, wenn irgendwo ein MainForm durch die uses-Anweisung bekannt ist.
Also weder logisch , noch wartbar, noch änderungsfreundlich und deshalb: einfach falsch
Bernd
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]