ToolTip dla pół z hasłem i reakcja na klikniecie (tutaj Opi może mieć doświadczenie ale nie tylko)

0

Witam. Pisałem już w tej sprawie na forum AQQ, póki co czekam na odpowiedź. To
przy okazji napiszę też tutaj. Podejrzewam, że Opi kombinował z ToolTipami, to
pewnie ma więcej doświadczenia, ale pytanie do wszystkich mogących pomóc, bo i
dawno nie pytałem o nic na tym forum. To czas nadrobić. I tyle tytułem wstępu.

Kombinuje już wiele godzin i prawie udało mi się uzyskać identyczny jak w AQQ.
To znaczy wiem, że da się wyświetlić ToolTip pod polem z hasłem z informacją o
wciśniętym caps Locku. Jednak nie wiem jak zrobić dwie rzeczy. Zarówno w AQQ i
na przykład TotalCommander tekst w ów ToolTipie wyświetla treść - nie mając go
zdefiniowanego w swoich plikach językowych. I właśnie - tutaj pierwsze pytanie
jak go ustalić dla ToolTipa? I drugie pytanie: jak mogę zmusić ToolTip aby się
zamykał po kliknięciu na nim myszką w jego obszarze - w taki sposób jaki ma to
miejsce w AQQ. Wykombinowałem póki co taki kod (poniższy link - nie wygaśnie):
http://www.mediafire.com/file/tgcvd55dk3i06d3/password_edit_hint.zip tylko, że
właśnie są wady. Nadpisując WndProc dla formatki - mogę zareagować chowajać, z
użyciem HideBalloonHint, ale tylko jeżeli ToolTip z ostrzeżeniem "nachodzi" na
obszar formatki. Chciałbym się też dowiedzieć czy wyłaczenie dymka po czasie w
milsekundach da się zrobić inaczej. Próbowalem wedlug opisu na MSDN, lecz taki
dymek jak pokazalem, umiem wyłączyć tylko przy wysłaniu do ToolTipa komunikatu
TTM_TRACKACTIVATE. Prosił bym o wskazówki i przykładowy kod jeśli ktoś łaskaw.
Wzorowałem się na kodzie dostępnym pod tym adresem gdyż jako jedyny działa ok:
http://www.foonews.info/pl-comp-lang-delphi/6752085-hint-balonikowy.html - ale
nie do końca. A i pewnie w nowszych Delphi da się to ogarnąć gotowymi klasami,
ale ja wolałbym pozostać przy Delphi 7 Personal. Z góry dziękuję za wskazówki.

0

Jeżeli program ma być kompatybilny od XP w górę to wydaje mi się, że da się to osiągnąć nawet całkiem prosto:
Podaję przykład http://www.swissdelphicenter.ch/torry/showcode.php?id=2279, jeżeli ustawisz w edit PasswordChar (czyli nadasz styl ES_PASSWORD) i wyślesz komunikat EM_SHOWBALLOONTIP tak jak w przykładzie przez naciśniecie buttona (przy naciśnięciu buttona edit traci fokus, a więc zamiast przy naciskaniu buttona kod raczej powinien być w OnExit edita) nie zależnie jak będą wypełnione pola tagEDITBALLOONTIP (można wpisywać, dowolny tekst, tytuł nie ma znaczenie mogą być puste) i tak wywoła on komunikat ostrzegający o włączonym CapsLock, który można zamknąć klikając tak jak chcesz.
Aby to działało musi być XPManifest (styl XP może być ustawiony dowolny nawet klasyczny).
EDIT// Ten komunikat sam znika po kilku sekundach.

0

U mnie jest to tak rozwiązane

procedure SprawdzCapsLock;
begin
 {
 Sprawdzenie, czy włączony jest CAPS_LOCK.
 Jeśli tak, to wyłącz i ponownie włącz ten klawisz, dzięki
 czemu pojawi się systemowy balonik w polu Edit.
 Jeśli CAPS_LOCK był włączony przed uruchomieniem programu,
 to systemowy balonik nie pojawia się sam.
 }
 if GetKeyState(VK_CAPITAL) <> 0 then
   begin
    {Wyłączenie CAPS_LOCKa}
    keybd_event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0);
    keybd_event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);

    {Ponowne włączenie CAPS_LOCKa}
    Application.ProcessMessages;
    keybd_event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or 0, 0);
    keybd_event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
   end;
end;

//wywołanie w OnClick TEdit
procedure TForm.Edit_HasloClick(Sender: TObject);
begin
 SprawdzCapsLock;
end;
0

Wielkie dzięki kAzek. A ja kombinowałem jak głupi, już nawet napisałem
moduł z hookiem na myszkę. A okazuje się, że wystarczy umieścic tylko
komponent XPMAnifest, ewentualnie dodać XPMan do sekcji uses. A kod
z linku jaki podałeś - też się przyda do wyświetlenia ewentualnie innych
podpoiwedzi niż informacja o wciśniętym Caps Locku. Dziwi mnie tylko,
że tyle już szukałem w google różne wariany z Dephi ToolTip i Balloon,
a także BalloonTip. Coż zabrakło mi chyba magicznego słowa "Linked".

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