2 x event

Tags:    delphi

Hello

Situation :
Har en event på min form (OnKeyDown) der åbner en hjælpe-fil ved tryk på F1. Har også en event på en Combobox (OnKeyDown), der åbner en bestemt del af hjælpe-filen - også ved tryk på F1.
Begge virker fint, hver for sig.

Problem:
Når jeg kalder Comboboxen event, kalder jeg jo samtidig formens. Hvilket resulterer i at jeg får åbnet både hjælpe-filen og den bestemte del af hjælpe-filen. Hvordan undgåes dette?

På forhånd tak

Med venlig hilsen
Dennis Lauritzen



8 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hvis du har satt din forms KeyPreview til True, prøv å sette den til False.

Mvh
DiZpel



Hvorfor laver du ikke bare en procedure der finder ud af hvlken komponent den blev sendt fra?

procedure TForm1.FindKomponent(Sender : TObject);
begin
if Sender is TForm then
//kode der åbner hjælpe filen

if Sender is TComboBox then
//kode der åbner et bestemt sted i hjælpe filen

..osv
end;

På den måde kan du havde mange komponenter der gør det samme!

[Redigeret d. 04/03-04 20:03:34 af Søren Klit Lambæk]




Yep og vis den skal gøre meget skal du bare lave begin og et nyt begin for at begynde på det næste af dem.

Og husk vis du gør det at skrive: end; for vær gang du skriver begin



Du kan gøre sådan at alle Key-relavante kode skal køre fra kun en OnKeyDown procedure!

også eksempelvis sige...

if sender is TComboBox then
with sender as TComboBox do
begin
//Her skriver du så koden til din ComboBox
end;

Det er i sig selv en kæmpe fordel fordi du kan overskue dit kode meget bedere... og derved også fejl ;)

PS: Lidt kode ville være nemmere at se dit problem!

[Redigeret d. 07/03-04 02:43:11 af Søren Klit Lambæk]



Hvorfor laver du ikke bare en procedure der finder ud af hvlken komponent den blev sendt fra?

procedure TForm1.FindKomponent(Sender : TObject);
begin
if Sender is TForm then
//kode der åbner hjælpe filen

if Sender is TComboBox then
//kode der åbner et bestemt sted i hjælpe filen

..osv
end;

På den måde kan du havde mange komponenter der gør det samme!

[Redigeret d. 04/03-04 20:03:34 af Søren Klit Lambæk]



Hvorfor laver du ikke bare en procedure der finder ud af hvlken komponent den blev sendt fra?

procedure TForm1.FindKomponent(Sender : TObject);
begin
if Sender is TForm then
//kode der åbner hjælpe filen

if Sender is TComboBox then
//kode der åbner et bestemt sted i hjælpe filen

..osv
end;

På den måde kan du havde mange komponenter der gør det samme!

[Redigeret d. 04/03-04 20:03:34 af Søren Klit Lambæk]


Problemet er så at, hvis jeg trykker F1 i comboen nu, altså det første problem, bliver der kaldt to onkeydown. Hvilket betyder at ovenstående ikke kan benyttes.

Med venlig hilsen
Dennis Lauritzen



Hvor mange OnKeyDown procedure har du?



Hvor mange OnKeyDown procedure har du?


To

Med venlig hilsen
Dennis Lauritzen



Har nu endelig løst problemet, dog ikke med nogen af de metoder der blev forslået herinde :)

Brugte en global variabel der ændre sig alt efter hvad der er valgt i Comboen, og er comboen ikke valgt er den -1.




t