2011-09-07 5 views
5

डेल्फी XE2 का उपयोग करके, आपके पास एक वीसीएल प्रोजेक्ट में कस्टम शैलियों (खाल) को एम्बेड करने का विकल्प है।
सबकुछ ठीक काम करता है। अब मेरे पास एक अलग डीएल में कुछ रूप हैं जो मैं गतिशील रूप से दिखाता हूं।
बेशक वे स्किन नहीं हैं। मैं इसे कैसे सुधार सकता हूं?मैं डीएलएल में रूपों के लिए डेल्फी XE2 खाल कैसे लागू कर सकता हूं?

मुझे लगता है कि मुझे किसी भी तरह टीवीसुअल स्टाइल को कुछ कॉल करना होगा, लेकिन कोई भाग्य नहीं।

मेजबान:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    l: THandle; 
    p: procedure (const h: THandle); stdcall; 
begin 
l:= LoadLibrary('project1.dll'); 
if l > 0 then 
begin 
     @p:= GetProcAddress(l,'ShowIt'); 
     p(Application.Handle); 
     FreeLibrary(l); 
    end; 
end; 

dll:

procedure ShowIt(const h: THandle);stdcall; 
var 
    form: TForm; 
    b: TButton; 
    han: THandle; 
begin 
    han:= Application.Handle; 
    Application.Handle:= h; 
    form :=Tform.Create(Application); 
    b:= TButton.Create(form); 
    b.Parent:= form; 
    b.Caption:= 'ytes'; 
    b.Left:= 2; 
    b.Top:= 2; 
    form.ShowModal; 
    form.Release; 
    Application.Handle:= han; 
end; 

exports ShowIt ; 
begin 
end. 

सुंदर मानक सामान। अब, डीएलएल फॉर्म को होस्ट की स्टाइल थीम का उपयोग करने के लिए वास्तव में क्या किया जाना चाहिए?

+0

आप XE2 साथ DLL पुन: संयोजित किया "सुविधा इस शैली के द्वारा समर्थित नहीं"? –

+0

यह एक पैकेज के बजाय एक डीएलएल है? –

+0

हां। लेकिन यह मूल विषय नहीं उठाता है। – Lobuno

उत्तर

14

आपके पास वीसीएल के दो अलग-अलग उदाहरण हैं। आपने शैली को StyleServices उदाहरण में निष्पादन योग्य के स्वामित्व में सेट किया है, लेकिन आपके डीएलएल को इसका कोई ज्ञान नहीं है। आप इसे हल कर सकते हैं:

  1. अपने डीएलएल में एक फ़ंक्शन में शैली सेटिंग्स को पास करना जो अन्य सेटिंग्स को StyleServices उदाहरण पर लागू करता है।
  2. पैकेज का उपयोग करें ताकि आपके पास केवल एक ही वीसीएल उदाहरण हो।
+0

@Downvoter इस उत्तर में क्या गलत है? –

+5

+1, उन ड्राइव-डाउनवॉटर निश्चित रूप से चूसते हैं। – Johan

+0

धन्यवाद। मैं त्वचा नाम को एक पचर के रूप में पास कर दूंगा (और विज़ुअल शैलियों को डीएल में संसाधनों को एम्बेड करें)। ऐसा लगता है कि ठीक तरह से काम करने के लिए लगता है। मैं संकुल के बारे में बहुत दयालु नहीं हूँ। – Lobuno

0

मैं इस के साथ परेशानी का एक बहुत कुछ था और यह था, क्योंकि मैं themes बजाय VCL.THEMES और VCL.STYLES उपयोग कर रहा था।

डेल्फी एक customeStyleException कह "शैली नहीं मिला" ऊपर फेंक दिया गया था या EcustomStyleException

संबंधित मुद्दे