Bruk spesifikt kodespråk for å programmere Delphi-applikasjoner for å vise et hint, eller verktøytips, når musen svever over en menykomponent. Hvis "ShowHint" -egenskapen er satt til "true" og du legger til tekst til "hint" -egenskapen, vises denne meldingen når musen er plassert over komponenten (for eksempel en TButton).
Aktiver hint for menyelementer
På grunn av måten Windows er designet på, selv om du angir verdien for hintegenskapen til et menyelement, vises ikke popup-hintet. Imidlertid viser Windows-menyelementene antydninger. Favorittmenyen i Internet Explorer viser også antydning til menyelementer.
Det er mulig å bruke OnHint-hendelsen til den globale applikasjonsvariabelen i Delphi applikasjoner for å vise menyelement-tips i en statuslinje.
Windows utsetter ikke meldingene som trengs for å støtte en tradisjonell OnMouseEnter-hendelse. WM_MENUSELECT-meldingen sendes imidlertid når brukeren velger et menyelement.
WM_MENUSELECT-implementeringen av TCustomForm (stamfar til TForm) setter menypunktet antydning til "Application. Tips "slik at den kan brukes i applikasjonen. OnHint-arrangementet.
Hvis du vil legge til menyelement popup-hint (verktøytips) i Delphi-programmenyene, fokuserer du på WM_MenuSelect-meldingen.
Popup-tips
Siden du ikke kan stole på applikasjonen. ActivateHint-metoden for å vise antydningsvinduet for menyelementer (ettersom menyhåndtering er fullstendig gjort av Windows), for å få hintvinduet vist, må du opprette din egen versjon av hintvinduet ved å utlede en ny klasse fra "THintWindow."
Slik lager du en TMenuItemHint-klasse. Dette er en antydning enke som faktisk vises for menyelementer!
Først må du håndtere WM_MENUSELECT Windows-meldingen:
type
TForm1 = klasse(TForm)
...
privat
fremgangsmåte WMMenuSelect (Var Msg: TWMMenuVelg); beskjed WM_MENUSELECT;
slutt...
gjennomføring...
fremgangsmåte TForm1.WMMenuSelect (Var Msg: TWMMenuVelg);
Var menuItem: TMenuItem; hSubMenu: HMENU;
begynne
arvet; // fra TCustomForm (slik at applikasjonen. Tips er tildelt)
menuItem: = nil;
hvis (Msg. MenuFlag <> $ FFFF) eller (Msg. IDItem <> 0) deretter
begynne
hvis Msg. MenuFlag og MF_POPUP = MF_POPUP deretter
begynne
hSubMenu: = GetSubMenu (Msg. Meny, Msg. IDItem);
menuItem: = Selvtillit. Meny. FindItem (hSubMenu, fkHandle);
slutt
ellers
begynne
menuItem: = Selvtillit. Meny. FindItem (Msg. IDItem, fkCommand);
slutt;
slutt; miHint. DoActivateHint (menuItem);
slutt; (* WMMenuSelect *)
Rask info: WM_MENUSELECT-meldingen sendes til menyens eiervindu når brukeren velger (men ikke klikker) et menyelement. Ved hjelp av FindItem-metoden i TMenu-klassen, kan du få menypunktet som er valgt nå. Parametere for FindItem-funksjonen relaterer til egenskapene til den mottatte meldingen. Når vi vet hvilket menyelement musen er over, kaller vi DoActivateHint-metoden i TMenuItemHint-klassen. MiHint-variabelen er definert som "var miHint: TMenuItemHint" og opprettes i skjemaets onCreate arrangementshåndterer.
Det som er igjen er implementeringen av TMenuItemHint-klassen.
Her er grensesnittdelen:
TMenuItemHint = klasse(THintWindow)
privat
activeMenuItem: TMenuItem;
showTimer: TTimer;
hideTimer: TTimer;
fremgangsmåte HideTime (avsender: TObject);
fremgangsmåte ShowTime (avsender: TObject);
offentlig
konstruktør Opprett (AOwner: TComponent); overstyring;
fremgangsmåte DoActivateHint (menuItem: TMenuItem);
destructor Ødelegge; overstyring;
slutt;
I utgangspunktet kaller DoActivateHint-funksjonen ActivateHint-metoden til THintWindow ved å bruke TMenuItems hintegenskap (hvis den er tildelt). ShowTimer brukes for å sikre at programmets hintPause går før hintet vises. The hideTimer bruker applikasjon. HintHidePause for å skjule hintvinduet etter et spesifisert intervall.
Bruke menyelement tips
Selv om noen kan si at det ikke er et bra design å vise hint for menyelementer, er det situasjoner der det faktisk er mye bedre å vise menyelementtips enn å bruke en statuslinje. En menypunktliste som sist ble brukt (MRU) er et slikt tilfelle. En tilpasset oppgavelinjemeny er en annen.