merhabalar, sorum dll ile ilgilidir.
hazırladığımız dll içerisindeki bir procedure, bu dll yi kullanacak olan formdaki bir kontrole değer aktarabilirmiyiz.
yada bir özelliğini değiştirebilirmiyiz? mesela... form1.edit1.text:='Deneme'; gibisinden....
DLL ve Kontroller
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Merhaba,
Görsel kontrolle Handle numaraları ile ulaşabilirsiniz, iki uygulamada size ait olduğu için bu hiçte zor olmayacaktır, DLL den çalıştırdığınız procedure e değiştirmek istediğiniz controlün handle numarasınıda parametre geçerek bu işlemi yapabilirisiniz, umarım yol gösterici olur.
İyi çalışmalar.
Görsel kontrolle Handle numaraları ile ulaşabilirsiniz, iki uygulamada size ait olduğu için bu hiçte zor olmayacaktır, DLL den çalıştırdığınız procedure e değiştirmek istediğiniz controlün handle numarasınıda parametre geçerek bu işlemi yapabilirisiniz, umarım yol gösterici olur.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Çok fazla birşey yapmana gerek yok.
DLL'nin uses'ına ilke önce ShareMem ekle,
Sonra formunu kullanacağın unitleride ekle.
Bu şekilde DLL içinde bu formlar tanınır olacaktır.
Fakat DLL exe'ne bağlandığında, formlarının adreslerini DLL'ye aktarman gerekli.
Bu exe olacak projenin kodu.
Bu DLL'Nin
DLL'nin uses'ına ilke önce ShareMem ekle,
Sonra formunu kullanacağın unitleride ekle.
Bu şekilde DLL içinde bu formlar tanınır olacaktır.
Fakat DLL exe'ne bağlandığında, formlarının adreslerini DLL'ye aktarman gerekli.
Bu exe olacak projenin kodu.
Kod: Tümünü seç
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure AssignForm(form1:Tform1);stdcall;
external 'Project2.dll' name 'AssignForm';
procedure x;stdcall;
external 'Project2.dll' name 'x';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
assignform(self);
x;
end;
Kod: Tümünü seç
uses
ShareMem, SysUtils, unit1,
Classes;
{$R *.res}
var
myform:Tform1;
procedure AssignForm(form1:Tform1);stdcall;
begin
myform := form1;
end;
procedure x;stdcall;
begin
myform.Caption := 'Dll'den merhaba';
end;
Exports
Assignform,
x;
begin
end.
-
- Üye
- Mesajlar: 25
- Kayıt: 27 Nis 2005 02:09
yalnız birşey yapamazsın : bir uygulamadaki bir kontrolü başka bir uygulamaya taşıyamazsın (mesela ilk projendeki form1 pencerendeki Panel1.parent:=Dll.Form1) bu işlemi yapamazsın çünkü her proje kendine has bir rakam tutuyor aklında ve bu gibi işlemlerde bu rakamlar sayesinde engelleniyor. başka bir yolu varsa bilmiyorum