AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Zugriff auf Zelle in TStringGrid (FMX) XE6
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Zelle in TStringGrid (FMX) XE6

Ein Thema von eddie11 · begonnen am 24. Apr 2014 · letzter Beitrag vom 25. Apr 2014
Antwort Antwort
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#1

Zugriff auf Zelle in TStringGrid (FMX) XE6

  Alt 24. Apr 2014, 12:00
Hi allerseits,

bis einschließlich XE5 konnte ich mit CellControlByRow auf eine einzelne Zelle einer TStringColumn zugreifen.
Das habe ich getan, um z.B. die Textfarbe einer Zelle zu ändern.

Delphi-Quellcode:
type
  TColumnAccess = class( TColumn )
  end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Col, Row: Integer;
  CellCtrl: TStyledControl;
begin
  for Col := 0 to StringGrid1.ColumnCount - 1 do begin
    for Row := 0 to StringGrid1.RowCount - 1 do begin
      CellCtrl := TColumnAccess( StringGrid1.Columns[ Col ] ).CellControlByRow( Row );
      if ( CellCtrl <> nil ) and ( CellCtrl is TTextCell ) then begin
        TTextCell( CellCtrl ).StyledSettings := [];
        TTextCell( CellCtrl ).FontColor := claBlueViolet;
        TTextCell( CellCtrl ).Font.Family := 'Times New Roman';
        TTextCell( CellCtrl ).Font.Style := [ TFontStyle.fsBold ];
        TTextCell( CellCtrl ).Font.Size := 14;
      end;
    end;
  end;
end;
Das funzt jetzt mit XE6 nicht mehr. Anscheinend gibt CellControlByRow nicht mehr die gewünschte Zelle zurück.
Hat jemend von Euch ein ähnliches Problem und evtl. schon eine Lösung gefunden?
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.478 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zugriff auf Zelle in TStringGrid (FMX) XE6

  Alt 24. Apr 2014, 18:08
Die Funktion hat sich (leider) geändert, ist quasi totgelegt, weil ein Wert nur zurückgeliefert wird, wenn die Zelle in der selektierten Zeile liegt:

Delphi-Quellcode:
function TColumn.CellControlByRow(Row: Integer): TStyledControl;
begin
  if (Grid <> nil) and Grid.IsSelected(Row) then
    Result := CellControl
  else
    Result := nil;
end;
Alte Version:
Delphi-Quellcode:
function TColumn.CellControlByRow(Row: Integer): TStyledControl;
var
  i: Integer;
  LGrid : TCustomGrid;
begin
  LGrid := Grid;
  Result := nil;
  if not Assigned(LGrid) then
    Exit;

  for i := 0 to High(FCellControls) do
    if (FCellControls[i].Visible) and
      (Trunc(StringToPoint(FCellControls[i].TagString).Y) = Row) then
    begin
      Result := FCellControls[i];
      Exit;
    end;
end;
Ich werde mal nach einem Ersatz suchen...

Übrigens ist das nicht die einzige Änderung an den Grids. Bei StringGrids sind mir nichts dir nichts die Onpaint und Onpainting-Events für die TStringColumns weggefallen.

Ich hatte mich glaube ich zu Recht dafür entschieden, mit dem TMS-Grid zu arbeiten, solche Brüche habe ich dort Gott sei Dank noch nicht erlebt.

Geändert von Harry Stahl (24. Apr 2014 um 18:16 Uhr)
  Mit Zitat antworten Zitat
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#3

AW: Zugriff auf Zelle in TStringGrid (FMX) XE6

  Alt 25. Apr 2014, 10:52
Zitat:
Übrigens ist das nicht die einzige Änderung an den Grids. Bei StringGrids sind mir nichts dir nichts die Onpaint und Onpainting-Events für die TStringColumns weggefallen.
Das habe ich - zu meinem Leidwesen - auch schon festgestellt . Ferner gibts auch DoSelChanged im Stringgrid nicht mehr, das hatte ich überschrieben.

Ich glaube ich werde mich auch mal mit TMS näher beschäftigen.
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.478 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zugriff auf Zelle in TStringGrid (FMX) XE6

  Alt 25. Apr 2014, 17:44
Ja, Verwendung des TMS-Grids ist wohl derzeit fast alternativlos.

Denn wenn Du neben anderen Komponenten (TEdits, TListbox, usw) auch ein Grid oder StringGrid mit einer StringColumn darin auf die Form legst, bewirkt dies, dass die TabStop-Funktion völlig außer Kraft gesetzt wird. Also per Druck auf die Tabtaste kannst Du Dich dann gar nicht mehr in der Form von Control zu Control bewegen. Leider ein weiterer fieser Punkt auf der Liste der Peinlichkeiten.

Ich hab das inzwischen bei meiner Quality-Central-Meldung ergänzt. M.E. muss der Punkt unbedingt in das nächste Bug-Fix rein, dass m.E. schon nächste Woche kommen müsste, denn die bisherig festgestellten Fehler (u.a. fehlendes oder fehlerhaftes Autosize bei TLabel) sind wirklich weder schön noch akzeptabel.
  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 01:46 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