AGB  ·  Datenschutz  ·  Impressum  







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

Strings aus TListBox in Edit...

Ein Thema von Knotti2005 · begonnen am 18. Dez 2005 · letzter Beitrag vom 18. Dez 2005
Antwort Antwort
Knotti2005

Registriert seit: 10. Nov 2005
275 Beiträge
 
#1

Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 13:46
Wie erreiche ich es das der Benutzer meines Programmes die Strings aus einer TListBox mit Hilfe der Maus per Drag in ein Edit Feld seiner Wahl ziehen kann?
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 14:32
Hi,
einfach bei der Listbox die Eigenschaft DragMode auf dmAutomatic stellen, damit kannst du dann die Elemente per Drag&Drop bewegen.
Wenn du nun ein Element per Drag über ein Controll ziehst, wird bei diesem Cotroll (z.B. einem TEdit) das OnDragOver-Ereignis ausgelöst. Hier musst du nur prüfen, wo das Objekt her kommt, dass dieses Ereignis ausgelöst hat. Wenn es die ListBox ist, setzt du accept auf True (du würdest ein Drag&Drop annehmen) und beim loslassen wird dann wiederum das OnDragDrop-Ereignis ausgelöst. Hier musst du nur noch den ausgewählten Text ins Edit eintragen.

Also 3 Schritte,
1) Bei der Listbox DragMode auf dmAutomatic setzen
2) Beim Edit das Ereignis OnDragOver erstellen
3) Beim Edit das Ereignis OnDragDrop erstellen

Dann sollte dein Code ungefähr so aussehen
Delphi-Quellcode:
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source = ListBox1 then
    begin
      Accept := true;
    end;
end;

procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  (Sender as TEdit).Text := ListBox1.Items[ListBox1.ItemIndex];
end;
Das war's schon. Achtung, hab im DragDrop jetzt nicht überprüft ob der Sender überhaupt eine Listbox ist und ob die Referenz darauf gültig ist, sollte man natürlich immer machen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 14:52
Noch eine Ergänzung: wenn DragMode = dmAutomatic, dann muss man überlegen, was passieren soll, wenn der Benutzer aus dem leeren Teil der ListBox zieht. Und wie geht man um mit der Tatsache, dass kein oder mehrere Items selektiert wurden? DragItemIndex ist als private form variable zu deklarieren:

Delphi-Quellcode:
procedure TDemoForm.EditDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Source is TListBox) // accept item from listbox only
    and (TListBox(Source).SelCount = 1) // drag one only
    and (DragItemIndex <> -1); // selection by mouse is mandatory
end;

procedure TDemoForm.EditDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  with Source as TListBox do
    TEdit(Sender).Text := Items[DragItemIndex];
end;

procedure TDemoForm.ListBoxMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  DragItemIndex := ListBox.ItemAtPos(Point(X, Y), true);
end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Knotti2005

Registriert seit: 10. Nov 2005
275 Beiträge
 
#4

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 16:00
Kann ich das mit

Delphi-Quellcode:
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source = ListBox1 then
    begin
      Accept := true;
    end;
end;

procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  (Sender as TEdit).Text := ListBox1.Items[ListBox1.ItemIndex];
end;
usw... bei den Edits für alle Machen ich habe 24 Stück das ist ein wenig viel...

Und dann noch ich habe 2 mal Listboxen...
Ich bin shcon am probieren mit der 1 Listbox geht es mit der 2 aber nett...

  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 16:20
Hi.

Zitat von Knotti2005:
Ich bin schon am probieren - mit der 1 Listbox geht es mit der 2 aber nett...
Vielleicht heißt deine ListBox, mit der es funktioniert, zufällig ListBox1...

marabu
  Mit Zitat antworten Zitat
Knotti2005

Registriert seit: 10. Nov 2005
275 Beiträge
 
#6

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 16:45
Meine heisten ListBox1 und ListBox2 mit der 1 Listbox geht es nur wenn ich im Code die 1 durch 2 ersetzte geht es dann nicht...
  Mit Zitat antworten Zitat
Knotti2005

Registriert seit: 10. Nov 2005
275 Beiträge
 
#7

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 18:13
Ich hab es jetzt so...

Delphi-Quellcode:
procedure TForm2.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
(Sender as TEdit).Text := Memo1.Items[Memo1.ItemIndex];
(Sender as TEdit).Text := Memo2.Items[Memo2.ItemIndex];
end;

procedure TForm2.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source = Memo1 then
    begin
      Accept := true;
    end
    else
      if Source = Memo2 then
    begin
      Accept := true;
    end;
end;
Meine Listboxen heisen Memo1 und Memo2.... Und jetzt bekomme ich die Meldung Listenindes übersteigt das Maximum (-1)...
  Mit Zitat antworten Zitat
Knotti2005

Registriert seit: 10. Nov 2005
275 Beiträge
 
#8

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 18:15
Das Rätsel ist gelöst....

Delphi-Quellcode:
procedure TForm2.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if Source = Memo1 then
  begin
(Sender as TEdit).Text := Memo1.Items[Memo1.ItemIndex];
  end;
    if Source = Memo2 then
    begin
(Sender as TEdit).Text := Memo2.Items[Memo2.ItemIndex];
end;
end;

Jetzt muss ich das ganze nur noch auf 24 EditBoxen anwenden und volá

...

  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 18:28
Hai Knotti2005,

warum castest Du nicht auch Source auf ein TMemo (war da nicht vorher von einer ListBox die rede)?

Delphi-Quellcode:
procedure TForm2.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  (Sender as TEdit).Text := (Source As TMemo).Items[(Source As TMemo).ItemIndex];
end;
Zitat:
Jetzt muss ich das ganze nur noch auf 24 EditBoxen anwenden ...
Du musst ja nur allen (betroffenen) Edits die Selben Methoden für die Ereignisse zuweisen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Knotti2005

Registriert seit: 10. Nov 2005
275 Beiträge
 
#10

Re: Strings aus TListBox in Edit...

  Alt 18. Dez 2005, 19:16
Es sind doch ListBoxen als Komponenten nur sie heißen Memo* Weil an ihrer Stelle vor ich mit Memos experimentiert habe...
  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 21:27 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