Hallo,
Ich habe den Thread von vor paar Tagen verfolgt, wo es um den eigenen Fordesigner ging und um die Typinformation. Hab mir TSizeControl auch runtergeladen und experimentiert. Ich habe die folgende Änderung eingebaut, erhalte nun aber eine EInvalidOperation.
Warum?
Hier ist der geänderte Quelltext:
Delphi-Quellcode:
procedure TForm1.SizeCtrlTargetChange(Sender: TObject);
begin
if SizeCtrl.TargetCount = 0 then
StatusBar1.SimpleText := ''
else begin
with SizeCtrl.Targets[0] do StatusBar1.SimpleText :=
format(' %s - left:%d top:%d, width:%d height:%d',
[Name,left,top,width,height]);
//### DIESE ZEILE HABE ICH HINZUGEFÜGT ###
ActiveControl := TWinControl(SizeCtrl.Targets[0]);
//### HIER WIRD DIE EInvalidOperation ausgelöst ### Aber warum???
end;
end;
Targets[0] enthält nach meinem Verständnis die fokussierte Komponente.
Bei Klick auf Label 2 krieg ich einen EAbstractError
Bei Klich auf die unsichtbare ComboBox krieg ich die EInvalidOperation mit der Meldung, das unsichtbare Controls nicht den Fokus erhalten können.
Ohne die von mir eingefügte Zeile funktioniert alles einwandfrei.
Die Disabled Combobox soll ja gerade demonstrieren das auch solche disabled controls verschoben, vergrößert und verkleinert werden können.
Was läuft hier falsch. Wie komme ich an die aktuell selektierte Komponente?