Autor Beitrag
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: So 31.07.11 19:37 
Hi, wollte mal fragen, ob einer von euch weiss wie ich die Anzahl der eingefärbten Zellen ermitteln kann?

Hintergrund ist folgender:
Ich habe ein StringGrid und ein Suchfeld mit dem ich Teilstrings inerhalb des StringGrid suche.
Bei Übereinstimmung werden mir bereits die Ergebnisse mittels OnDrawCell richtig eingefärbt (gelb).
Einen Zähler hatte ich auch schon eingebaut. Aber OnDrawCell wird leider sehr oft ausgeführt, wie zB. vor und nach einem klick in das StringGrid...
Dabei schießt mein Zähler ziemlich weit in die Höhe. (simple Veranschaulichung: procedure OnDrawCell: if Suchfeld = Suchbegriff then Zahl := Zahl + 1)

habe mir gedacht, dass es vlt sowas in der art gibt:

StringGrid.Canvas.Brush.Color[clYellow].Count

wäre aber zu einfach^^
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 31.07.11 19:46 
Durch die Einfärbung sollte das schon richtig gehen. Wie sieht denn deine Prozedur mit nicht funktionierendem Zähler aus?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 31.07.11 20:27 
Dein Konzept ist falsch. Du versuchst die Färbung aus der visuellen Darstellung herauszulesen. Das geht aber nicht, da diese nirgends gespeichert wird.

Stattdessen musst du mit den Daten arbeiten.

Wenn es dir nicht so wichtig ist, ob du sauber arbeitest, kannst du auch einfach über die Strings in den Zellen gehen. On OnDrawCell ermittelst du ja ebenfalls die Farbe. Und genau die Unterscheidung kannst du dann auch zum Zählen nutzen.

Besser ist aber, wenn du direkt mit den Daten arbeitest, die hinter der Oberfläche stecken.
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Mo 01.08.11 17:06 
ok, danke für die antwort.

hab jetzt mein "zähler" in eine function gepackt, die nur mittels buttonclick aufgerufen wird.