![]() |
VST GetText Problem
Hi,
habe ein Problem mit VST.GetText, wenn ich
Delphi-Quellcode:
Funktioniert alles, ich kann Nodes löschen usw.
procedure TFormMain.VstGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); Var Customer: TCustomerdaten; begin Customer:= TCustomerdaten(Vst.GetNodeData(node)^ ); case Column of 0: CellText:= Customer.company_name; 1: CellText:= Customer.email; 2: CellText:= Customer.company_industry; 3: CellText:= Customer.Anrede +' '+Customer.name; 4: CellText:= Customer.create_date; 5: CellText:= Customer.customer_number; 6: Celltext:= Customer.status; end; end; Allerdings wenn ich nun
Delphi-Quellcode:
Probiere, damit die spalten eingefärbt werden und dann auf den Button Node löschen klick, passiert gar nichts mehr und das Programm hängt sich auf und im Taskmanager verursacht das Programm aufeinmal 50% auslastung.
procedure TFormMain.VstGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); Var Customer: TCustomerdaten; begin Customer:= TCustomerdaten(Vst.GetNodeData(node)^ ); If Customer.status = 'aktive' Then Sender.Font.Color:= ClGreen Else if Customer.status = 'inaktive' then Sender.Font.Color:= ClRed; case Column of 0: CellText:= Customer.company_name; 1: CellText:= Customer.email; 2: CellText:= Customer.company_industry; 3: CellText:= Customer.Anrede +' '+Customer.name; 4: CellText:= Customer.create_date; 5: CellText:= Customer.customer_number; 6: Celltext:= Customer.status; end; end; Wie kann das sein? PS: Lösch Button sieht so aus
Delphi-Quellcode:
Wobei nichtmal die MessageBox dann aufgerufen wird, wenn ich die Zeilen einfärbe
procedure TFormMain.ButtonDeleteClick(Sender: TObject);
begin Try If Application.MessageBox('Möchten Sie den Kunden wirklich löschen?', 'Kunden löschen', MB_OKCancel or MB_SETFOREGROUND) = IDok then CustomerDelete; // Funktion Except Showmessage('Sie müssen einen Kunden auswählen.'); End; end; |
Re: VST GetText Problem
Wenn du permanent die Farbe des Controls änderst (Sender.Font.Color) wird jedesmal das Control komplett neu gezeichent.
Das Färben muß in entsprechenden Draw-Routinen des Grids erfolgen und dann auf dem aktuellen Canvas des Controls und nicht auf dem allgemeinen Font-Property. |
Re: VST GetText Problem
Das hab ich mir fast gedacht, das es sich immer neu zeichnet so kam es mir nämlich vor ;) nun hab ich gewissheit.
Danke. Edit: hab es nun so gelöst:
Delphi-Quellcode:
Allerdings wie war der befehl um nur die Schriftfarbe zuändern und nicht die Hintergrundfarbe der Spalte
procedure TFormMain.VstCustomerBeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellPaintMode: TVTCellPaintMode; CellRect: TRect; var ContentRect: TRect); begin Customer:= TCustomerdaten(VstCustomer.GetNodeData(node)^ ); If Customer.status = 'aktive' Then TargetCanvas.Brush.Color := clGreen Else TargetCanvas.Brush.Color := clRed; TargetCanvas.FillRect(CellRect); end; |
Re: VST GetText Problem
Zitat:
|
Re: VST GetText Problem
Das denk ich auch, bloß was muss hier rein dann
Delphi-Quellcode:
Das hab ich nicht raus gefunden :/
TargetCanvas.FillRect(CellRect);
|
Re: VST GetText Problem
Ich würde im Event VSTPaintText die property TargetCanvas.Font.Color deinen Wünschen nach setzen.
Das OnGetText Event dient lediglich zum Ermitteln des Textes - wie der Name des Events ja schon vermuten lässt. |
Re: VST GetText Problem
Genau das hab ich gesucht.
Danke |
Re: VST GetText Problem
No problem,
der VST hat schon ne Menge zu bieten. Am besten schaut man sich mal die Demos an. Diese kann man direkt von der Webseite des Autors downloaden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz