sinnaelgen Skrevet 31. desember 2005 Del Skrevet 31. desember 2005 (endret) er det noen som husker hvordan man lager et eget event i en komponet ? jeg ønsker å endre endel på det evenet som kommer når musknappen trykes ned ...mousedow. Bl.a. vil jeg legge til en ekstra parameter slik at når jeg klikker på knappen (komponeten) så kommer parametrene min egen parameter i tillegg til - Sender: TObject; - Button: TMouseButton; - Shift: TShiftState; - X, - Y: Integer alternativt å bruket noen av de parametrene som er standard. det jeg ønsker å få overfør via disse parametrene er - posisjonen på markøren : x og y og om markøren var i et transparangt punk ( jeg bruker svart farge til å bestemme hvor det skal vere gjenomsiktig ) hvis dere synes dette var vanskelig å for stå hva jeg mente så ver snill å be om en bdere forklaring se også her https://www.diskusjon.no/index.php?showtopic=494993&hl= jeg bruker delphi 7 personal og fortsat god jul til alle programererne der ute nå ønsker jeg dere godt nytt år Endret 1. januar 2006 av elg-elg123 Lenke til kommentar
DidzisK Skrevet 4. januar 2006 Del Skrevet 4. januar 2006 MouseDown har følgende definisjon: procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic; ... procedure TControl.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Assigned(FOnMouseDown) then FOnMouseDown(Self, Button, Shift, X, Y); end; Det betyr at du kan overstyre MouseDown og legge inn kall til din egen event i tillegg. procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; ... procedure TMinKnapp.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var Param1, Param2: Integer; begin inherited; //sørger for at vanlig OnMouseDown blir kjørt //setter opp param1, param2 osv. {...} //...og kaller den nye eventen if Assigned(FOnNyMouseDown) then FOnNyMouseDown(Self, Button, Shift, X, Y, Param1, Param2); end; Lenke til kommentar
sinnaelgen Skrevet 4. januar 2006 Forfatter Del Skrevet 4. januar 2006 (endret) takk skal du ha. skal se om dette virker for meg jeg skriver det nå ut på papir EDIT: Det må vere noe som mangler her er minne procedurer : type tpredefuserdefbutton = class(TGraphicControl) private . . . procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; . . . . . . procedure tpredefuserdefbutton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var c:tcolor; param1,param2:integer; begin inherited; param1:=2; param2:=5; if assigned(fonnymousedown) then fonnymousedown(self,button,shift,x,y,param1,param2); repaint; end; når jeg kompliererså blir det feil. kompilatoren finner ikke noen referans( eller hva nå det heter) til fonnymousedown må det også legges inn propertyer til dette eller er det bare lage en ny procedure som som blir kalet opp fra denne Endret 5. januar 2006 av elg-elg123 Lenke til kommentar
DidzisK Skrevet 6. januar 2006 Del Skrevet 6. januar 2006 Ja, du må definere hvordan din nye event kommer til å bli definert. Vanlig MouseEvent er definert på denne måten: TMouseEvent = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object; En utvidet MouseEvent kan, for eksempel, defineres slik: TNyMouseEvent = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y, Param1, Param2: Integer) of object; Her er Param1 og Param2 bare et eksempel, selvfølgelig er det deg som bestemmer hva du egentlig trenger der. Neste ting du må skjønne er at Event er egentlig bare en Property. Forskjellen er at Event tar prosedyre som verdi. Og prosedyren må være av spesifisert type - nettopp den typen som er spesifisert i definisjonen, da får du også automatisk parameterliste osv. Så du definerer en ny event på denne måten: private FOnNyMouseDown:TNyMouseEvent; {...} published OnNyMouseDown:TNyMouseEvent read FOnNyMouseDown write FOnNyMouseDown; Variabelen FOnNyMouseDown skal da inneholde en peker til event-prosedyren dersom den er definert og resten av koden kan da brukes akkurat som jeg skrev tidligere. Lenke til kommentar
sinnaelgen Skrevet 6. januar 2006 Forfatter Del Skrevet 6. januar 2006 ja. jeg har forstått at event er en spesiel form for property- jeg husket ikke riktig hvordan det var satt opp/sammen og fant det ikke ut i hjelpen som er innebyget i delphi compilatoren. nå skal jeg kose meg vidre med delphi. takk for hjelpen Lenke til kommentar
sinnaelgen Skrevet 8. januar 2006 Forfatter Del Skrevet 8. januar 2006 jeg fikk det ikke helt til derfor skaljeg løse dette på en annen måte Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå