![]() |
Positionierungsprobleme
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP´ler,
ich baue gerade eine Komponente THixHistograph, welche von TCustompanel abgeleitet ist. Es wird ein Hintergrund gezeichnet und darauf eine Darstellungsfläche. Nun soll an die Darstellungsfläche in X und Y eine Skalierung, welche sich auch mit der Breiten-und Höhenänderung der Komponente angleicht. Die Skalen sind bereits Komponenten, welche ich in dieser verwende, da ich alle eigenschaften nicht neu setzen will. Nun zum Problem: Die Scalen, welche von THorScale und TVertScale abgeleitet sind, haben aufgrund Ihrer Erzeugung ein Width und Height bereits aus ihrem Constructor... Die Darstellungsfläche hat im Komponentenconstructor ja auch gesetzte Werte, wie mach ich das, dass sich die Darstellung der Skalen an den Width und Height der Darstellungsfläche orientiert und nicht mit den eigenen Werten...
Delphi-Quellcode:
Sieht gut aus, außer, wenn man die Komponente größer bzw. kleiner zieht
constructor THixHistoGraph.Create(AOwner: TComponent);
begin inherited; FColor := clBtnFace; FHistoBkColor := clBtnFace; Width := 270; Height := 200; FGapTop := 40; FGapBottom := 60; FGapLeft := 70; FGapRight := 40; FBorderstyle := bsSingle; FVisible := true; FFont := TFont.Create; FGridLineStyle := psSolid; FViewXCurrentMin := 0; FViewXCurrentMax := 10; FViewYMin := 0; FViewYMax := 10; FXScale := THorScale.Create(Self); FXScale.Parent := Self; FXScale.Width := Width - GapLeft- GapRight - 1; FXScale.Top := Height - GapBottom; FYScale := TVertScale.Create(Self); FYScale.Parent := Self; FYScale.Height := Height - GapTop - GapBottom; end;
Delphi-Quellcode:
Bin Dankbar für jeden Denkanstoß
procedure THixHistoGraph.DrawComponent;
var ComponentBackround : TRect; // zeichnet den Hintergrund der Komponente HistoBackround : TRect; // zeichnet die Darstellungsfläche der Komponente begin inherited; if (Parent = NIL) or not visible then Exit; begin ComponentBackround := Rect(0, 0, Width, Height); end; Canvas.Brush.Color := FColor; Canvas.Pen.Color := FColor; Canvas.FillRect(ComponentBackround); Frame3D(Canvas, ComponentBackround, clBtnHighlight, clBtnShadow, 1); // 3D Rahmen mit der Breite von 1 für Komponentenhintergrund with HistoBackround do begin HistoBackround := Rect(GapLeft, GapTop, Width - GapRight, Height - GapBottom); end; Canvas.Brush.Color := FHistoBkColor; Canvas.Pen.Color := FHistoBkColor; Canvas.FillRect(HistoBackround); Frame3D(Canvas, HistoBackround, clBtnShadow, clBtnHighlight, 1); end; procedure THixHistoGraph.DrawScales; begin inherited; if (Parent = NIL) or not visible then Exit; with XScale do begin XScale.Left := GapLeft+1; end; with YScale do begin YScale.Left := 1; YScale.Top := GapTop + 1; YScale.Width := GapLeft - 2; end; end; Hier mal noch ein Screenshot |
AW: Positionierungsprobleme
Ich bin zwar nicht sicher, ob ich das richtig verstanden habe, aber versuch doch mal, in der Hauptkomponente SetBounds zu überschreiben. Da kannst Du dann die Unterkomponenten neu positionieren. Wobei ich mich frage, wozu es überhaupt die Unterkomponenten braucht, aber das steht auf einem anderen Blatt.
|
AW: Positionierungsprobleme
Also die Hauptkomponente entsteht gerade...
Die Skalen sind nur von zwei anderen Komponenten abgeleitet, welche ich in der jetzigen verwende ! |
AW: Positionierungsprobleme
M.E. kannst Du einfach Resize überschreiben und dort die Scalen anordnen.
|
AW: Positionierungsprobleme
mhhhh, hab ich noch nicht gemacht...
procedure Resize(?);override; |
AW: Positionierungsprobleme
Da es sich offenbar um ganz einfache Striche und Ziffernfolgen handelt, würde ich das selber zeichnen. Das scheint mir "das geringere Übel" zu sein. Zudem kannst du beim Selberzeichnen auch noch ein paar Properties anbringen, die Schriftart, Linienstärke, Linienlänge, Unterteilungen oder was auch immer bestimmen und so eine weitaus flexiblere Komponente entwickeln.
|
AW: Positionierungsprobleme
Alles Gut !!!!
Danke an Stali, Resize hat das gemacht, was ich wollte !!! Ihr seid super !!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz