Gå til innhold

opdatere en form fra en komponent


Anbefalte innlegg

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 av elg-elg123
Lenke til kommentar
Videoannonse
Annonse

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...