![]() |
StringGrid Zelle wird erst nach verlassen der Zelle eingefär
Hallo,
Delphi-Quellcode:
mit dieser Procedure wird jede Zelle individuelle eingefärbt. Wenn ich die StringGrid-Options goEditing= False habe wird die Zelle sofort eingefärbt. Ist die Options goEditing = True wird die Zelle erst nach dem Verlassen eingefärbt.
procedure TfrmStringGridDemo.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState); begin with Sender as TStringGrid do begin if ((aCol >= FixedCols) and (aRow>=FixedRows) and (Objects[aCol, aRow]<> NIL)) then begin Canvas.Brush.Color:= TColor(Objects[aCol, aRow]); Canvas.FillRect(Rect); DrawText(Canvas.Handle, PChar(Cells[aCol, aRow]), Length(Cells[aCol, aRow]), Rect, DT_CENTER); end; end; end; Wie kann man es erreichen das die Zelle sofort eingefärbt wird, auch wenn goEditing auf True steht? Bis bald Chemiker |
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Da ist noch der Inplace-Editor aktiv.
Im Standard-Stringgrid ist dieses Teil etwas störrisch. Versuche doch, ob man für diesen Color setzen kann. Peter |
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Hallo hanspeter,
Zitat:
Bis bald Chemiker |
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Für die Eingabe wird ein Editor-Element erzeugt, welches an der Stelle eingeblendet wird, beim Verlassen wird dein Code aufgerufen.
|
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Hallo mkinzler,
das bedeutet, dass man das Editor-Element verändern muss, um das Verhalten zu ändern? Bis bald Chemiker |
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Möglicherweise. Vielleicht hilft es auch die Farbe zu ändern
|
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Hallo,
habe nach Inplace-Editor gesucht und bin auf einen Beitrag von Sakura gestoßen, der für StringGrid eine neue Komponente schreibt. ![]() @ mkinzler: Meinst Du das mit Farbe ändern, oder gibt es noch eine andere Methode um das Verhalten zu verändern? Bis bald Chemiker |
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Lass mal DefaultDrawing auf True und setzte nur die Farbe
|
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Hallo mkinzler,
DefaultDrawing habe ich nicht verstellt, sie steht auf TRUE. Was meinst Du mit nur die Farbe setzen? Mit Doppel-Click auf die Zelle, wird ein ColorDialog geöffnet und man kann die Farbe aussuchen.
Delphi-Quellcode:
Bis bald Chemiker
procedure TfrmStringGridDemo.StringGrid1DblClick(Sender: TObject);
begin with Sender as TStringGrid do begin if ColorDialog1.Execute then begin Objects[Col,Row]:= pointer (ColorDialog1.Color); Invalidate; end; end; end; |
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Moin Chemiker,
wenn du mit der Standardkomponente TStringGrid arbeitest, dann genügt es, wenn du im richtigen Augenblick die Farbe deines Editors an die in Objects[] hinterlegte Farbe anpasst:
Delphi-Quellcode:
Grüße vom marabu
uses
Mask; type TGridCracker = class(TStringGrid); procedure TDemoForm.StringGridGetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String); begin with TGridCracker(Sender) do if Assigned(InplaceEditor) then if Assigned(Objects[Col, Row]) then TMaskEdit(InplaceEditor).Color := TColor(Objects[ACol, ARow]) else TMaskEdit(InplaceEditor).Color := Color; end; |
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Hallo marabu,
das ist ja genial. Ist meine Vermutung richtig, dass die Deklaration von TGridCracker dazu dient den InplaceEditor zu ändern. Was ich noch nicht verstehe, warum ist diese Zeile eingefügt.
Delphi-Quellcode:
Bis bald Chemiker
if Assigned(InplaceEditor) then
|
Re: StringGrid Zelle wird erst nach verlassen der Zelle eing
Zitat:
Delphi Sprachreferenz :: private-, protected- und public-Elemente ... Ein protected-Element ist innerhalb des Moduls mit der Klassendeklaration und in allen abgeleiteten Klassen (unabhängig davon, in welchem Modul sie deklariert sind) sichtbar. ... Die Prüfung auf Assigned() habe ich nur aufgenommen, weil ich zu faul bin den Nachweis zu führen, dass der InplaceEditor zu diesem Zeitpunkt zuverlässig instanziert ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 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