Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#1

Form + Frame = ActiveContol = nil

  Alt 2. Nov 2016, 16:22
Delphi-Version: 10 Seattle
Hallöle...

Ich habe meinen Frames einen Container (TForm) wegen dem "ENTER zum nächsten Control" verpaßt. Nur das Perform(WM_NEXTDLGCTL, 0, 0) wird nur auf das erste Control losgelassen. Wieso ist das ActiveControl des ContainerForms immer nil?
Was fehlt?

PS: TabStop ist kontrolliert und Active
Delphi-Quellcode:
class function TdAV_FormFactory.CreateFormContainer(ChildFrame: TfrBase): TfoContainer; // entspricht TForm + diverse Events
begin
  Result := TfoContainer.Create(nil, ChildFrame);
  Result.Align := alClient;
  Result.BorderStyle := bsNone;
  ChildFrame.Parent := Result; // eingebettet :-)
end;
Delphi-Quellcode:
procedure TfoContainer.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); // wird bei jedem Tastendruck, auch aus dem Frame, ausgeführt
var
  aMsg: TMsg;
begin
  if (Key = VK_RETURN) and (not (Self.ActiveControl is TAdvMemo)) then // hier ist ActiveControl = nil *grübel* - das sollte das letzte Control sein?
  begin
    FChildFrame.ParentFormKeyDown(Self, Key);
    Perform(WM_NEXTDLGCTL, 0, 0); // wird zwar ausgeführt aber läuft ins Leere immer auf das erste Control des Frames
  end;
  if Key = VK_ESCAPE then
  begin
    Self.Close;
  end;
end;
Crosspost DT: https://forum.delphi-treff.de/index....tiveContol-nil

Geändert von haentschman ( 2. Nov 2016 um 16:39 Uhr)
  Mit Zitat antworten Zitat