sinnaelgen Skrevet 8. september 2004 Del Skrevet 8. september 2004 (endret) går det ann å sende en komando fra en koponent til den formen som den er plaser på ? jeg har en komponet som brukes i et program for lage knapper til windows. programmet legger inn koder i en sekvens som lagres i en liste. koden forteller hvordan knappen er byg opp. komponenten er egenlig selve knappen. den leser inn kodene fra sekvensen og dekoder den. resutatet blir en bitmap. denne bitmapen består egenlig av 4 mindre bitmap avhengig av status velges en av bitmapene som vises på skjermen. her har jeg ett problem. hvis jeg endrer utsende velger et annet utsened ( sekvens) fra listen så blir ikke bakgunn i området som komponenten dekker opdater. jeg må utføre en refresh direkte fra det pgrammet som komponenten brukes i . går det ann å sende en opdarings komando ( på en eller annen måte) inenfra komponenten til formen eller programmet slik at komponenten kan brukes på hvilken som helst for uten endringer ? tpredefuserdefbutton = class(TGraphicControl) private - - - procedure tpredefuserdefbutton.Paint; // buke paint til å oprette bilde hvis det ikke eksisterer begin bitmap:=tbitmap.Create; try if FileExists(st+'\'+BITMAPNAME) then begin bigbitmap.LoadFromFile(st+'\'+BITMAPNAME); end; b:=bigbitmap.Width div 4; bitmap.Canvas.CopyMode:=cmSrcCopy; bitmap.Width:=b; bitmap.Height:=bigbitmap.Height; if enabled then begin if down then begin // enabled down if controlstate =[csLButtonDown] then begin bitmap.Canvas.CopyRect(rect(0,0,bitmap.Width,bitmap.Height),bigbitmap.Canvas,rect(2*b,0,3*b,bigbitmap.Height)); end else bitmap.Canvas.CopyRect(rect(0,0,bitmap.Width,bitmap.Height),bigbitmap.Canvas,rect(3*b,0,4*b,bigbitmap.Height)); end else begin // enabled upp bitmap.Canvas.CopyRect(rect(0,0,bitmap.Width,bitmap.Height),bigbitmap.Canvas,rect(0*b,0,1*b,bigbitmap.Height)); end; end else begin // disabled down bitmap.Canvas.CopyRect(rect(0,0,bitmap.Width,bitmap.Height),bigbitmap.Canvas,rect(1*b,0,2*b,bigbitmap.Height)); end; finally bigbitmap.Free; end; bitmap.Transparent := True; bitmap.TransParentColor := clblack; Canvas.Draw(0,0,bitmap); finally END; < noe eterbehandling > end; Endret 8. september 2004 av elg-elg123 Lenke til kommentar
Tr1llobite Skrevet 8. september 2004 Del Skrevet 8. september 2004 Objektet parent kan du bruke. Hvis du skal være sikker på at dette er en form, referer til parent som (Parent as TForm) (med parentes). Det skulle ikke være et problem å skrive en egen knapp, det har jeg selv gjort. Men det krever mye tid, uansett hvor simpel den skal være. Husk å implementere støtte for fokus da :] Lenke til kommentar
sinnaelgen Skrevet 10. september 2004 Forfatter Del Skrevet 10. september 2004 dette er knappen som jeg har skrevet. det jeg lurte på om jeg fra paint delen kan sende en slags komando som opdaterer ( refres eller repaint) til hoveformen eller den formen som knappen (komponenten) er plasert på slik at bkgrunden av knappen fjerner restene av det gamle utsende. bilde som blir laget av komponenten har et område som er transparangt ( 100% gjenomsiktig). det er når det nye bildet ikke dekker helt over det gamle et jeg for deler av det gamle stående igjen . jeg kan ikke lage den slik at hele knappens bilde først fjernes før den nye vises - internt i komponenten. Da blir det prblemer vis jeg bruker komponeten som flere knapper - det gjenomsiktige området ligger over en annen knapp. det er viktig det gjennomsiktige området skal kunne overlape andre knapper av samme type. jeg bruker komponeten for ålage flere knapper Lenke til kommentar
Tr1llobite Skrevet 10. september 2004 Del Skrevet 10. september 2004 http://delphi.about.com/ -mer kan ikke sies, utenom dette: (Parent as TForm).Repaint(); eller noe sånn... 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å