![]() |
dragDrop mit TListbox, Objekt übernehmen
hallo zusammen,
mit
Delphi-Quellcode:
fülle ich in einer Schleife eine Listbox aus der DB.
self.moeglichezusatzstoffelistbox.Items.AddObject(Tlisteninhalt(Fzusatzstoffelist.items[i]).Bezeichnung, Tlisteninhalt(Fzusatzstoffelist.items[i]));
mit
Delphi-Quellcode:
im ondragdrop einer empfangenden Listbox empfange ich die Einträge per Drag and Drop in eine 2te Listbox.
eintrag := moeglichezusatzstoffeListBox.Items[moeglichezusatzstoffeListBox.Itemindex];
enthaltenezusatzstoffeListBox.Items.Add(eintrag); Leider habe ich so nur die Bezeichnung aus der Liste, die ID kommt nicht mit rüber :-( Wie bekomme ich auch die ID in die "Empfängerbox" ohne dass diese angezeigt wird? Danke für eure Hilfe Gruss KHH |
AW: dragDrop mit TListbox, Objekt übernehmen
Hallo,
was verstehst Du unter ID? du fügst doch in die neue Listbox den Eintrag nur mit "add" hinzu, also ohne addobject ? Gruß Frank |
AW: dragDrop mit TListbox, Objekt übernehmen
Zitat:
Delphi-Quellcode:
var
inhalt : Tlisteninhalt; begin for i := 0 to .... do begin //... inhalt := Tlisteninhalt(Fzusatzstoffelist.items[i]); Assert(Assigned(inhalt)); // zur Sicherheit // hier Breakpoint setzen und nachschauen, was in "inhalt" steht moeglichezusatzstoffelistbox.Items.AddObject(inhalt.Bezeichnung, inhalt); ... end; PS: unter Datei -> Neu... -> Formulare gibt es den Dialog mit zwei Listenfeldern Ich würde den Sourcecode studieren und dann abkupfern. Mir scheint, du hast zwei Listen: MöglicheZusatzstoffe (Quelle )und Zusatzstoffe (Ziel). Der Benutzer soll dann einige oder alle Stoffe von "links" nach "rechts" ziehen. Dabei sollen auch die Objekte im Property Objects[] mitgezogen werden. Genau dies kann der Dialog leisten. |
AW: dragDrop mit TListbox, Objekt übernehmen
Zitat:
Sorry, hatte vergessen zu erwähnen dass das Ganze unter lazarus läuft, da gibts diesen Dialog leider nicht :-( |
AW: dragDrop mit TListbox, Objekt übernehmen
Zitat:
Aber ich geb' Dir mal etwas Code zum Verschieben von Listbox-Items.
Delphi-Quellcode:
// Alle selektierten Items einer ListBox in die Liste "Items" verschieben
// die Reihenfolge der selektierten Items bleibt erhalten // anhängende Objekte werden mitverschoben class procedure TDualListDlg.MoveSelected(List: TCustomListBox; Items: TStrings); var I, ipos: Integer; tmp:string; begin ipos := Items.Count; // Einfügeposition (am Ende) for I := List.Items.Count - 1 downto 0 do if List.Selected[I] then begin Items.InsertObject(ipos, List.Items[I], List.Items.Objects[I]); List.Items.Delete(I); end; end; Beispielaufrufe:
Delphi-Quellcode:
MoveSelected(ListBoxAlleStoffe, ListBoxGewaehlteStoffe.Items);
// oder rückwärts MoveSelected(ListBoxGewaehlteStoffe, ListBoxAlleStoffe.Items); |
AW: dragDrop mit TListbox, Objekt übernehmen
danke dir, werd ich so mal probieren
Gruss KHH |
AW: dragDrop mit TListbox, Objekt übernehmen
oki
mit
Code:
in etwas abgeänderter Form
class procedure TDualListDlg.MoveSelected(List: TCustomListBox; Items: TStrings);
var I, ipos: Integer; tmp:string; begin ipos := Items.Count; // Einfügeposition (am Ende) for I := List.Items.Count - 1 downto 0 do if List.Selected[I] then begin Items.InsertObject(ipos, List.Items[I], List.Items.Objects[I]); List.Items.Delete(I); end; end; und
Code:
kopiere(verschiebe) ich die Einträge in die ZielLisbox
MoveSelected(moeglichezusatzstoffeListBox, enthaltenezusatzstoffeListBox.Items);
funktioniert einwandrei. Aber ich steh immer noch auf dem Schlauch :-( Wie komm ich jetzt an die Eintrage in der Zielbox ran? ich brauch dort nur die id? Danke Gruss KHH |
AW: dragDrop mit TListbox, Objekt übernehmen
ich habs,
für die die es interessiert: :-)
Code:
Ich danke euch
Fzusatzstoffe := Thwdlisteninhalt(Fhwdzusatzstoffelist.items[i]);
id := Fzusatzstoffe.DATENBANK_ID; Gruss KHH |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz