AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid Zeile einfärben

Ein Thema von strom · begonnen am 28. Dez 2014 · letzter Beitrag vom 13. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#1

AW: StringGrid Zeile einfärben

  Alt 28. Dez 2014, 14:11
Vielen Dank für die erfolgreiche Hilfe hier im Forum!

Wenn ich jetzt noch ein Icon aus einer ImageList hinzufügen möchte,
muss ich was beachten?

Dieses hier funktioniert leider nicht!

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
  var
  X, Y: Integer;
begin
 StringGrid1.Canvas.Font.Color := clblack;

  if StringGrid1.Cells[3, ARow] = '1'
  then
    begin
      StringGrid1.Canvas.Brush.Color := clYellow;
      ImageList1.Draw(StringGrid1.Canvas, X, Y, 0, true); // Was ist hier falsch?
    end
  else if StringGrid1.Cells[3, ARow] = '2'
  then
    StringGrid1.Canvas.Brush.Color := clgray;
  if gdSelected in State
  then
    StringGrid1.Canvas.Brush.Color := clred;
  StringGrid1.Canvas.FillRect( Rect );
  StringGrid1.Canvas.TextRect( Rect, Rect.Left, Rect.Top, StringGrid1.Cells[ACol, ARow] );
end;
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: StringGrid Zeile einfärben

  Alt 28. Dez 2014, 14:15
Wie sind denn die Werte von X und Y? Du deklarierst zwar die Variablen, weißt diesen aber keine Werte zu. Somit sind die undefiniert und können irgendwo in einem negativen Bereich liegen. Auch hier hast du die Compiler Meldung nicht beachtet. Der schreibt nämlich genau das hin.

Weise also den beiden Variablen einen Wert zu und schon müsste das funktionieren.

Hier vielleicht noch ein Tipp. Delphi-Referenz durchsuchenMouse.CursorPos, Delphi-Referenz durchsuchenScreenToClient oder Delphi-Referenz durchsuchenClientToScreen könnten hier fürs erste helfen. Du könntest als X und Y Werte die passenden Rect.Top und Rect.Left Werte übernehmen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.380 Beiträge
 
Delphi 12 Athens
 
#3

AW: StringGrid Zeile einfärben

  Alt 28. Dez 2014, 15:07
// Was ist hier falsch?
Wie sind denn die Werte von X und Y? Du deklarierst zwar die Variablen, weißt diesen aber keine Werte zu. ...
Ich kann mich nur noch einmal wiederholen und hoffen der TE hört endlich mal auf das, was ihm jemand sagt und beachtet es auch.
Zitat:
was ist hier falsch am Code?
DU hast vergessen auf deinen Compiler zu hören und somit die beiden Fehler nicht beachtet.
  • c ist nicht initialisiert
  • c wird nicht verwendet
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
strom

Registriert seit: 23. Aug 2008
Ort: Keine Ergebnisse gefunden
290 Beiträge
 
#4

AW: StringGrid Zeile einfärben

  Alt 28. Dez 2014, 16:21
hallo,

dieses funktioniert leider auch nicht!

Delphi-Quellcode:
var
  X, Y: Integer;
begin
  if StringGrid1.Cells[3, ARow] = '1'
   then
    begin
      StringGrid1.Canvas.Brush.Color := clYellow;
    X := Rect.Left;
    Y := Rect.Top;
    ImageList1.Draw(StringGrid1.Canvas, X, Y, 0, true); { 0 = erstes Image in ImageList }
  end;
end;
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: StringGrid Zeile einfärben

  Alt 28. Dez 2014, 17:13
Funktioniert nicht ...

... ist keine Fehlermeldung, sondern eine Verallgemeinerung. Wenn du konkrete Hilfe willst, solltest du auch konkret fragen und konkrete Hinweise liefern.
Danke.

Und wenn du in eine bestimmte Zelle zeichnen willst, ist es eigentlich kontraproduktiv, auf den Canvas der zugrundeliegenden Komponente zu zeichnen. Wenn du dir einmal die Mühe machen würdest, die Suchfunktion des Forums zu verwenden, hättest du mit Sicherheit schon etliche funktionierende Codeschnipsel gefunden, die dir genau zeigen, wie man in bestimmte Zellen eines Stringgrids zeichnet.
Angehängte Grafiken
Dateityp: jpg GrafikInStringGrid.jpg (91,0 KB, 19x aufgerufen)

Geändert von Perlsau (28. Dez 2014 um 17:20 Uhr)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#6

AW: StringGrid Zeile einfärben

  Alt 29. Dez 2014, 10:49
Gehn wir mal die Schritte in der jetzt ausgeführten Reihenfolge durch:

- eine Farbe wird ausgewählt
- ein Icon wird in die Zelle gezeichnet
- das ganze Rechteck der Zelle wird mit der ausgewählen Farbe übermalt
- der Text wird in die Zelle gezeichnet

Und jetzt denken wir ein bischen drüber nach...
  Mit Zitat antworten Zitat
Frau Müller

Registriert seit: 12. Jan 2015
10 Beiträge
 
#7

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 00:33
Kann mir (Anfängerin ) bitte jemand helfen?

Ich habe ein StringGrid und 2x ComboBox. Ich würde gerne folgendes tun:

Ist ComboBox1.ItemIndex=1 gewählt dann blende mir die Zeile 1-3 vom StringGrid1 aus.
Ist ComboBox2.ItemIndex=3 gewählt dann blende mir die Spalte 2-4 vom StringGrid1 aus.

Kann mir bitte jemand einen Quellcode geben?
  Mit Zitat antworten Zitat
Frau Müller

Registriert seit: 12. Jan 2015
10 Beiträge
 
#8

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 00:36
noch besser wäre es die zeilen bleiben sichtbar können aber nicht angeklickt werden
  Mit Zitat antworten Zitat
Frau Müller

Registriert seit: 12. Jan 2015
10 Beiträge
 
#9

StringGrid Zellen nicht anklicken

  Alt 13. Jan 2015, 00:51
......................
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.380 Beiträge
 
Delphi 12 Athens
 
#10

AW: StringGrid Zeile einfärben

  Alt 13. Jan 2015, 01:15
Über OnSelectCell (TStringGrid) kann man erkennen was selektiert wird/wurde und könnte da die Selektion umschreiben, wenn nicht gewoll.

Ausblenden geht nicht, da TStringGrid keinen (Zeilen)Filter besitzt.
Beim TDBGrid geht das, über die Filterung des DataSets, welches auch ohne DB genutzt werden kann. (z.B. TClientDataSet)


Alternativ macht man es "richtig".
StringGrid nur zur Datenanzeige (und als Editor), aber die Datenhaltung liegt wo anders ... dann zeigt/läd man nur das ins Grid, was angezeigt werden soll.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Jan 2015 um 01:17 Uhr)
  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:54 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