AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit TBrushRecall

Ein Thema von Popov · begonnen am 4. Apr 2015 · letzter Beitrag vom 4. Apr 2015
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Probleme mit TBrushRecall

  Alt 4. Apr 2015, 00:59
Angeregt durch einen Beitrag, habe ich in einem meiner Projekte einige Prozeduren verändert und meinen plumpen Code durch den Tipp mit TBrushRecall & Co. ersetzt. Eigentlich klappt das in allen Prozeduren, nur bei einer kommen falsche Ergebnisse raus. Warum?

Beispiel: Brush.Color der Bitmap ist clYellow. Nun will ich einige Rechteck mit einer anderen Farbe füllen. Zuerst wird ein Rechteck weiß gefüllt, dann ein zweites gleich, anschließend mit einer kurzen Verzögerung werden beide grün überzeichnet. Dazu die erste Prozedur. Die funktioniert auch.
Delphi-Quellcode:
var
  BrushStyle: TBrushStyle;
begin
  with Bitmap.Canvas do
  begin
    BrushStyle := Brush.Style;
    Brush.Style := bsSolid;
    Brush.Color := AColor;
    FillRect(GetCellRect(Col, Row));
    Brush.Style := BrushStyle;
  end;
end;
Diese Prozedur sollte eigentlich gleich funktionieren. Tut sie aber nicht. Das erste Rechteck wird noch mit weiß gefüllt, das zweite dann mit gelb (statt weiß), dann werden beide mit gelb überzeichnet (statt grün).

Beide Prozeduren werden mit den jeweiligen Farben aufgerufen, nicht etwa mit Brush.Color. Wieso reagiert die zweite Prozedur nicht auf die Farben?
Delphi-Quellcode:
var
  LBrushRecall : TBrushRecall;
begin
  with Bitmap.Canvas do
  begin
    LBrushRecall := TBrushRecall.Create(Brush);
    try
      Brush.Style := bsSolid;
      Brush.Color := AColor;
      FillRect(GetCellRect(Col, Row));
    finally
      LBrushRecall.Free;
    end;
  end;
end;
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Probleme mit TBrushRecall

  Alt 4. Apr 2015, 01:25
Evtl. habe ich den Fehler. Der erste Code enthält u. U. einen kleinen Fehler. Dazu kommt, dass an einer andere Stelle des Programm es auch einen anderen kleinen Fehler gibt. Und so wie es aussieht haben sich diese zufällig gegenseitig aufgehoben. So das die Fehler nie aufgefallen sind. Der zweite Code macht anscheinend alles richtig.

Aber es ist zu spät um noch logisch zu denken. Ich überprüfe es morgen richtig.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Probleme mit TBrushRecall

  Alt 4. Apr 2015, 01:48
Ich würde hier einfach mal einen Breakpoint setzen und Canvas.Brush.Style.Color im Überwachungsfenster (überwachte Ausdrücke) kontrollieren. Dann siehst du ja genau, welche Farbe wann und wo übergeben/eingestellt wird.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Probleme mit TBrushRecall

  Alt 4. Apr 2015, 16:17
Ja, wie ich es mir gedacht habe: kleiner Fehler plus kleiner Fehler ergibt einmal richtig . Bösewicht ist diese Zeile: Brush.Color := AColor; Die hätte ich nach dem Füllen zurücksetzten müssen, aber ich dachte mir damals es ist unwichtig. Dann hab ich die Prozedur einmal mit der neuen Farbe aufgerufen, beim zweiten mal mit der Brush Farbe. Und da Brush.Color beim ersten mal schon umgestellt wurde, war das Ergebnis beim zweiten Mal zufällig richtig.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Probleme mit TBrushRecall

  Alt 4. Apr 2015, 16:58
Ja, wie ich es mir gedacht habe: kleiner Fehler plus kleiner Fehler ergibt einmal richtig . Bösewicht ist diese Zeile: Brush.Color := AColor; Die hätte ich nach dem Füllen zurücksetzten müssen, aber ich dachte mir damals es ist unwichtig. Dann hab ich die Prozedur einmal mit der neuen Farbe aufgerufen, beim zweiten mal mit der Brush Farbe. Und da Brush.Color beim ersten mal schon umgestellt wurde, war das Ergebnis beim zweiten Mal zufällig richtig.
JO Stress pur..
Hab es ja selbst auch erlebt.
Da Fehler zu finden kann Stunden dauern.

gruss
  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 18:49 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