पर TFrame वंश के अतिरिक्त गुण दिखा रहा है डेल्फी ऑब्जेक्ट इंस्पेक्टर TFrame वंशजों के डिज़ाइन द्वारा अतिरिक्त गुण नहीं दिखाता है। लोग एक ज्ञात चाल का उपयोग करने का सुझाव देते हैं जिसका प्रयोग ऑब्जेक्ट इंस्पेक्टर पर टीएफओएम वंश के गुणों को दिखाने के लिए किया जाता है। चाल है: डिजाइन समय पैकेज के माध्यम से डेल्फी आईडीई के लिए TForm वंशजों के लिए कस्टम मॉड्यूल दर्ज की तरह:ऑब्जेक्ट इंस्पेक्टर
RegisterCustomModule(TMyFrame, TCustomModule);
वस्तु निरीक्षक इस तरह से साथ TFrame वंशज के उदाहरण के अतिरिक्त गुण दिखा सकते हैं, लेकिन यह इसके फ्रेम व्यवहार खो देता है यह है, जबकि एक रूप में एम्बेडेड। पुन: डिजाइन नहीं किया जा सकता है, इसके उप-संयोजकों के लिए घटनाओं को लागू करना संभव नहीं है और यह बाल नियंत्रण स्वीकार करता है (जो यह नहीं है)। लेकिन यह सामान्य रूप से अपने स्वयं के डिजाइन क्षेत्र में व्यवहार करता है।
ऐसा लगता है, डेल्फी आईडीई द्वारा विशेष रूप से केवल TFrame के लिए प्रदान किए गए व्यवहार। वे problaly सामान्य सुविधाओं की तरह नहीं हैं।
क्या फ्रेम व्यवहार खोए बिना इसे पूरा करने का कोई और तरीका है?
मैं डेल्फी 2007
@Tondrej उपयोग कर रहा हूँ,
पहले से समस्या के लिए टिप्पणी, धन्यवाद पढ़ें।
frameunit.dfm:
object MyFrame: TMyFrame
Left = 0
Top = 0
Width = 303
Height = 172
TabOrder = 0
object Edit1: TEdit
Left = 66
Top = 60
Width = 151
Height = 21
TabOrder = 0
Text = 'Edit1'
end
end
unit frameunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TBaseFrame = Class(TFrame)
protected
Fstr: string;
procedure Setstr(const Value: string);virtual;
published
Property str:string read Fstr write Setstr;
End;
TMyFrame = class(TBaseFrame)
Edit1: TEdit;
private
// This won't be called in designtime. But i need this to be called in designtime
Procedure Setstr(const Value: string);override;
end;
implementation
{$R *.dfm}
{ TBaseFrame }
procedure TBaseFrame.Setstr(const Value: string);
begin
Fstr := Value;
end;
{ TMyFrame }
procedure TMyFrame.Setstr(const Value: string);
begin
inherited;
Edit1.Text := Fstr;
// Sadly this code won't work and Edit1 won't be updated in designtime.
end;
end.
unit RegisterUnit;
interface
procedure Register;
implementation
uses
Windows, DesignIntf, frameunit;
procedure Register;
var
delphivclide: THandle;
TFrameModule: TCustomModuleClass;
begin
delphivclide := GetModuleHandle('delphivclide100.bpl');
if delphivclide <> 0 then
begin
TFrameModule := GetProcAddress(delphivclide, '@[email protected]@');
if Assigned(TFrameModule) then
begin
RegisterCustomModule(frameunit.TBaseFrame, TFrameModule);
// Just registering that won't cause Tmyframe to loose its frame behaviours
// but additional properties won't work well.
//RegisterCustomModule(frameunit.TMyFrame, TFrameModule);
// That would cause Tmyframe to lose its frame behaviours
// But additional properties would work well.
end;
end;
end;
end.
अच्छा, मैं कुछ समय के लिए इस्तेमाल किया फ्रेम havn't, क्योंकि मुझे लगता है कि वे परेशानी के लायक नहीं हैं। लेकिन मैं यह कोशिश करने जा रहा हूँ। –