Przesuwanie kart w TExtendedNotebook

Przesuwanie kart w TExtendedNotebook
Patryk27
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

TExtendedNotebook umożliwia automatyczne przesuwanie kart (TabDragAcceptMode+TabDragMode); problem jest - jak wykryć, że nastąpiło przesunięcie karty (tj.skąd oraz dokąd)?

Wcześniej próbowałem jeszcze korzystać z kodu na ręczne robienie takich rzeczy, który działa w Delphi 7:
http://delphi.about.com/cs/adptips2004/a/bltip0304_3.htm
Lecz w Lazarusie nie mogę go doprowadzić do działania (z tego co przeczytałem, to u innych również są z tym problemy) :/

Lazarus v.1.1, rev.39905 wraz z FPC 2.6.1 (tj.dzisiejszy snapshot, lecz kod również nie działa na stabilnej wersji 1.0.4).


Edit: jak zwykle ja się trudzę, a gotowe rozwiązanie już istnieje: Zdarzenie `OnTabDragDropEx` posiada odpowiednie parametry: `OldIndex, NewIndex: Integer;` ;)

edytowany 3x, ostatnio: Patryk27
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
1
Patryk27 napisał(a):

Edit: jak zwykle ja się trudzę, a gotowe rozwiązanie już istnieje:
Zdarzenie OnTabDragDropEx posiada odpowiednie parametry: OldIndex, NewIndex: Integer; ;)

No tak... a co do tamtego kodu to problem jest dość banalny (przynajmniej w PageControl):

Kopiuj
const
   TCM_GETITEMRECT = $130A;
var
   TabRect: TRect;
   j: Integer;
   p: Point;
begin
   if (Sender is TPageControl) then
   for j := 0 to PageControl1.PageCount - 1 do
   begin
     PageControl1.Perform(TCM_GETITEMRECT, j, LParam(@TabRect));
     p.x:= X;
     p.Y:= Y;
     //tu poprawka oczywiscie z lenistwa to zadziala tylko gdy zakladki
     //na gorze (TabPosition = tpTop) w kazdym razie trzeba brac korekte
     //paramtrow X, Y na szerokosc/wysokosc zakladek w zaleznosci
     //od ustawienia TabPosition
     p.Y:= p.Y + TabRect.Bottom;
     if PtInRect(TabRect, p) then
     begin
       if PageControl1.ActivePage.PageIndex <> j then
         PageControl1.ActivePage.PageIndex := j;
       Exit;
     end;
   end;
end; 

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 4x, ostatnio: kAzek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.