AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dragDrop mit TListbox, Objekt übernehmen

Ein Thema von khh · begonnen am 17. Jun 2010 · letzter Beitrag vom 18. Jun 2010
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

dragDrop mit TListbox, Objekt übernehmen

  Alt 17. Jun 2010, 13:51
hallo zusammen,
mit
self.moeglichezusatzstoffelistbox.Items.AddObject(Tlisteninhalt(Fzusatzstoffelist.items[i]).Bezeichnung, Tlisteninhalt(Fzusatzstoffelist.items[i])); fülle ich in einer Schleife eine Listbox aus der DB.

mit
Delphi-Quellcode:
eintrag := moeglichezusatzstoffeListBox.Items[moeglichezusatzstoffeListBox.Itemindex];
 enthaltenezusatzstoffeListBox.Items.Add(eintrag);
im ondragdrop einer empfangenden Listbox empfange ich die Einträge per Drag and Drop in eine 2te Listbox.

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
Karl-Heinz

Geändert von mkinzler (18. Jun 2010 um 07:33 Uhr) Grund: CODE-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: dragDrop mit TListbox, Objekt übernehmen

  Alt 17. Jun 2010, 16:48
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

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: dragDrop mit TListbox, Objekt übernehmen

  Alt 17. Jun 2010, 17:04
mit
self.moeglichezusatzstoffelistbox.Items.AddObject(Tlisteninhalt(Fzusatzstoffelist.items[i]).Bezeichnung, Tlisteninhalt(Fzusatzstoffelist.items[i])); fülle ich in einer Schleife eine Listbox aus der DB.
Mach doch erst mal den obigen Code sauber (unter Verwendung einer Zwischenvariablen):
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.
Andreas

Geändert von shmia (17. Jun 2010 um 17:10 Uhr) Grund: PS hinzu
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#4

AW: dragDrop mit TListbox, Objekt übernehmen

  Alt 17. Jun 2010, 17:17
mit
self.moeglichezusatzstoffelistbox.Items.AddObject(Tlisteninhalt(Fzusatzstoffelist.items[i]).Bezeichnung, Tlisteninhalt(Fzusatzstoffelist.items[i])); fülle ich in einer Schleife eine Listbox aus der DB.
Mach doch erst mal den obigen Code sauber (unter Verwendung einer Zwischenvariablen):
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.
Du liegst richtig mit deiner Vermutung.
Sorry, hatte vergessen zu erwähnen dass das Ganze unter lazarus läuft, da gibts diesen Dialog leider nicht
Karl-Heinz
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: dragDrop mit TListbox, Objekt übernehmen

  Alt 17. Jun 2010, 19:05
Sorry, hatte vergessen zu erwähnen dass das Ganze unter lazarus läuft, da gibts diesen Dialog leider nicht
Ich könnte Dir das Formular hier einstellen oder mailen - ich weiss aber nicht, ob das legal ist.

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);
Andreas
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#6

AW: dragDrop mit TListbox, Objekt übernehmen

  Alt 18. Jun 2010, 07:30
danke dir, werd ich so mal probieren

Gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#7

AW: dragDrop mit TListbox, Objekt übernehmen

  Alt 18. Jun 2010, 10:43
oki
mit
Code:
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;
in etwas abgeänderter Form
und
Code:
MoveSelected(moeglichezusatzstoffeListBox, enthaltenezusatzstoffeListBox.Items);
kopiere(verschiebe) ich die Einträge in die ZielLisbox
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
Karl-Heinz

Geändert von khh (18. Jun 2010 um 10:46 Uhr)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#8

AW: dragDrop mit TListbox, Objekt übernehmen

  Alt 18. Jun 2010, 11:45
ich habs,
für die die es interessiert:

Code:
 Fzusatzstoffe := Thwdlisteninhalt(Fhwdzusatzstoffelist.items[i]);
 id := Fzusatzstoffe.DATENBANK_ID;
Ich danke euch

Gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 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