KleptR 0 Melden Teilen Geschrieben 28. Februar 2008 (bearbeitet) Hat jemand ahnnng von C++? wen ja kann mir jemand sagen wie ich in einer DBGrid komponente den hintergrund einer einzelnen zelle einfärbe? brauch das sehr dringend Bearbeitet 28. Februar 2008 von Klept-O-Maniac Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sven 134 Melden Teilen Geschrieben 28. Februar 2008 Also, wenn das so, wie in Delphi ist, dann mußt Du im OnDraw-Ereignis des Grids dies machen. Wenn der Zähler genau auf dieser Zelle (Spalte, Zeile) steht, wird der Hintergrund in der Farbe gefärbt. Dazu muß vermutlich (zumindest in Delphi muß man es so machen) die gesamte Draw-Funktion des Rechteckes überschrieben werden. Schau mal, ob Du über die Google-Suche da was findest. Ich hab mal ein Beispiel von mir in Delphi (6-2007) mit reingehangen: procedure TfoLaufwegsuche.GridDrawCellGeneral(Sender: TObject; ACol, ARow: integer; Rect: TRect; State: TGridDrawState); var sText: string; DrawFormat: longint; const DrawConst = DT_NOPREFIX or DT_NOCLIP or DT_VCENTER; begin with TJvStringGrid(Sender).Canvas do begin sText := TJvStringGrid(Sender).Cells[ACol, ARow]; // Zeichenroutine für Selektion Font.Style := []; Brush.Color := clWindow; // nicht selektierte Zelle Font.Color := clBlack; if ARow = 0 then Brush.Color := FarbeKopfZeile// Kopfzeile else begin // alle folgenden Zeilen // Zeichenroutine für Selektion if ARow = TJvStringGrid(Sender).Row then Brush.Color := FarbeZeile else Brush.Color := clWindow; if (state = [gdSelected]) then Brush.Color := FarbeZeile; // Zelle selektiert if TJvStringGrid(Sender).Name = StrAbsGrid.Name then begin if (TJvStringGrid(Sender).Tag > 0) and (ARow = TJvStringGrid(Sender).Row) and (ACol = TJvStringGrid(Sender).Tag) then begin Font.Color := clRed; Font.Style := [fsBold]; end; // Ausblenden der Zeilen > 1, wenn nur ein Datumswert für alle benutzt wird if (ACol in [cColBetrDat_StrAbs, cColStandVDat_StrAbs]) and (DatumGleich) and (ARow > 1) then sText := ''; end; end; if ARow = Pred(TJvStringGrid(Sender).FixedRows) then DrawFormat := DT_SINGLELINE or DT_CENTER// Kopfzeilen mit zentriertem Text else DrawFormat := DT_WORDBREAK or DT_LEFT; if Pos('XSGTTAB', TJvStringGrid(Sender).Name) > 0 then if (ARow > 1) and (ACol in [cColkm_Lw, cColRL100_Lw, cColName_Lw, cColVon_Lw, cColBis_Lw]) then if TJvStringGrid(Sender).Cells[ACol, pred(ARow)] = TJvStringGrid( Sender).Cells[ACol, ARow] then DrawFormat := DT_SINGLELINE + DT_CENTER// if trim(TJvStringGrid(Sender).Cells[ACol, pred(ARow)]) <> '' then sText := '-"-'; // Ausblenden der doppelten Spalten ; if TJvStringGrid(Sender).Name = FehlerGrid.Name then begin Font.Color := clRed; Font.Style := [fsBold]; end; FillRect(Rect); // Hintergrund füllen Rect.Left := Rect.Left + 1; DrawText(Handle, PChar(sText), length(sText), Rect, DrawConst + DrawFormat or DT_CALCRECT); // Ausrechen des Rechteckes DrawText(Handle, PChar(sText), length(sText), Rect, DrawConst + DrawFormat); // Jetzt zeichnen. if Rect.Bottom - Rect.Top > TJvStringGrid(Sender).RowHeights[ARow] then TJvStringGrid(Sender).RowHeights[ARow] := Rect.Bottom - Rect.Top; end; end; [/codebox] Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KleptR 0 Autor Melden Teilen Geschrieben 28. Februar 2008 hm danke aber leider kann ich mit delphi wenig anfangen weil ich davon 0 plan hab .. aber paar ähnlichkeiten sind da schon .... hab jetz auf jedenfall raus das bei mir der zeiger auf die selektierte zelle gefehlt hat Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sven 134 Melden Teilen Geschrieben 29. Februar 2008 Ja, mir ging es auch nur ums Prinzip, weil es ja fast alles irgendwelche API-Funktionen sind, die die Zelle färben, und den Text ausgeben. Ich habe an den Zuegs auch lange gefeilt und 100%-ig funktioniert es auch nicht immer, insbesondere, wenn das Grid so eingestellt ist, daß man die komplette Zeile selektieren kann. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KleptR 0 Autor Melden Teilen Geschrieben 29. Februar 2008 jo ok habs jetz trotzdem thx Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...