ich habe ein Stringgrid und dort im SelectEditor ein TEdit:
Code: Alles auswählen
procedure TfAttrEdit.sgAttrEditSelectEditor(Sender: TObject; aCol,
aRow: Integer; var Editor: TWinControl);
begin
if (sgAttrEdit.Row > 0) AND (aCol < 12) then
begin
Editor := edAttrName;
sgAttrEdit.Editor:=edAttrName;
Editor.BoundsRect := sgAttrEdit.CellRect(aCol,aRow);
edAttrName.Caption := sgAttrEdit.Cells[aCol,aRow];
Editor.SetFocus;
end;
end;
Dazu habe ich das TEdit mit dem Name "edAttrName" auf meinem Formular platziert.
Der Editor wir mit jeder neu eingefügten Zeile sofort in aRow und aCol= 4 aktiviert.
Ich habe jetzt ein Problem, wenn das StringGrid leer ist (RowCount = 1, FixedRow = 1).
Wenn ich die erste Zeile im StringGrid einfüge (aRow = 1) wird das TEdit nicht in in der Zelle aCol und aRow platziert . Das TEdit wird zwar angezeigt und funktioniert auch, allerdings dort, wo ich auf dem Formular während der Entwicklung platziert habe.
Ab der zweiten neuen Zeile (RowCount > 2) wird der Editor dann korrekt im Grid platziert.
Ich hab mir eine Breakpoint auf "if (sgAttrEdit.Row > 0) AND (aCol < 12) then" gesetzt. Wird die erste Zeile ins Grid eingefügt, wird die Procedure "SelectEditor" gar nicht aufgerufen.
Jemand einen Tip, wie ich das hin bekomme?