Przeciąganie nad speedButtonami

0

wiecie może jak zrobić takie coś, że mam 100 speedbuttonów (10x10) i klikam na jednym przeciągam nad innymi i dla wszystkich wywołuwana jest wtedy jakaś procedura (np. OnClick)
teraz może trochę jaśniej. Wyobraż sobie że masz w paincie obrazek 10x10 pixeli i jak przeciągniesz kursor (i wciśnięty jest LBM) nad jakimś pixelem to jest wywoływana procedura, która zmienia kolor pixela nad którym jest mycha na ten co jest teraz aktywny.

ps. Używam VCL i nie mam dostępy do WndProc()

0

chyba bedziesz musial przechwytywac pozycje kursora i jesli jest pod nim button i jest wcisniety LMB to wysylac komunikat do buttona ze go kliknelo. rozwiazanie najtrywialniejsze z mozliwych chyba.

0

w on mouseMove() wszystkich speedbuttonów dałem coś takiego

var p:TPoint;
begin
  GetCursorPos(p);
 if ControlAtPos(p,true,true) = TControl(TSpeedButton) then ShowMessage('lol');

ale nic sie nie dzieje [???]

0

Dla buttona udalo mi sie w ten sposob:

procedure TForm1.Timer1Timer(Sender: TObject);
var p:TPoint;window:hwnd;x:string;
begin
   getcursorpos(p);
   window:=WindowFromPoint(p);
   setlength(x,128);
   GetClassName(window,pchar(x),128);
   x:=copy(x,0,pos(#0,x)-1);
if x='TButton' then
caption:='lol' else caption:='xxx';

end;

Nawet dziala.
Mozna tez sprawdzac wszystkie uchwyty pokolei :)

0

jest tylko jeden mały problem. Bo widzisz ja używam SpeedButtonów, bo porzebuję Glyph, a jak zapewne wiesz SpeedB nie mają Handle'a.

Co mam zrobić??

0

zauwazylem. masz spory problem. analizowalem twoj kod. Wyglada na to ze to rowniez nie jest kontrolka* :( bo ControlAtPos zwraca nil.

*chyba - mimo ze jest pochodna TControl

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