AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Positionierungsprobleme

Ein Thema von Chris211183 · begonnen am 9. Feb 2015 · letzter Beitrag vom 9. Feb 2015
Antwort Antwort
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#1

Positionierungsprobleme

  Alt 9. Feb 2015, 09:59
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:
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;
Sieht gut aus, außer, wenn man die Komponente größer bzw. kleiner zieht

Delphi-Quellcode:
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;
Bin Dankbar für jeden Denkanstoß

Hier mal noch ein Screenshot
Miniaturansicht angehängter Grafiken
screenshot.jpg  
Christian

Geändert von Chris211183 ( 9. Feb 2015 um 10:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Positionierungsprobleme

  Alt 9. Feb 2015, 10:26
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#3

AW: Positionierungsprobleme

  Alt 9. Feb 2015, 10:35
Also die Hauptkomponente entsteht gerade...
Die Skalen sind nur von zwei anderen Komponenten abgeleitet, welche ich in der jetzigen verwende !
Christian
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Positionierungsprobleme

  Alt 9. Feb 2015, 11:46
M.E. kannst Du einfach Resize überschreiben und dort die Scalen anordnen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#5

AW: Positionierungsprobleme

  Alt 9. Feb 2015, 12:14
mhhhh, hab ich noch nicht gemacht...

procedure Resize(?);override;
Christian
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Positionierungsprobleme

  Alt 9. Feb 2015, 12:19
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.
  Mit Zitat antworten Zitat
Chris211183

Registriert seit: 19. Sep 2013
Ort: Braunschweig
204 Beiträge
 
Delphi 6 Professional
 
#7

AW: Positionierungsprobleme

  Alt 9. Feb 2015, 12:27
Alles Gut !!!!

Danke an Stali, Resize hat das gemacht, was ich wollte !!!

Ihr seid super !!!
Christian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz