Würde es nicht auch reichen, zur Laufzeit im OnEnter Event Tabstop entsprechend zu setzen und TabOrder zu lassen. Dabei könnte ein Event für alle Edits gesetzt werden und anhand der Taborder des gerade akuellen Edits bei den anderen TabStop gesetzt werden.
hier mal ein Beispiel:
Delphi-Quellcode:
procedure TForm1.e1Enter(Sender: TObject);
function EditColumn(AEdit: TEdit): Integer;
begin
case AEdit.TabOrder of
0, 1, 7:
Result := 0;
2, 3, 8:
Result := 1;
4, 5, 9:
Result := 2;
else
Result := -1;
end;
end;
var
I, Col: Integer;
WC: TControl;
E: TEdit;
begin
if Sender is TEdit then
begin
Col := EditColumn(TEdit(Sender));
for I := 0 to TEdit(Sender).Parent.ControlCount - 1 do
begin
WC := TEdit(Sender).Parent.Controls[I];
if WC is TEdit then
begin
E := TEdit(WC);
E.TabStop := (E = E6) or (EditColumn(E) = Col);
if E.TabStop then
E.Color := clInfoBk
else
E.ParentColor := True;
end;
end;
end;
end;
Zur Verdeutlichung habe ich auch die Farbe gesetzt. Das ist aber nur gemacht, um im Beispiel zu sehen, ob es auch klappt.