AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree DoBeforeCellPaint

Ein Thema von Guentiganz · begonnen am 26. Feb 2013 · letzter Beitrag vom 20. Mär 2013
Antwort Antwort
Guentiganz

Registriert seit: 15. Dez 2010
20 Beiträge
 
#1

VirtualStringTree DoBeforeCellPaint

  Alt 26. Feb 2013, 12:01
Hallo Zusammen,

Ich habe eine Klasse von TVirtualStringTree abgeleitet und möchte die Methode DoBeforeCellPaint überschreiben.
Wenn ich die Property Self.Colors.FocusedSelectionColor in dem Event ändere werden die Repaint-Ereignisse des Formulars nicht erneuert
Siehe Anhang

Wenn ich das Formular verschiebe, wird das Formular aktualisiert
sobald ich die FocusedSelectionColor nicht anfasse, funktioniert auch alles wie gewünscht

auch funktioniert das Scrollen mit mittlerer Maustaste nicht wenn die Eigenschaft gesetzt wird

Könnte das eventuell mit einem Update-State zu tun haben?
Code:
procedure TVSTGrid.DoBeforeCellPaint(Canvas: TCanvas; Node: PVirtualNode;
  Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; CellRect: TRect;
  var ContentRect: TRect);
var
  Data: PTTreeData;
begin
    Try
        //Fully Customizable
        If Assigned(OnBeforeCellPaint) then begin
            inherited;
        //Easy to handle Row-Color Modification
        end else if Assigned(FBeforeRowDraw) then begin
            //Data^.RowColor is already been loaded in AddFields Method
            Data := Self.GetNodeData(Node);
            Canvas.Brush.Color := Data^.RowColor;

            if Self.Selected[Node] then begin
                Canvas.Brush.Color := Canvas.Brush.Color - $222222;
            end;
                 {
            //dosent work, as the rest of the Form will not be repainted!?
            if (Canvas.Brush.Color - $222222) > $0 then begin
                //darker Color for Highlighting
                Self.Colors.FocusedSelectionColor := Canvas.Brush.Color - $222222;
            end else begin
                Self.Colors.FocusedSelectionColor := clGradientActiveCaption;
            end;
            //}
            Canvas.FillRect(CellRect);
        end else begin
            Data := Self.GetNodeData(Node);
            IF Data^.Index mod 2 = 0 then begin
                Canvas.Brush.Color := FRowModColor;

                Canvas.FillRect(CellRect);
            end;
            Canvas.Font.Color := Self.FRowModFontColor;
        end;
    Except
        on e:Exception do begin
          showmessage('DoBeforeCellPaint' + e.message);
        end;
    End;
end;
Wie folgt "aufgerufen"
Code:
procedure TFMain.grid_AntragBeforeRowDraw(VstGrid: TVSTGrid;
  DataSet: TDataSet; var TargetColor: TColor);
var
  ColorStr: String;
begin
    ColorStr := DataSet.FieldByName('farbe').AsString;

    if ColorStr <> '' then begin
        TargetColor := StringToColor(ColorStr);
    end else begin
        TargetColor := clWhite;
    end;
end;
Miniaturansicht angehängter Grafiken
screen.png  

Geändert von Guentiganz (26. Feb 2013 um 13:11 Uhr)
  Mit Zitat antworten Zitat
Guentiganz

Registriert seit: 15. Dez 2010
20 Beiträge
 
#2

AW: VirtualStringTree DoBeforeCellPaint

  Alt 20. Mär 2013, 09:52
push
  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 08:08 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