Cześć, mam własny komponent o nazwie TLine. Reprezentuje on po prostu linię:
poziomą(LineType = ltHorizontal), pionową(LineType = ltVertical) i złożoną z kilku punktów(LineType = ltNone)
Jeśli linia jest horyzontalna to problemu nie ma. Pojawia się, gdy zmieniam na linię pionową.
W design time wszystko jest w porządku - teoretycznie.
Ponieważ, gdy zamknę projekt i uruchomię go ponownie, wtedy właściwość HEIGHT przyjmuje wartość 1 i zamiast linii pionowej widać tylko piksel.
No i tutaj sam nie wiem ale moze to: Jak nie napsiales deklaracji Height dla Object Inspectora (inspektora obietkow) F11. W konstruktorze powinienes (ale wlasnie nie wiem czy knostruktor wykonuje On Create dla komponentu czy tylko jak bedzie sie otwierac w projekcie ja mysle ze to pierwsze wiec)
Trzeba jak dal mnei stworzyc funckje update; w ktorej bedzie
if pionowa_linia then komponent.height := w zalezonsci od dlugosci lini * jakas stala;
TGraphicControl = class(TControl)
private
FCanvas: TCanvas;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
protected
procedure Paint; virtual;
property Canvas: TCanvas read FCanvas;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
to ta deklaracja ja nie widze tutaj zadnego height przynajmniej nie widze tego co ty masz. Ja bym to nazwal wtedy slepym komponentem dlatego ze on istnieje tylko w pamieci, komputera to jak by zajarac gibona i miec mysli, ktorych nie ma jak sie nie zapali. komponetu nie widac, dodatkowo klasa TControl jakby nie zadzialaly moje porady ze stworzeniem hieghta, powinienes jeszcze pomyslec jak jzu tego nie zrobiles to z TControl mozna jeszcze wykombinowac cos takiego TControl(sender).height := 3; sender to obiekt, do ktorego sie odwolujesz, jako ze twoj komponent juz jest obiektem trzeba to jakos obejsc z tym sender nie pamietam jak :F moze cos to pomoze ale watpie