Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: StringGrid DragMode Color

  Alt 28. Jan 2015, 08:48
Genau für dieses Szenario gibt es extra die Klassen Delphi-Referenz durchsuchenTBrushRecall und Delphi-Referenz durchsuchenTFontRecall.

Eine sinnvolle Ergänzung wäre es, wenn man sich noch ein Interface dafür bauen würde, dann käme man für die meisten mit nur einer Zeile Code aus. Ansonsten sieht das so aus:
Delphi-Quellcode:
procedure WorkWithCanvas( ACanvas : TCanvas );
var
  LBrushRecall : TBrushRecall;
begin
  LBrushRecall := TBrushRecall.Create( ACanvas.Brush );
  try

    ACanvas.Brush.Color := clRed;

  finally
    LBrushRecall.Free;
  end;
  // Jetzt ist ACanvas.Brush wieder wie vorher
end;
Mit einem Interface könnte das so aussehen
Delphi-Quellcode:
procedure WorkWithCanvas( ACanvas : TCanvas );
begin
  TBrushRecallFactory.Construct( ACanvas.Brush ); // erzeugt ein Interface

  ACanvas.Brush.Color := clRed;

end;
// nach dem Verlassen der Methode wird die Interface Referenz zerstört
// damit auch der Recall und damit der ACanvas.Brush wieder hergestellt :o)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (28. Jan 2015 um 08:53 Uhr)
  Mit Zitat antworten Zitat