AGB  ·  Datenschutz  ·  Impressum  







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

Nieder mit dem Stringgrid-Fokus

Ein Thema von JPSelter · begonnen am 14. Feb 2007 · letzter Beitrag vom 19. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#1

Nieder mit dem Stringgrid-Fokus

  Alt 14. Feb 2007, 11:09
Ich habe hier ein Stringgrid, wo ich gerne den Fokus weg hätte. Wenn im Stringgrid keine Einträge sind, ist ja alles ok, aber sobald ich Inhalt einfüge färbt er mir die Zelle 1/1 so ein, dass die Schrift nicht lesbar ist. Klicke ich dann auf das Stringgrid, ist die Schrift wieder lesbar. Die Hintergrundfarbe ändert sich dabei nicht. Ich habe da teils gelb und teils hellrot drin, mit weißer Schrift sieht man da nicht mehr viel, sie sollte aber schwarz sein. Liegt es überhaupt am Fokus?

http://www.ditonovia.de/misc/delphi.jpg
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Nieder mit dem Stringgrid-Fokus

  Alt 14. Feb 2007, 11:32
Ich kann das Problem bei mir nicht reproduzieren...
Warum verwendest du dort überhaupt solche... ulkigen rosa Färbchen????
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Nieder mit dem Stringgrid-Fokus

  Alt 14. Feb 2007, 11:47
Wenn jeder erst seine Programme komplett erklären müsste, würde das Forum vor Infos überschwappen. Daher redet man meistens nur über das Kernproblem und nicht über den Zweck solcher Farben. Das hat alles schon seinen Sinn...

Ich habe noch diesen Code hier:

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if ARow>0 then
  begin
    case StringGridColorArray[ARow] of
      0: StringGrid1.Canvas.Brush.Color := $00DDE2FB;
      1: StringGrid1.Canvas.Brush.Color := $00E0FFFF;
      2: StringGrid1.Canvas.Brush.Color := $00C6FBDA;
    else
      StringGrid1.Canvas.Brush.Color := clWindow;
    end;
    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, StringGrid1.Cells[ACol, ARow]);
  end;
end;
Vielleicht ist da etwas nicht ganz richtig.
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Nieder mit dem Stringgrid-Fokus

  Alt 14. Feb 2007, 12:00
Weist du was ich vermute???

Wenn man etwas markiert, ist es gewöhnlich "blau"!
Und damit man den Text dann noch erkennt, wird der Text gewöhnlich "weiß"!

Das kannst du z.B. an den Symbol-Unterschriften auf dem Desktop erkennen.

Wenn du also die Markierungsfarbe änderst, dann bleibt aber die markierterText-Farbe noch weiß!!!

Das kann man ja auch im Darstellungs-Dialog deines Desktops einsehen!!!!

Sprich: Entweder du änderst dein rosa zu rot, oder du versuchst die markierteText-Farbe zu ändern!!!
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Nieder mit dem Stringgrid-Fokus

  Alt 14. Feb 2007, 12:05
Was mir grad noch einfällt:

Ist es vielleicht möglich, dass du deinem stringgrid immer gleich wieder den Focus gibst, wenn es ihn z.B. nach einem ButtonClick verloren hat????
stringgrid1.SetFocus;
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Nieder mit dem Stringgrid-Fokus

  Alt 14. Feb 2007, 12:11
Danke für den Tip, es wird mit Sicherheit am (nicht vorhandenem) Markierungsblau liegen. Also muss ich die Markierungsschriftfarbe ändern. Um Deine Neugier zu bändigen: Es muss hell-rot (nicht rosa ) sein, da rot zu stark ist und zu aggressiv wirkt. Die Software soll im Geschäftsumfeld eingesetzt werden. Da arbeitet man mit "seichten" Farben Wenn da 10 Zeilen grell-rot sind, sieht das nicht schön aus.
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Nieder mit dem Stringgrid-Fokus

  Alt 27. Feb 2007, 15:29
So, da bin ich wieder. Ich musste dieses Thema erstmal ruhen lassen und mich um andere Dinge kümmern. Leider bekomme ich diese dumme Eigenschaft, wie oben auf den Screens gezeigt, nicht weg. Grund dafür ist einfach, dass das StringGrid immer oben-links-Zelle markiert. Das passiert auch mit jedem Minimalbeispiel, wenn man die Farben hier jetzt mal aussen vor lassen will. Also, die Frage besteht weiterhin: Wie bekomme ich die markierte Zelle da oben weg? Es ist ja anscheinend IMMER eine Zelle markiert.
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Nieder mit dem Stringgrid-Fokus

  Alt 27. Feb 2007, 15:37
Musst du unbedingt ein StringGrid nehmen? Alternativ würde sich der VirtualStringTree anbieten. Dort bist du in vielen Dingen freier und der markiert nicht grundsätzlich eine Zeile (was manchmal auch ein Problem sein kann )
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#9

Re: Nieder mit dem Stringgrid-Fokus

  Alt 27. Feb 2007, 16:48
Hallo,

soll die Markierung nie angezeigt werden? Oder nur wenn das StringGrid nicht den Focus hat, denn dann muss man das noch extra betrachten.

Bzgl. der Schriftfarbe hat TonyR Dir schon den richtigen Tipp gegeben.

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if ARow>0 then
  begin
    case StringGridColorArray[ARow] of
      0: StringGrid1.Canvas.Brush.Color := $00DDE2FB;
      1: StringGrid1.Canvas.Brush.Color := $00E0FFFF;
      2: StringGrid1.Canvas.Brush.Color := $00C6FBDA;
    else
      StringGrid1.Canvas.Brush.Color := clWindow;
    end;
    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.Font.Color := StringGrid1.Font.Color;//<--- wg. der "negativ"-Schriftfarbe
    StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, StringGrid1.Cells[ACol, ARow]);
    //soll der Focusrahmen auch verschwinden, dann
    if gdFocused in State then
      StringGrid1.Canvas.DrawFocusRect(Rect);//<--- entfernt/übermalt per xor
  end;
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Nieder mit dem Stringgrid-Fokus

  Alt 27. Feb 2007, 17:12
Grundsätzlich sollte die Textfarbe immer einen möglichst grossen Kontrast zur Hintergrundfarbe haben.
Du änderst zwar die Farbe des Hintergrunds, aber nicht die Farbe des Textes (Vordergrund).
Mit folgendem Code bleibt die Textfarbe im Kontrast zum Hintergrund
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if ARow>0 then
  begin
    case StringGridColorArray[ARow] of
      0: StringGrid1.Canvas.Brush.Color := $00DDE2FB;
      1: StringGrid1.Canvas.Brush.Color := $00E0FFFF;
      2: StringGrid1.Canvas.Brush.Color := $00C6FBDA;
    else
      StringGrid1.Canvas.Brush.Color := clWindow;
    end;
    StringGrid1.Font.Color := BlackWhiteContrastColor(StringGrid1.Canvas.Brush.Color); // <====
    StringGrid1.Canvas.FillRect(Rect);
    StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, StringGrid1.Cells[ACol, ARow]);
  end;
end;
Code-Library: Kontrastfarbe ermitteln
Andreas
  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 15:04 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