Avatar billede madshenrik Nybegynder
26. april 2000 - 22:37 Der er 1 kommentar og
1 løsning

Statusbar problem, ved tab

Jeg har af sjensen tidligere fået en modificeret statusbar som viser hints når de forskellige objekter har focus samt når musen er over dem. Problemet er så at når man benytter en ny form som ikke fylder hele skærmen i runtime over bevæger sig rundt på denne form ved hjælp af tab tasten så vises hintet ikke, men det gør det når man benytter sig af musen. Hvad er problemet ???
Avatar billede lrj Nybegynder
26. april 2000 - 23:14 #1
Der er ingen onClick event når du bruger tasteturet - det er der med musen. Derimod er der en onFocus event, som du med fordel kan bruge i stedet - flyt koden herind. Den kaldes nemlig både når det er med musen og med tasteturet man går ind i en komponent.
Avatar billede sjensen Nybegynder
27. april 2000 - 01:50 #2
madshenrik,

nej problemet er noget andet:

Når man laver en statusbar og sætter application.onhint := vis_hint_procedure; gælder denne for hele applikationen, d.v.s. også for de forms der vises efter hovedformen. Men det specielle der er ved den statusbar jeg viste er at den også implementerer onhint når et felt har fokus. Problemet er bare at dette gælder for hver form.

Der er derfor ikke nogen umiddelbar løsning på problemet ud over at udstyre hver form med en statusbar og lave samme krumspring i hver form for at få den til at virke.

MEN.. Der kommer et andet problem: Hvis man sætter Applikation.onhint i en underform (f.eks. form2) og denne form free's når den afsluttes, som vil den form du kommer tilbage til forsøge at vise sine hints i din statusbar der blev frigivet sammen med form2 og du vil få en access violation error.

Løsningen på dette problem er følgende:

form1:

formcreate:

applikation.onhint := vis_hint1; // proceduren vis_hint1 findes i form1.

procedure knapklik; // kalder en ny form
begin
  applikation.onhint := nil;

  form2 := tform2.create(applikation)
  form2.showmodal;
  form2.free;

  applikation.onhint := vis_hint1;
end;

Og i form2's create sætter du så:

applikation.onhint := vis_hint2; // proceduren vis_hint2 findes i form2.


D.v.s at du disabler onhint eventen inden du skaber den nye form, og sætter den igen når formen er freed. Dette skal du huske for hver ny form du skaber, også hvis du kalder form3 fra form2.

Det smarte med at man kan bruge statusbaren fra form1 til at vise hints for form2 og 3 når disse er mindre end form1 og man derfor stadig kan se form1's statusbar er ikke helt så smart når det gælder hints ved flytning af fokus. Jeg vil dog prøve at gennemgå den specielle statusbar der er tale om, men da det ikke er en jeg har lavet selv vil jeg ikke love at jeg kan løse problemet. Statusbaren er lavet af en englænder og jeg fandt den på http://www.undu.com under tips og tricks, hvis nogen skulle have lyst til at prøve selv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester