Einzelnen Beitrag anzeigen

Photoner

Registriert seit: 6. Dez 2012
Ort: Nürnberg
103 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

AW: TStringGrid und PopUp in Firemonkey

  Alt 4. Jul 2013, 09:10
Hallo,

vielleicht ist dieser Link etwas für Dich.

Der Link ist hilfreich!

Der springende Punkt ist, das OnChange Ereignis weiterzureichen und ein paar Feinheiten zu beachten. Ich habs wie folgt zum Laufen gebracht:

Diese Zeilen im FormCreate o.ä.:
Delphi-Quellcode:
      for I := 0 to StringGrid1.ColumnCount-1 do begin
        StringGrid1.ColumnByIndex(i).ApplyImmediately := false;
Verhindert das sofortige ändern des Grids wenn Eingaben erfolgen. Hat den Vorteil, dass das OnChange beim verlassen des Edits getriggert wird (wird gebraucht).
Auch noch in FormCreate eine Prozedur:

Delphi-Quellcode:
procedure TTestForm.UpdateStringGrid;
var
CellCtrl : TStyledControl;
Col,Row : Integer;
begin
  for col := 0 to StringGrid1.ColumnCount-1 do begin
    for row := 0 to StringGrid1.RowCount-1 do begin
      CellCtrl := StringGrid1.ColumnByIndex(col).CellControlByRow(row);
      if ( CellCtrl <> nil ) and ( CellCtrl is TTextCell ) then begin
        TTextCell( CellCtrl ).OnApplyStyleLookup := GridCellApplyStyleLookup;
        TTextCell( CellCtrl ).UpdateStyle;
        TTextCell( CellCtrl ).OnChange := CellChange;
      end;
    end;
  end;
end;
Damit kann man (auch zur Laufzeit) den Style der Zellen ändern. Hier ist aber wichtig das OnChange zu fangen.

Delphi-Quellcode:
procedure TTestForm.CellChange(Sender : TObject);
begin
  TColumn(TFMXObject(Sender).Parent).EndUpdate;
end;
Was genau bei EndUpdate von TColumn alles geschieht kann vielleicht jemand mit mehr Programmiererfahrung erzählen. Ich kann bloß sagen, dass auch Änderungen im Edit einer Zelle hiermit übernommen werden.
Kopieren, Ausschneiden, etc. wird damit auch übernommen.

Falls dieser Workaround Schwierigkeiten an anderer Stelle verursacht werde ich das hier erwähnen. Ansonsten gelöst.

Nachtrag:
Der Workaround funktioniert doch nicht. Keine Ahnung warum das einmal geklappt hat und jetzt nicht mehr...

Danke für euer Feedback!
Chris

Geändert von Photoner ( 4. Jul 2013 um 09:44 Uhr) Grund: Funktioniert doch nicht...
  Mit Zitat antworten Zitat