Drag&Drop

legorek
2002-11-02 12:19
legorek
0

Jak przeciągnąć tekst zaznaczony gdzieś w windołzie (dokładnie chodzi mi o taki tekst jak na obrazq :-) : http://legorek.fm.interia.pl/D&D.jpg ) do Edita? Z góry dzięki :-)--

Pozostało 580 znaków

slaw
2002-11-03 08:43
slaw
0

hi :)

też nad tym się męczę - dostałem odpowiedź na zapytanie jak obsłużyć d&d z formy na formę - wygląda to tak
( z tych procedur korzystaja dwa komponenty typu TListBox )

procedure TMainForm.lbSenderMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
{ jezeli podczas przesuwania kursora myszy nacisniety jest lewy przycisk myszy
rozpocznij proces DnD }
if ssLeft in Shift then
TListBox(Sender).BeginDrag(FALSE);
end;

procedure TMainForm.lbSourceDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
{ ta procedura wystepuje wtedy, gdy kursor myszy znajdzie sie nad komponentem

  • przyjecie "paczki" danych (Accept) nastepuje wtedy gdy objekty Sender oraz
    Source sa rozne }
    Accept := Sender &lt&gt Source;
    end;

procedure TMainForm.lbSourceDragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
{ ta procedura powoduje "przyjecie" danych - nowa wartosc zostaje dodana do komponentu.
Z komponentu, z ktorego sa dane przesylane pozycja jest usuwana }
TListBox(Sender).Items.Add(TListBox(Source).Items[TListBox(Source).ItemIndex]);
TListBox(Source).Items.Delete(TListBox(Source).ItemIndex);
end;

potem można to zrobić przy pomocy takiego płótna

var
Plotno: TCanvas;

begin
getcursorpos(pkt);
Plotno := TCanvas.Create;
Plotno.Handle := GetDC(0);
plotno.CleanupInstance;
plotno.PenPos := pkt;
plotno.Brush.Style := bsclear;
plotno.TextOut(pkt.x,pkt.y,'asd');
ReleaseDC(Handle, Plotno.Handle); //tu mogę się mylić, piszę z pamięci

end;

ale do końca niestety nie wiem jak :)

Trochę poczytałem helpa delfinowskiego i widzę, że całe d&d można spryniej obsłużyć - bardziej profesjonalnie przy pomocy klasy TDragObject. Niestety nie jesem aż taki dobry żeby Od razu zaskoczyć o co w tym wszytkim idzie - bardziej metoda prób i błędów :) ale gdyby Tobie udało się coś osiągnąć proszę o RE - dzięki pozdrow. Sławek

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0