2016-04-19 19 views
1

Ich bin nicht der am weitesten fortgeschrittene Programmierer, aber liebe die Arbeit mit Lazarus.Lazarus Pascal: Wie debugge ich ein Widget Set (mehrzeilige Beschriftung/Hinweis Problem)

Leider gibt es ab und zu ein Problem oder Bug (wie this one, bugreport), und ich für eine möchte helfen und sehen, ob ich beitragen kann, indem ich versuche, dies selbst zu debuggen und eine mögliche "Lösung zu bieten ".

Die Frage, die ich habe, ist: Wie debugge ich ein Widget-Set oder den Objektinspektor?

Kurzer Grund, warum: Wenn ich eine mehrzeilige Beschriftung oder einen Hinweis unter Windows oder Linux eingeben, funktioniert das gut. Unter MacOS X jedoch (Carbon) werden die Newline-Zeichen durch den Objektinspektor oder das Widget-Set entfernt und ich habe keine Ahnung, wo ich suchen muss, um das zu beheben.

Mit was konnte ich selbst herausfinden; Ich habe das Problem auf den Objektinspektor oder das Carbon-Widget beschränkt. Manuelles Bearbeiten eines Formulars (lfm) funktioniert, während der Laufzeit in Code-Arbeiten, und mehrzeilige capiosn oder Hinweise funktioniert gut unter Windows und Linux. Ich vermute also, dass das vom Objektinspektor verwendete Carbon-Widget-Set etwas falsch macht.

Jede Hilfe, um mich zu starten, wird sehr geschätzt.

Ich entschuldige mich, wenn diese Frage nicht angemessen oder nicht spezifisch genug ist - ich versuche nur Hilfe beim Debuggen dieses Problems zu finden.

Antwort

1

Der IDE Objektinspektor ist eigentlich eine erweiterte Version von TTIPropertyGrid. Wenn Sie es debuggen wollen, können Sie auf dem Paket arbeiten und es in einem einfachen Projekt testen:

enter image description here

Dann einen einfachen Handler fügen Sie den Inspektor auf das Projekt Form zu testen:

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    TIPropertyGrid1.TIObject := self; 
end; 

Wenn Sie eine Quelle im Paket RunTimeTypeInfoControls ändern, werden die Änderungen nicht in der IDE angezeigt, sondern zur Laufzeit in Ihrem Beispielprojekt (das Paket wird automatisch neu kompiliert).

Es ist auch wahrscheinlich, dass Sie auf das PropEdits Gerät arbeiten müssen werden, wenn der Bug aus dem Eigenschaftseditor selbst kommt (vielleicht TStringsPropertyEditor).

Um jede mühsame Manipulation zu vermeiden, können Sie Ihre Änderungen an einer Kopie der entsprechenden Editor-Klasse testen und im Initialisierungsabschnitt Ihres Testprojekts als Ersatz für die Standardversion buded, Version registrieren.

+0

Awesome - das machte das Debuggen erheblich einfacher! Danke Abstrakter Typ! Leider konnte ich den Grund nicht finden, warum der Newline-Charakter entfernt wird, aber ich beschränkte mich auf einen Aufruf von "RefreshValueEdit" (in: lazarus/components/ieintf/ObjectInspector.pp). Leider passiert dort nichts "Seltsames" was ich sehen oder debuggen kann. – Hanzaplastique

+0

Da deine Antwort _extremely_ hilfreich war, werde ich es als die Antwort auf meine Frage markieren ... Im Lazarus Forum kann ein Thread zu diesem Thema gefunden werden (http://forum.lazarus.freepascal.org/index) .php/topic, 32335.0.html). – Hanzaplastique