AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi StringGrid Zelle wird erst nach verlassen der Zelle eingefär
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid Zelle wird erst nach verlassen der Zelle eingefär

Ein Thema von Chemiker · begonnen am 19. Jul 2008 · letzter Beitrag vom 20. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#1

StringGrid Zelle wird erst nach verlassen der Zelle eingefär

  Alt 19. Jul 2008, 01:35
Hallo,

Delphi-Quellcode:
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;
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.

Wie kann man es erreichen das die Zelle sofort eingefärbt wird, auch wenn goEditing auf True steht?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#2

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 19. Jul 2008, 07:21
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
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 19. Jul 2008, 09:14
Hallo hanspeter,

Zitat:
Versuche doch, ob man für diesen Color setzen kann.
Wie meinst Du das jetzt, kannst Du mir das näher Erläutern?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 19. Jul 2008, 09:17
Für die Eingabe wird ein Editor-Element erzeugt, welches an der Stelle eingeblendet wird, beim Verlassen wird dein Code aufgerufen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 19. Jul 2008, 09:26
Hallo mkinzler,

das bedeutet, dass man das Editor-Element verändern muss, um das Verhalten zu ändern?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 19. Jul 2008, 09:29
Möglicherweise. Vielleicht hilft es auch die Farbe zu ändern
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 19. Jul 2008, 10:08
Hallo,

habe nach Inplace-Editor gesucht und bin auf einen Beitrag von Sakura gestoßen, der für StringGrid eine neue Komponente schreibt.

Verhalten vom Inplace Editor verändern

@ mkinzler:
Meinst Du das mit Farbe ändern, oder gibt es noch eine andere Methode um das Verhalten zu verändern?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 19. Jul 2008, 20:39
Lass mal DefaultDrawing auf True und setzte nur die Farbe
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 20. Jul 2008, 00:44
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:
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;
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: StringGrid Zelle wird erst nach verlassen der Zelle eing

  Alt 20. Jul 2008, 08:49
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:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:05 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