Czy ktos z Was ma jakis niezawodny sposob na dobre wypozycjonowanie popup'a jako zdazenie onclick np. TImage? Kombinowalem tak jak powinna nakazywac logika, a i tak jakos dziwnie ten popup wyskakuje...
Ja zrobilem tak i dziala:
var
P: TPoint;
begin
GetCursorPos(P);
Menu.Popup(P.x, P.y);
end;
Oczywiscie w OnClick :)
no tak, ale ta procedura odnosi sie do pozycji myszki, a jak zrobic by popmenu wyskakiwalo w pozycji kursora????
a jeszcze dodam, jak zrobic by wyskakiwalo automatycznie po wcisnieciu kropki :))
pozdrawiam
Ultimion
Ultimion napisał(a)
no tak, ale ta procedura odnosi sie do pozycji myszki, a jak zrobic by popmenu wyskakiwalo w pozycji kursora????
[glowa] [glowa] [glowa]
O co w tym chodzi? Przecież to własnie wyskoczy w pozycji kursora (GetCursorPos!) czyli tam gdzie wskazujesz myszką...
no tak... to wskazuje pozycje myszki. Szukam sposobu umieszczenia popupmenu w pozycji kursora w RichEdit. Czyli aktualnie w pozycji gdzie pisze tekst.
pozdrawiam
Ultimion
No to pisz, że chodzi Ci o karetkę! Użyj GetCaretPos.
procedure TForm1.menuPopup(Sender: TObject);
var
P: TPoint;
begin
GetCaretPos(P);
Menu.Popup(P.x, P.y);
end;
to nie dziala.... wywala blad ...."przepelnienie stosu' "Stack overflow' !!!!
wiec???
a jak uruchomic popmenu automatycznie??? np w zdarzeniu richedit.onkeydown??
np
begin
if key='.' then .....
end;
nie wiem dlaczego ale nie chce mi tak przyjac, a probowalem wpisac kod (kropki) ale jakos nie dziala .... pewnie nie znam odpowiedniego i w tym problem... na #32 $20 (spacja jest ok... test zadzialal ale nie z popum menu.
pozdrawiam
Ultimion
Nic dziwnego że ci wyskakuje przepełnienie stosu jeżeli w procedurze obsługi pokazania popupa dajesz kod do jego pokazania [green] .
procedure TForm1.RichEdit1KeyPress(Sender: TObject; var Key: Char);
var
P : TPoint;
begin
if Key = '.' then
begin
GetCaretPos(P);
P := ClientToScreen(P);
Menu.Popup(P.x + RichEdit1.Left + 3, P.y + RichEdit1.Top);
end;
end;