HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

TreeView scrollozása Drag and Drop közben


Példaprogram letöltése

4299 bájt

Ha Drag and Drop-al húzunk adatot egy TreeView komponensre, melyet egy olyan elemén szeretnénk elengedni, amely éppen nem látható, akkor jó lenne, ha a TreeView automatikusan scrollozná a tartalmát. Mivel a TreeView komponens ezt nem teszi meg, így nekünk kell kiegészíteni egy ilyen funkcióval.

Megoldás az lesz, hogy a TreeView OnDrawOver eseményénél figyeljük az egér aktuális pozícióját és ha a TreeView tetejéhez vagy aljához közel (mondjuk 15 pixelnyire) kerül, akkor elvégezzük a TreeView scrollozását. Így láthatóvá válik a TreeView teljes tartalma. Az OnDrawOver esemény akkor jön létre, amikor egy Drag and Drop művelet folyamatban van TreeView komponens területe fölött.
Az OnDrawOver eseménynél tehát ellenőriznünk kell az egér y koordinátáját és ennek megfelelően egy WM_VSCROLL üzenet küldésével scrollozhatjuk azt.
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if y<15 then begin
    SendMessage(TreeView1.Handle, WM_VSCROLL, SB_LINEUP, 0)
  end else begin
    if TreeView1.Height-y<15 then begin
      SendMessage(TreeView1.Handle, WM_VSCROLL, SB_LINEDOWN, 0);
    end;
  end;
end;
Mellékelt példában néhány Label komponenst húzhatunk Drag and Drop-al a TreeView komponens valamely elemére. A kiválasztott elem szövege a Label szövegét fogja felvenni. A Form-on lévő Label komponenseknél a DragMode property-t állítsuk dmAutomatic értékre. A TreeView komponensnél az OnDragDrop eseményt felhasználva csíphetjük el azt a pillanatot, amikor a felhasználó egy Label-t a TreeView-ra dob. Ekkor meghatározzuk az x y koordináta alapján, hogy melyik elemre került a Label, majd megváltoztatjuk annak az elemnek a feliratát.
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  node:=TreeView1.GetNodeAt(x, y);
  if node<>nil then begin
    node.Text:=(Source as TLabel).Caption;
  end;
end; 

Cikksorozat

#IDKategóriaCikk címeSorozat
1488DelphiMS SQL tárolt eljárások1. rész
1499DelphiMS SQL tárolt eljárások2. rész
1507DelphiMS SQL tárolt eljárások3. rész
1519DelphiMS SQL tárolt eljárások4. rész
1526DelphiMS SQL tárolt eljárások5. rész
1537DelphiMS SQL tárolt eljárások6. rész
1546DelphiMS SQL tárolt eljárások7. rész
1553DelphiMS SQL tárolt eljárások8. rész
1564DelphiMS SQL tárolt eljárások9. rész
1573DelphiMS SQL tárolt eljárások10. rész
1582DelphiMS SQL tárolt eljárások11. rész
1591DelphiMS SQL tárolt eljárások12. rész
1600DelphiMS SQL tárolt eljárások13. rész
1609DelphiMS SQL tárolt eljárások14. rész
1617DelphiMS SQL tárolt eljárások15. rész
1626DelphiMS SQL tárolt eljárások16. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 524. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |