Hvorfor virker komponent ikke?

Tags:    delphi

Hey..jeg har lavet et komponent (mit første) men der sker en fejl når jeg vælger et picture. komponentet er en ImageButton...altså en knap så man assigner 3 billeder. Normal, Hover, Mousedown....men som sagt når jeg assigner et billede kommer der en stack overflow error i delphi og så crasher delphi....hvad er der galt??? her er source

Fold kodeboks ind/udKode 










-------------------------------------------------------
Jonas (Decko)
-------------------------------------------------------



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
User
Bruger #67 @ 12.11.04 11:53
Hmmm, jeg har lige rodet lidt med det, og har ikke lige tid til at finde ud af de sidste finurligheder, men sådan her virker det da nogenlunde...

Fold kodeboks ind/udKode 


[Redigeret d. 12/11-04 11:53:47 af Lars Bargmann]



User
Bruger #67 @ 04.11.04 13:31
Altså, i din SetPic sætter du valuen på Property Picture, hvilket jo lissom kalder SetPic igen, som så sætter proprtien Picture som så kalder SetPic, som så igen....
Get my point???? ;-)

Fjern linien "Picture:=" i SetPic... :-)



Altså, i din SetPic sætter du valuen på Property Picture, hvilket jo lissom kalder SetPic igen, som så sætter proprtien Picture som så kalder SetPic, som så igen....
Get my point???? ;-)

Fjern linien "Picture:=" i SetPic... :-)


nu kommer fejlen ikke......men der kommer ingen billeder










-------------------------------------------------------
Jonas (Decko)
-------------------------------------------------------



User
Bruger #67 @ 08.11.04 10:14
Altså, i din SetPic sætter du valuen på Property Picture, hvilket jo lissom kalder SetPic igen, som så sætter proprtien Picture som så kalder SetPic, som så igen....
Get my point???? ;-)

Fjern linien "Picture:=" i SetPic... :-)

nu kommer fejlen ikke......men der kommer ingen billeder

-------------------------------------------------------
Jonas (Decko)
-------------------------------------------------------


...måske skulla man kalde Invalidate i se tre SetPic's ???




???...forklar :D











-------------------------------------------------------
Jonas (Decko)
-------------------------------------------------------



User
Bruger #67 @ 09.11.04 10:34


procedure TImageButton.SetPic(Value: TPicture);
begin
Picture:= Value; //Denne linie skal væk...
pPic.Assign(Value);
Invalidate; //TILFØJES
end;

procedure TImageButton.SetPicOver(Value: TPicture);
begin
pPicOver.Assign(Value);
Invalidate; //TILFØJES
end;

procedure TImageButton.SetPicDown(Value: TPicture);
begin
pPicDown.Assign(Value);
Invalidate; //TILFØJES
end;




Ovenstående er blot et gæt, for jeg har ikke mulighed for at teste komponenten lige nu, men forklaringen er som følger :
"Invalidate" er en procedure som giver kompoenen besked om at der er foregået ændringer, og kan ses lidt som en "jeg-er-blevet-opdateret-og-må-heller-tegne-mig-selv-og-sådan-noget"
Jeg er temmeligt sikker på at TPicture.assign (de tre forskellige) ikke giver besked til deres "ejer" om at den skal gentegne sig selv, og derfor bliver du nødt til at gøre det selv; defor "Invalidate"....
Prøv, og lad os vide om det var det.... :-)

/Lars



Det kan være jeg bare er dum men jeg kan ikke få det til at virke....men prøv at kig på det...


www.decko.1go.dk/imgbutton.zip











-------------------------------------------------------
Jonas (Decko)
-------------------------------------------------------



Har helt glemt at sige at komponentet virker nu...tak for hjælpen!











-------------------------------------------------------
Jonas (Decko)
-------------------------------------------------------



t