AGB  ·  Datenschutz  ·  Impressum  







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

Listbox Einträge verschieben

Ein Thema von ebber · begonnen am 3. Mär 2007 · letzter Beitrag vom 20. Nov 2019
 
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Listbox Einträge verschieben

  Alt 19. Nov 2019, 16:14
Das ist zwar schon fast ein prähistorischer Thread ... hole den aber trotzdem noch mal hoch.
Weil: War auf der Suche nach eben so einer Funktion, aber das funzte alles nicht wirklich toll und war n.E.n. etwas überladen.
Hier mal meine (Kurz-) Version, die beim Live-Verschieben auch die Listbox richtig scrollt.
Delphi-Quellcode:
procedure TForm.OnDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  Position, BotIndex : integer;
begin
  with Sender as TListBox do // or TCheckListBox ...
  begin
    Position := ItemAtPos(point(x,y), true); // get position
    if (Position < 0) then exit; // position outside listbox ?
    if (ItemIndex = Position) then exit; // position changed ?
    BotIndex := TopIndex + ClientHeight div ItemHeight; // get act. bottom-index
    if (TopIndex > 0) AND ((Position - 1) < TopIndex) then // pos. near top-index ?
      SendMessage(Handle,WM_VSCROLL,SB_LINEUP,0); // scroll up line
// SendMessage(Handle,WM_VSCROLL,SB_PAGEUP,0); // scroll up page
    if (BotIndex < (Count - 2)) AND ((Position + 2) > BotIndex) then // pos. near bot-index ?
      SendMessage(Handle,WM_VSCROLL,SB_LINEDOWN,0); // scroll down line
// SendMessage(Handle,WM_VSCROLL,SB_PAGEDOWN,0); // scroll down page
    Items.Move(ItemIndex, Position); // move entry
    // move dependend data here same as item !
    ItemIndex := Position; // DO NOT FORGET: set index to new position !!!
  end;
end;
Das funzt aktuell nur mit jeweils einem Eintrag, den man beliebig hin- und herschieben kann.
Werde noch daran basteln, das mit MulitSelect zu erweitern.

Geändert von TERWI (19. Nov 2019 um 16:38 Uhr)
  Mit Zitat antworten Zitat
 


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 05:05 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 by Thomas Breitkreuz