Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Combobox und Reihenfolge manuell? (https://www.delphipraxis.net/18573-combobox-und-reihenfolge-manuell.html)

schniede 21. Mär 2004 09:39


Combobox und Reihenfolge manuell?
 
Hallo!

Ich möchte den Inhalt der Stringliste einer Combobox manuell sortieren können.

d.h. element 3 , 5 stellen nach oben u.s.w.

gibt es da was fertiges oder muß ich mich selber dran machen?

Meine Idee: Eintrag 3 merken
Eintrag 3 löschen
ehemals Eintrag 3 bei zeile x,y einfügen.

Wenn wer was bessres weiß, laßt mal bitte was hören.

gruß schniede

Keldorn 21. Mär 2004 09:53

Re: Combobox und Reihenfolge manuell?
 
Hallo

wenn es dir um das verschieben von Einträgen geht, kommst du vielleicht mit Tstrings.move weiter.
Wenn die Liste Sortiert werden soll, gibts eigentlich recht viel im Forum.

Mfg Frank

schniede 21. Mär 2004 11:46

Re: Combobox und Reihenfolge manuell?
 
Danke!

mit Move konnte ich nicht so viel anfangen .Wen es interresiert ich habe es jetzt so gelöst.

Code:
procedure Tkatform.hochbtnClick(Sender: TObject);

var
gemerkt:string;
alterindex:integer;

begin
gemerkt:=listbox1.Items[listbox1.itemindex];
alterindex:= listbox1.itemindex;
 if alterindex >0 then begin
 Listbox1.Items.Delete(alterindex);
 dec(alterindex);
 Listbox1.Items.Insert(alterindex,gemerkt);
 listbox1.itemindex:=alterindex;
 end;
end;

procedure Tkatform.runterbtnClick(Sender: TObject);

var
gemerkt:string;
alterindex:integer;

begin
gemerkt:=listbox1.Items[listbox1.itemindex];
alterindex:= listbox1.itemindex;
 if (listbox1.Count-1) > alterindex then begin
 Listbox1.Items.Delete(alterindex);
 inc(alterindex);
 Listbox1.Items.Insert(alterindex,gemerkt);
 listbox1.itemindex:=alterindex;
end;
end;

Keldorn 21. Mär 2004 12:31

Re: Combobox und Reihenfolge manuell?
 
du machst es dir mit move trotzdem einfacher

Delphi-Quellcode:
procedure TForm1.Button_raufClick(Sender: TObject);
Var alterindex:integer;
begin
  if listbox1.ItemIndex>0 then
    begin
      alterindex:=listbox1.ItemIndex;
      //verschieben
      ListBox1.Items.Move(listbox1.ItemIndex,listbox1.ItemIndex-1);
      //neues item markieren
      listbox1.ItemIndex:=alterindex-1;
    end;
end;

procedure TForm1.Button_runterClick(Sender: TObject);
Var alterindex:integer;
begin
  if listbox1.ItemIndex<ListBox1.Items.Count-1 then
    begin
      alterindex:=listbox1.ItemIndex;
      //verschieben
      ListBox1.Items.Move(listbox1.ItemIndex,listbox1.ItemIndex+1);
      //neues item markieren
      listbox1.ItemIndex:=alterindex+1;
    end;
end;
Zitat:

listbox1.Items[listbox1.itemindex]
steht bei dir ganz am Anfang, wenn mal nichts selektiert ist kommt es bei dir zu einer AV

schniede 21. Mär 2004 15:21

Re: Combobox und Reihenfolge manuell?
 
Danke Keldorn!!

Deine Variante es wahrlich eleganter.
In der Hilfe sah mir das mit move son bissel gefährlich aus :-).

gruß schniede.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz