AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Im DBGrid auf Kommando bestimmte Felder färben
Thema durchsuchen
Ansicht
Themen-Optionen

Im DBGrid auf Kommando bestimmte Felder färben

Ein Thema von rascalpo · begonnen am 1. Jan 2006 · letzter Beitrag vom 4. Jan 2006
Antwort Antwort
rascalpo

Registriert seit: 7. Aug 2005
11 Beiträge
 
Delphi 5 Professional
 
#1

Im DBGrid auf Kommando bestimmte Felder färben

  Alt 1. Jan 2006, 23:52
Datenbank: Paradox • Version: 7 • Zugriff über: TTable
Also, ich hab ein DBGrid.

In dem Grid sind nur Nummern eingetragen, manchmal aber auch nichts.

Wenn man eine beliebige Zelle im DBGrid anklickt (markiert), sollen alle anderen Zellen mit gleichem Wert einen blauen/roten Rand kriegen.

Wie man eine Zelle mit einem bestimmten Wert einfärbt, weiss ich schon.

Wie kann ich das machen?
Ideen, Anregungen, Voschläge??? DANKE!
Des Pudels wahrer Kern...
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#2

Re: Im DBGrid auf Kommando bestimmte Felder färben

  Alt 2. Jan 2006, 08:11
hallo. Benutze die Suche (wurde mir auch immer gesagt)

http://www.delphipraxis.net/internal...848&highlight=

  Mit Zitat antworten Zitat
rascalpo

Registriert seit: 7. Aug 2005
11 Beiträge
 
Delphi 5 Professional
 
#3

Re: Im DBGrid auf Kommando bestimmte Felder färben

  Alt 2. Jan 2006, 11:59
Sehr schön. Ich finde mit der Suchfunktion nichts darüber.
Nun, mein Problem ist nicht wie ich die Farbe eines Feldes ändere.

DBGrid zeichnet wahrscheinlich nur wenns notwendig ist.
Wenn ich also mit der Pfeiltaste im Grid navigiere, dann ändert sich nichts.
Die Farben sollten sich in Echtzeit ändern.

Eine mögliche Lösung wäre, das Draw-Ereignis vom Grid auszulösen.
Ich weiss aber auch nicht wo ich das finden kann!!
Des Pudels wahrer Kern...
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#4

Re: Im DBGrid auf Kommando bestimmte Felder färben

  Alt 2. Jan 2006, 12:23
DataSoucre.onChange(Sender);
begin
Dbgrib.refresh;
end;
  Mit Zitat antworten Zitat
rascalpo

Registriert seit: 7. Aug 2005
11 Beiträge
 
Delphi 5 Professional
 
#5

Re: Im DBGrid auf Kommando bestimmte Felder färben

  Alt 4. Jan 2006, 03:12
Danke.
Nach einigem Rumprobieren funzt das prima(sogar ohne dem refresh).

Jetzt hab ich nur noch ein einziges Problem, eine Anweisung:
Delphi-Quellcode:
procedure TMainForm.DBAllGridsDrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if (Zeiten.FieldByName(IntToStr(DataCol)).AsVariant = DBZeitGrid.SelectedField.Value) then begin
  ... // ^da
  end;
end;
Damit will ich feststellen, ob der Inhalt von der gerade gezeichneten Zelle der gleiche ist wie der von der markierten Zelle...
Funktioniert aber nicht so wie ichs will...
Des Pudels wahrer Kern...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Im DBGrid auf Kommando bestimmte Felder färben

  Alt 4. Jan 2006, 06:57
Hai rascalpo,


Zitat von rascalpo:
Delphi-Quellcode:
  if (Zeiten.FieldByName(IntToStr(DataCol)).AsVariant = DBZeitGrid.SelectedField.Value) then begin
  ... // ^da
  end;
end;
Das kann so nicht gehen. Mit Delphi-Referenz durchsuchenFieldByName kannst Du über den Feldnamen auf den Inhalt zugreifen. Du übergibst aber nicht den Namen des Feldes sondern seine Nummer. Du müsstest also nicht mit FieldByName sondern direkt mit den Delphi-Referenz durchsuchenFields arbeiten.

Ungetestet könnte das dann so aussehen:
Delphi-Quellcode:
procedure TDemoForm.DBAllGridsDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: integer; Column: TColumn; State: TGridDrawState);
begin
  with (Sender as TDBGrid) do
  begin
    if (DataSource.DataSet.Fields[DataCol].AsVariant = SelectedField.Value) then
    begin
      //
    end;
  end;
end;
Oder aber, wenn Du den Feldnamen verwenden möchtest dann so:
Delphi-Quellcode:
procedure TDemoForm.DBAllGridsDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: integer; Column: TColumn; State: TGridDrawState);
begin
  with (Sender as TDBGrid) do
  begin
    if (DataSource.DataSet.FieldByName(Column.FieldName).AsVariant = SelectedField.Value) then
    begin
      //
    end;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
rascalpo

Registriert seit: 7. Aug 2005
11 Beiträge
 
Delphi 5 Professional
 
#7

Re: Im DBGrid auf Kommando bestimmte Felder färben

  Alt 4. Jan 2006, 15:58
Jetzt hab ichs umgeändert.

jetzt markiert er die ganze spalte, und alles drum herum, ausser dem in der Zeile, in der sich das markierte Feld befindet...
if (Zeiten.FieldByName(Column.FieldName).AsVariant = DBZeitGrid.SelectedField.Value) then begin funktioniert genausowenig....

ich will in OnDrawColumnCell prüfen, ob der Wert im gerade gezeichnetem Feld mit dem im gerade markiertem übereinstimmt.
was mach ich falsch???
Des Pudels wahrer Kern...
  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 22:40 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