Hint w Memo po naciśnięciu klawisza

0

Jak zrobić żeby po kliknięciu pewnego przycisku wyświetlał się Hint w Memo pod kurosrem, a zamykał się po kliknięciu innego przycisku ?
Mam coś takiego:


procedure TForm1.SynMemo1KeyPress(Sender: TObject; var Key: WideChar);

begin
  if Key = 'a' then
  begin

    end;
  if Key = 'z' then
  begin

    end;

Próbowałem coś takiego, ale z marnym skutkiem:


  SynMemo1.ShowHint:= true;
SynMemo1.Hint:= 'abcdefgh......xyz';

oraz:

SynMemo1.ShowHint := false;
0
Memo1.Hint := 'Podpowiedź';

Ustala treść podpowiedzi,natomiast

Memo1.ShowHint := True

ustala czy hint ma się pokazać po najechaniu myszką.

Przejrzałem source delphi szukając czegoś o hintach, kombinowałem z procedurkami odpowiedzialnymi za poprawne wyświetlanie hintów, żeby je przerobić tak żeby działały po Twojemu, ale chyba coś słabo działałem bo do niczego nie doszedłem.

Mój jedyny pomysł jest taki

procedure PokazHint(AControl: TControl) ;
var
   P: TPoint;
begin
  SynMemo1.ShowHint := True;
  SynMemo1.Hint := 'Moja super podpowiedź';
  P := AControl.ClientToScreen(Point(20, 20)) ;
  SetCursorPos(P.X, P.Y) ;
end;

Co prawda przeniesie Ci kursor nad obiekt, ale podpowiedź wyświetli.

0

ActivateHint method (TApplication)
Displays a hint window for the control at a specified position.

Delphi syntax:

procedure ActivateHint(CursorPos: TPoint);

C++ syntax:

void __fastcall ActivateHint(TPoint CursorPos);

Description

ActivateHint locates the control or menu item at the position specified by CursorPos, where CursorPos represents a screen coordinates in pixels. After locating the control, ActivateHint displays the control’s Hint in a hint window.

0

Czytałem właśnie o tym, i albo nie wiem jak to działa, albo po prostu nie działa tak jak sądzę.

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  Application.ActivateHint(Point(20, 20));
end;

nic nie robi.

0

Ja stosowałem ActivateHint w tego rodzaju sytuacjach:

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Label1.Hint:=IntToStr(x)+' '+IntToStr(y);
  Application.ActivateHint(Point(x,y));
end;
0
KrólJulian napisał(a)

Jak zrobić żeby po kliknięciu pewnego przycisku wyświetlał się Hint w Memo pod kurosrem, a zamykał się po kliknięciu innego przycisku ?

Zawsze możesz zrobić własną implementację takiego okienka; Kontrolka, która będzie wywoływać podpowiedź sprawdzałaby wartość ShowHint i tworzyła okno (w zdarzeniu OnMouseEnter), a zamykała w zdarzeniu OnMouseLeave - zdarzenia te nie występują w standardowych kontrolkach więc trzeba je dopisać; Sposób na dodanie tych zdarzeń jest opisany w Kompendium programisty - tworzenie komponentów; Do tego warto odczekać chwilkę po wprowadzeniu kursora nad komponent tak, jak to jest ze standardowymi podpowiedziami (można to oprzeć o TTimer);

0

Ja nie chce po najechaniu myszką tylko po wciśnięciu klawisza
Popróbuję z tym co mi wysłaliście, dzięki :)

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