AGB  ·  Datenschutz  ·  Impressum  







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

Skala an Komponente

Ein Thema von Chris211183 · begonnen am 11. Nov 2013 · letzter Beitrag vom 12. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
Chris211183

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

Skala an Komponente

  Alt 11. Nov 2013, 11:34
Hallo Delphianer,

ich möchte an meiner Komponente an der linken Seite eine Messskala haben, wobei ich nicht genau weiß, wie ich das jetzt am Dümmsten anstellen soll, kann...
jemand einen Tip ?


Delphi-Quellcode:
type
THixBargraphKind = (sbHorizontal, sbVertical);
 THixBarGraphLabelingOrientation = (lboAbove, lboBelow, lboLeft, lboright);


private
FKind : THixBarGraphKind;
FLabelingStyle : ThixBarGraphLabelingStyle;
procedure SetKind(const Value: THixBarGraphKind);
procedure SetLabellingStyle(const Value: ThixBarGraphLabelingStyle);

published
property LabellingStyle : THixBarGraphLabelingStyle read FLabellingStyle write SetLabellingStyle;
Property LabelingFont : TFont read FLabelingFont write SetLabelingFont;

….....

implementation

…....
destructor THixBarGraph.Destroy;
begin
  inherited Destroy;
end;

procedure THixBarGraph.Paint;
var
   R: TRect;

begin
  inherited;
  if (Parent = NIL) or not visible
  then Exit;

  case FKind of

      sbHorizontal :
          R := Rect(OffsetUpper,
                   (Height - Barwidth) div 2,
                    Width - OffsetLower,
                   (Height + Barwidth) div 2);

      sbVertical :
          R := Rect((Width - BARWIDTH) div 2,
                     Height - (Height - OffsetUpper),
                     (Width + BARWIDTH) div 2,
                     Height - OffsetLower);
          end;

                 Canvas.Brush.Color := FColor;
                 Canvas.FillRect(Rect(0, 0, Width, Height));
                 Canvas.Brush.Color := FBarColor;
                 Canvas.FillRect(R);
                 Frame3D(Canvas, R, clBtnShadow, clBtnHighlight, 1);
end;

procedure THixBarGraph.SetKind(const Value: THixBarGraphKind);
begin
   if FKind <> Value
   then
   begin
       FKind := Value;
       invalidate;
   end;
end;

procedure THixBarGraph.SetOffsetLower(const Value: Integer);
begin
   if FOffsetLower <> Value
   then
     begin
       FOffsetLower := Value;
       invalidate;
     end;

end;

procedure THixBarGraph.SetOffsetUpper(const Value: Integer);
begin
   if FOffsetUpper <> Value
   then
     begin
       FOffsetUpper := Value;
       invalidate;
     end;

end;
Christian
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Skala an Komponente

  Alt 11. Nov 2013, 14:20
wie ich das jetzt am Dümmsten anstellen soll, kann...
jemand einen Tip ?
Der dümmste Tip, der mir einfällt, ist: Implementiere das in der Paint-Methode.

Im Ernst: Was für eine Skala? Wann soll sie gezeichnet werden? Oder meinst Du eine Achsenbeschriftung mit Achseneinteilung etc.?
  Mit Zitat antworten Zitat
Chris211183

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

AW: Skala an Komponente

  Alt 11. Nov 2013, 14:27
genau das !


Ich beschreib mein Problem mal genauer


Es geht jetzt darum, dass ich verschiedene Skalenbereiche für den Graphen haben möchte, quasi Linien, Zahlen, beides zusammen, etc...
Diese Wertebereiche sollen Variabel sein, möchte ich mit Value, ValueMin und ValueMax definieren vom Rückgaberwert Double.
Nun könnte ich ja Canvas.LineTo benutzen (was nur Integer zurück gibt), desweiteren, soll das ganze ja aber auch bei horizontaler und verticaler Ansicht von der Komponente passen..., stehe hier voll auf dem Schlauch, Ideen sind da, nur an der Umsetztung haperts seid nen paar Tagen
Christian
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Skala an Komponente

  Alt 11. Nov 2013, 14:36
Ah.
Je eine Routine zum Zeichnen der Skala links, rechts, oben bzw. unten. Kann man alles in einer Routine machen, wird aber unübersichtlich. Mit der Zeichenroutine hast Du auch gleich die Abmessungen des Bereichs (also dort, wie die Beschriftungen etc. hinsollen) bzw. legst diese Fest. Beispielsweise ergibt sich die Breite einer vertikalen Skala mit Beschriftung aus der Breite des längsten Labels + Zwischenraum + Majortick-Länge.

Und wenn Du das dann schon hast (Also die Abmessungen), ergibt sich der Rest fast von alleine.

Du kannst ja zuerst die Achsen einzeichnen und in den Routinen die Breite/Höhe bestimmen (brauchst Du ja zum Zeichnen). Wenn Du dann den Grafikbereich zeichnen willst, hast Du schon den Offset links/rechts/oben/unten.

Die Problematik 'Float=>Integer' bekommst Du ja mit nem Dreisatz hin: X-Pixel = x-linker-Offset + (X-xMin)/Breite-Grafikbereich-in-Pixel
  Mit Zitat antworten Zitat
Chris211183

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

AW: Skala an Komponente

  Alt 11. Nov 2013, 14:45
wow , ja an der Mathematik solls nicht hapern, an der Implementation ehr...

hast Du irgendwie nen Beispiel, wie und wo man das am einfachsten macht ?
wäre es dann besser, anstatt der Case of- Anweisung mit if/Else zu arbeiten ?
Christian
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Skala an Komponente

  Alt 11. Nov 2013, 18:38
wäre es dann besser, anstatt der Case of- Anweisung mit if/Else zu arbeiten ?
Du hast Probleme Erstmal zum laufen bringen. Hübsch kann es dann immer noch werden.
  Mit Zitat antworten Zitat
Chris211183

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

AW: Skala an Komponente

  Alt 11. Nov 2013, 19:02
ja da hast Du Recht , wie mit den Frauen so´n Quellcode (an alle Feministinnen, es ist ein Spaß !!!)

ne geht einfach nur darum, dass da links Striche dran sein sollen erstmal und immer im gleichen Abstand, (theoretisch is das kein Ding, bloß Praktisch ist der Chris da überfordert, weil ihm da ein paar Jahre Delphi fehlen), der Compiler weißt mich immer wieder darauf hin, dass das kein C++ ist, was ich auch weiß...

erstmal nur Striche am linken rand über lbsLines in der Paint-Methode an BEIDEN sbVertical und sbHorizontal..., ich fang hier bald an zu trinken...

programmieren, macht ganz schnell, verdammt alt
Christian
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Skala an Komponente

  Alt 11. Nov 2013, 20:20
Mal ein Tipp:

- erst mal EINE Linie horizontal zeichnen
- dann abhängig von der Ausrichtung horizontal oder vertikal
- dann mehrere Linien

Also heran tasten sozusagen.

Dann kannst Du bei Problemen auch gezielter bzw. genauer nachfragen und wir können besser helfen.

Bei Deinen Fragestellungen wären auch Screenshots sinnvoll, was Du schon hast und Skizzen, was Du brauchst.
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
 
#9

AW: Skala an Komponente

  Alt 12. Nov 2013, 10:46
Okay, im Anhang ein Screenshot, links meine derzeitige Komponente, rechts, wie sie mal aussehen soll...
Angehängte Dateien
Dateityp: pdf BarGrBeide.pdf (27,5 KB, 21x aufgerufen)
Christian
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Skala an Komponente

  Alt 12. Nov 2013, 11:23
Also ich versuche es mal:
- Left, Right, Top, Bottom für den Skalenbereich berechnen (optisch vorerst mit Rect zeichnen kontrollieren)
- Abstand festlegen
- Schleife Y von Top bis Bottom mit Abstand durchlaufen
- Linie zeichnen von Left/Y->Right/Y

Wo es klemmt, nochmal nachfragen.
Wenn Du die Sache strukturiert und überlegt angehst, dann sollte das schon klappen...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:35 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