2013-02-12 13 views
8

Nach dieser Frage auf ich kürzlich geschrieben: Can a Component Editor be executed on multiple components?Wie aktualisiert man den Delphi Objektinspektor?

Ich habe eine ComponentEditor für eine neue Komponente erstellt, die bei Ausführung eines TOpenDialog zeigt eine Konfigurationsdatei auszuwählen. Wenn eine Datei geladen wird, lese ich die Daten und kopiere die Werte in die aufrufende Komponente (das ist Component, da dies ein TComponentEditor ist).

Es gibt überhaupt keine Probleme, außer dass der Objektinspektor nicht aktualisiert wird, um die neu geänderten Werte wiederzugeben - er wird nur aktualisiert, wenn im Designer auf die Komponente geklickt wird.

Es scheint nicht so ein großes Problem, aber ich brauche den Objektinspektor, um sich irgendwie zu aktualisieren, so dass ich sehen kann, dass sich die Eigenschaften erfolgreich geändert haben (ohne den Fokus zurück zum Steuerelement zu schalten).

Gibt es eine Möglichkeit, Delphi wissen zu lassen, dass es den Objektinspektor aktualisieren/aktualisieren soll? Ich

Antwort

7

Nachdem die Komponente modifiziert je nach Bedarf, Ihre Komponenten-Editor benötigt die IDesigner.Modified() Methode aufrufen, zB:

procedure TMyComponentEditor.ExecuteVerb(Index: Integer); 
var 
    Dlg: TOpenDialog; 
begin 
    ... 
    Dlg := TOpenDialog.Create(nil); 
    try 
    ... 
    if Dlg.Execute then 
    begin 
     ... 
     Designer.Modified; 
    end; 
    finally 
    Dlg.Free; 
    end; 
    ... 
end; 
+0

perfekt Dank, werde ich die 'Designer' Schlüsselwort erinnern. –

+5

Es ist kein Schlüsselwort, es ist eine Eigenschaft von 'TComponentEditor'. –

Verwandte Themen