Wyświetlanie podpowiedzi w edytorze RichEdit w zdarzeniu OnMouseMove

Wyświetlanie podpowiedzi w edytorze RichEdit w zdarzeniu OnMouseMove
LO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Witam, mam wyświetlanie podpowiedzi w edytorze RichEdit w zdarzeniu OnmouseMove. Po najechaniu na tekst wyskakuje podpowiedz, problem jest taki że pokazuje tylko pierwszy, następne dopiero po kliknięciu myszką lub po ponownym najechaniu na edytor i tekst. Mam ustawioną hintpause:=100 i hinthidepause:=3000. Jaką funkcję zastosować która zakończy wyświetlanie poprzedniego hinta aby płynnie poruszając się po tekstcie wyskakiwały następne oczywiście po zwłoce hintpause:=100. Podobnie jak podpowiedzi w edytorze Delphi. Dziękuję za każdą pomoc.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Najprościej: dokładnie pod kursor myszy podstaw TLabel 1x1 i natychmiast go schowaj.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

@_13th_Dragon: nie sugeruj nikomu takiego badziewia. Tym bardziej że TLabel to kontrolka graficzna, a TRichEdit jest komponentem okienkowym, więc etykieta nigdy nie wskoczy nad edytor. Zresztą to ”rozwiązanie” i tak jest na tyle absurdalne, że komentować nie trzeba.

@loza: w klasie TApplication są różne metody, w tym ActivateHint do manualnego pokazania dymku w określonym miejscu ekranu, a także CancelHint i HideHint, które umożliwiają jego zamknięcie w dowolnym momencie.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
furious programming napisał(a):

do manualnego pokazania dymku w określonym miejscu ekranu, a także CancelHint i HideHint, które umożliwiają jego zamknięcie w dowolnym momencie.

Po czym automatyczna aktywacja hinta nie będzie działać dopóki nie zejdziesz z kontrolki.

furious programming napisał(a):

Tym bardziej że TLabel to kontrolka graficzna, a TRichEdit jest komponentem okienkowym, więc etykieta nigdy nie wskoczy nad edytor.

O tym zapomniałem, dopiero teraz przypomniałeś mi czemu w podobnym rozwiązaniu użyłem TStaticEdit.

furious programming napisał(a):

Zresztą to ”rozwiązanie” i tak jest na tyle absurdalne, że komentować nie trzeba.

Poproszę o działający przykład nie absurdalnego rozwiązania, w TRichEdit trzy słowa:- "pies kot koń" po najechaniu w dymku masz tłumaczenie "dog cat horse".
Na pozostałe słowa nie reagować. Uwaga nie możesz użyć mojego "absurdalnego" rozwiązania, anie dopuścić do mrugania kontrolki.

furious programming napisał(a):

@_13th_Dragon: nie sugeruj nikomu takiego badziewia.

No cóż wyzwanie w akapicie wyżej, zobaczymy jak wygląda nie badziewie.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

Wyraźnie napisałem co jest rozwiązaniem – ActivateHint i CancelHint.

Po to podałem dwie metody, jedną do pokazywania i drugą do chowania dymku, aby z obu skorzystać. Bo rozwiązaniem nie jest jedynie ukrywanie hinta, ale też jego pokazywanie w odpowiednim momencie. Do tego wbudowany mechanizm absolutnie się nie nadaje i zamiast doklejać protezy parcianym lepcem, należy zaimplementować w całości własny mechanizm.


Zresztą sam taki mechanizm implementowałem swego czasu na potrzeby formatowalnej etykiety, w której linków może być bądź ile, a każdy z nich posiada swój własny dymek (gdzie czas wyzwalania i okres widoczności dymku może być różny dla linków w obrębie tego samego komponentu). Działa wyśmienicie. Wykorzystany został m.in. w demówce, którą przedstawiłem w wątku Własny interfejs aplikacji – przegląd kontrolek i test działania (w załącznikach jest spakowana binarka, można się pobawić).

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
furious programming napisał(a):

Wyraźnie napisałem co jest rozwiązaniem – ActivateHint i CancelHint.

Napisałeś owszem wyraźnie, ale najwyraźniej nie sprawdziłeś jak to zadziała.

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.