Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Daten aus Array zeichnen (https://www.delphipraxis.net/185132-daten-aus-array-zeichnen.html)

Chris211183 19. Mai 2015 10:10

AW: Daten aus Array zeichnen
 
Zitat:

Zitat von Popov (Beitrag 1302108)
Zitat:

Zitat von Chris211183 (Beitrag 1302098)
Bringt mich aber jetzt nicht wirklich weiter Popov

Nein, hast du Recht, aber wenn ich so was sehe:
Delphi-Quellcode:
public
    ...
    ReadInArray :Array of Real;
    procedure DrawMeasureValue(const ReadInArray : Array of Real);
dann verbringe ich die halbe Zeit damit den Code zu analysieren. Sicher, bei Delphi haben lokale Variablen eine höhere Priorität als gleichnamige nichtlokale, es ist aber eine potentielle Fehlerquelle. Mal ist ReadInArray eine Feldvariable, mal Parameter.

Wenn ich also sage, dass mich Feldvariablen ohne ein F davor etwas durcheinander bringen, dann auch deshalb, weil ich dann beim lesen des Codes nicht sofort erkenne um was es sich handelt. Man kann es ermitteln, aber bist du sicher auch immer das richtige ReadInArray gemeint zu haben?

Tipp: F bei Feldvariablen, A bei Prozeduren. Schon kommt man nicht durcheinander.

Ja da hast du auch recht...
Für Dich, ReadInArray bekommt seine Werte aus einer Datei, die werden in das Array eingelesen und dann in der Paint benutzt, das Einlesen der Werte erfolgt im der FormUnit ! (es sind 600 Werte)
Beim auslesen der Werte stehen die auch so drin, alles bereits getestet :gruebel:,

find halt absolut nicht das Problem, warum er das nicht malen will...

BadenPower 19. Mai 2015 11:00

AW: Daten aus Array zeichnen
 
einmal ganz banal gefragt:

Hast Du schon überprüft, ob THixHistoGraph.DrawMeasureValue überhaupt aufgerufen wird, da es in DrawComponent ja mehrere If-Bedingungen gibt, die dies unterbinden könnten?

Wie sehen die Farben von Brush und Pen des Canvas aus? Dort verwendest Du ja Variabeln, welche eventuell nicht die richtigen oder die gleichen Werte haben.

Popov 19. Mai 2015 11:04

AW: Daten aus Array zeichnen
 
Noch einmal und dann nicht mehr, weil du anscheinend das Problem nicht als Problem siehst. Du hallst dich an keine Konventionen und mischt alles lustig durcheinander, als Komponente und Formular. So wie ich deinen Code verstehe ist es eine Komponente. Zumindest finde ich da Begriffe die darauf schließen lassen.

Variablem mit gleichem Namen tauchen mal als Feldvariablen, mal als Parameter auf. Zum Beispiel Canvas. Ich weiß nicht was du mit Canvas meinst, bzw. welche? Da du dich an die üblichen Konventionen nicht hältst, könnte Cnavas in der Komponente FCanvas sein, die du aber ohne F schreibst, es kann aber auch Form1.Canvas sein. Woher soll man das wissen?

Aber gehen wir mal davon aus, dass es eine Komponente ist, die aber auf irgendeine Canvas zeichnet, die als erste der Komponente unter die Augen kommt. Vielleicht ist es die Form Canvas. Das ist wie "ene mene muh und dran bist du" Canvas.

Gucken wir uns mal das an:
Delphi-Quellcode:
procedure THixHistoGraph.DrawComponent;
var
   {zeichnet Komponente}
   ComponentBackround : TRect; //<<<<<<

   {zeichnet die Darstellungsfläche der Komponente}
   HistoBackround : TRect;

begin

 if FBorderstyle = bsSingle then
   begin
   inherited;
   if (Parent = NIL) or not visible
   then Exit;
   begin
     ComponentBackround := Rect(0, 0, Width, Height); //<<<<<< ist das Komponenten Background?
           // oder von Form1? Was ist Width oder Height? Formularbreite und Höhe? 
     Canvas.Brush.Color := FColor; //<<<<<< welches Canvas?
     Canvas.Pen.Color := FColor;
     Canvas.Pen.Style := psSolid;
     Canvas.FillRect(ComponentBackround);
So richtig weiß man nicht auf was du zugreifst.

Chris211183 19. Mai 2015 11:04

AW: Daten aus Array zeichnen
 
Zitat:

Zitat von BadenPower (Beitrag 1302129)
einmal ganz banal gefragt:

Hast Du schon überprüft, ob THixHistoGraph.DrawMeasureValue überhaupt aufgerufen wird, da es in DrawComponent ja mehrere If-Bedingungen gibt, die dies unterbinden könnten?

Wie sehen die Farben von Brush und Pen des Canvas aus? Dort verwendest Du ja Variabeln, welche eventuell nicht die richtigen oder die gleichen Werte haben.

Gute Idee, ja habe ich breits getan...
wenn ich mit einer einfachen Line (MoveTo, LineTo) teste, zeichnet er auch, Passt da an meiner Parametriesierung etwas nicht ? meiner meinung nach sollte das Ok sein, meine letzter Gedankenstrohalm...

Chris211183 19. Mai 2015 11:07

AW: Daten aus Array zeichnen
 
Zitat:

Zitat von Popov (Beitrag 1302130)
Noch einmal und dann nicht mehr, weil du anscheinend das Problem nicht als Problem siehst. Du hallst dich an keine Konventionen und mischt alles lustig durcheinander, als Komponente und Formular. So wie ich deinen Code verstehe ist es eine Komponente. Zumindest finde ich da Begriffe die darauf schließen lassen.

Variablem mit gleichem Namen tauchen mal als Feldvariablen, mal als Parameter auf. Zum Beispiel Canvas. Ich weiß nicht was du mit Canvas meinst, bzw. welche? Da du dich an die üblichen Konventionen nicht hältst, könnte Cnavas in der Komponente FCanvas sein, die du aber ohne F schreibst, es kann aber auch Form1.Canvas sein. Woher soll man das wissen?

Aber gehen wir mal davon aus, dass es eine Komponente ist, die aber auf irgendeine Canvas zeichnet, die als erste der Komponente unter die Augen kommt. Vielleicht ist es die Form Canvas. Das ist wie "ene mene muh und dran bist du" Canvas.

Gucken wir uns mal das an:
Delphi-Quellcode:
procedure THixHistoGraph.DrawComponent;
var
   {zeichnet Komponente}
   ComponentBackround : TRect; //<<<<<<

   {zeichnet die Darstellungsfläche der Komponente}
   HistoBackround : TRect;

begin

 if FBorderstyle = bsSingle then
   begin
   inherited;
   if (Parent = NIL) or not visible
   then Exit;
   begin
     ComponentBackround := Rect(0, 0, Width, Height); //<<<<<< ist das Komponenten Background?
           // oder von Form1? Was ist Width oder Height? Formularbreite und Höhe? 
     Canvas.Brush.Color := FColor; //<<<<<< welches Canvas?
     Canvas.Pen.Color := FColor;
     Canvas.Pen.Style := psSolid;
     Canvas.FillRect(ComponentBackround);
So richtig weiß man nicht auf was du zugreifst.

Danke Popov, weiß was Du meinst !
Ja daran kann es tatsächlich liegen :wall: dummer Fehler, sorry dass ich das jetzt erst gerallt habe, was Du die ganze Zeit meintest !

Captnemo 19. Mai 2015 13:40

AW: Daten aus Array zeichnen
 
Zitat:

Zitat von Chris211183 (Beitrag 1302132)
Ja daran kann es tatsächlich liegen :wall: dummer Fehler, sorry dass ich das jetzt erst gerallt habe, was Du die ganze Zeit meintest !

Eigentlich habe ich dir im #4 Post schon den richtigen Denkanstoß gegeben:
Zitat:

Zitat von Captnemo (Beitrag 1301932)
Worauf zeichnest du? Du solltest deinen Canvas im OnPaint des gewünschten Controls zeichnen, sonst wird das nix.

Ich hab mich zwar nicht so deutlich ausgedrückt, aber ich dachte damit wäre das klar.

Chris211183 19. Mai 2015 17:52

AW: Daten aus Array zeichnen
 
Zitat:

Zitat von Captnemo (Beitrag 1302160)
Zitat:

Zitat von Chris211183 (Beitrag 1302132)
Ja daran kann es tatsächlich liegen :wall: dummer Fehler, sorry dass ich das jetzt erst gerallt habe, was Du die ganze Zeit meintest !

Eigentlich habe ich dir im #4 Post schon den richtigen Denkanstoß gegeben:
Zitat:

Zitat von Captnemo (Beitrag 1301932)
Worauf zeichnest du? Du solltest deinen Canvas im OnPaint des gewünschten Controls zeichnen, sonst wird das nix.

Ich hab mich zwar nicht so deutlich ausgedrückt, aber ich dachte damit wäre das klar.

ja, ich bin nicht so der Programmierer, aber ich arbeite dran und bin stets bemüht :lol:
dennoch vielen Dank für Deine Zeit und Nerven

Captnemo 19. Mai 2015 20:42

AW: Daten aus Array zeichnen
 
Kein Problem.

HHennig 21. Mai 2015 12:21

AW: Daten aus Array zeichnen
 
Hallo,
ich glaube den Fehler gefunden zu haben:

Zitat:

Delphi-Quellcode:
 if FBorderstyle = bsSingle then
    begin
    inherited;
    if (Parent = NIL) or not visible
    then Exit;
    begin
      ComponentBackround := Rect(0, 0, Width, Height); //<<<<<< ist das Komponenten Background?
            // oder von Form1? Was ist Width oder Height? Formularbreite und Höhe? 
      Canvas.Brush.Color := FColor; //<<<<<< welches Canvas?   //// ******** 
      Canvas.Pen.Color := FColor;                             //// ******** 
      Canvas.Pen.Style := psSolid;
      Canvas.FillRect(ComponentBackround);

Du verwendest für Pen und Brush die gleiche Farbe! Weisser Adler auf weissem Grund?

BadenPower 21. Mai 2015 12:33

AW: Daten aus Array zeichnen
 
Zitat:

Zitat von HHennig (Beitrag 1302448)
Hallo,
ich glaube den Fehler gefunden zu haben:

Du verwendest für Pen und Brush die gleiche Farbe! Weisser Adler auf weissem Grund?

Darauf wurde bereits in #22 hingewiesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.
Seite 3 von 3     123   

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