AGB  ·  Datenschutz  ·  Impressum  







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

Fontfarbe in TStringgrid ändern ;-)

Ein Thema von Roadrunner.1 · begonnen am 3. Mai 2017 · letzter Beitrag vom 5. Mai 2017
Antwort Antwort
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#1

AW: Fontfarbe in TStringgrid ändern ;-)

  Alt 4. Mai 2017, 08:19
Wie Uwe schon gesagt hat, malt der Inplace-Editor den Text neu, wenn das Grid den Focus verliert. Dabei kannst du die Textfarbe nicht beeinflussen. Das OnDrawCell des Grid ist hier nicht mehr zuständig.

Im OnExit den Text neu zu malen ist auch keine Option, denn das kommt zu früh. Der Inplace-Editor malt später nochmal drüber.

Man muss also eine Möglichkeit finden, den Text verzögert zu malen, nachdem der Inplace-Editor fertig ist.

Deshalb meine Lösung mit einem Timer:

Nimm einem Timer, setze Enabled auf false und Interval auf 10.

Im OnExit des Grid setzt du nur Timer.enabled:=true; Der Timer-Event sieht dann so aus:
Delphi-Quellcode:
procedure TForm1.TimerTimer(Sender: TObject);
var Rect: TRect;
begin
  if (StringGrid1.Col=4) and (StringGrid1.Row>0) then begin
    Rect:=StringGrid1.CellRect(StringGrid1.Col, StringGrid1.Row);
    StringGrid1.Canvas.Font.Color:=clred;
    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.Textout(Rect.Left+2,Rect.Top+2, StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]);
    Timer.Enabled:=false;
  end;
end;
Nicht besonders schön, funktioniert aber.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fontfarbe in TStringgrid ändern ;-)

  Alt 4. Mai 2017, 08:22
Man muss also eine Möglichkeit finden, den Text verzögert zu malen, nachdem der Inplace-Editor fertig ist.
... oder man nimmt das goAlwaysShowEditor weg.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Roadrunner.1

Registriert seit: 3. Mai 2009
20 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Fontfarbe in TStringgrid ändern ;-)

  Alt 5. Mai 2017, 08:41
Hallo Zusammen,

erst einmal danke für die inspirierenden Antworten. Also über einen Timer zeitversetzt das Stringgrid zu
übermahlen ist schon ein toller Hack, aber mit Sicherheit nicht im Sinne des Erfinders.

Danke an Uwe, das mit dem "DefaultDrawing" kannte ich so nicht, und verstand ich auch nicht anhand der Online Hilfe so.
Nach Abschalten eben dieses, und alles selber Zeichnen, funktioniert das jetzt fast schon so wie ich es mir vorstellte.
Insbesondere funktioniert jetzt auch das Umschalten von "goAlwaysShowEditor" bei Enter/Exit vom Stringgrid jetzt vernünftig.

Eine Sache hätte ich aber noch, vielleicht gibt es dafür auch eine einfach Lösung. Wenn im Stringgrid der Fokus auf einer "roten"
Zellen steht, und man nun mit TAB die Komponenten durchgeht und wieder zum Stringgrid zurück kommt, dann wird die Zelle schwarz
dargestellt. OK das dürfte wieder der InplaceEditor sein der durch einschalten von "goAlwaysShowEditor" wieder die Zelle malt.
(DrawCell wird genau für diese Zelle nämlich auch nicht aufgerufen).
Aber entgegen dem Navigieren innerhalb des Stringgrids ist der Inhalt der Zelle nicht ausgewählt. Kann man den Auswählen?
Ich hatte es schon mit "InplaceEditor.SelectAll;" probiert (in OnEnter und auch onDrawCell), aber da passiert nichts.

Also als Ergebnis das was man im 3. Bild (EinmalHochRunter) sieht wenn das Stringgrid den Fokus bekommt.
Angehängte Grafiken
Dateityp: jpg Kein Fokus.JPG (9,9 KB, 2x aufgerufen)
Dateityp: jpg Fokus bekommenm.JPG (9,9 KB, 2x aufgerufen)
Dateityp: jpg EinmalHochRunter.JPG (10,9 KB, 2x aufgerufen)
Christian Drenkard
--
mfg.
Christian Drenkard

Geändert von Roadrunner.1 ( 5. Mai 2017 um 08:43 Uhr)
  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 06:35 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