Arsip: Set value di dll
more 16 years ago
EkoIndri
Kebetulan saya dah buat file dll.
Didalam file dll itu saya berikan fungsi dengan output form.
Catatan:
Didalam form saya tambahkan object memo dengan isi beberapa kalimat.
Nah waktu file dll itu saya akses dari aplikasi lain, fungsi tersebut saya pastikan utk dihitung jumlah object yang ada didalam form itu.
Ternyata jumlah sesuai.
Kemudian saya lanjutkan dengan mengecek dengan menggunakan showmessage untuk menampilkan informasi text yang ada di object memo, ternyata datanya benar.
karena saya bisa akses tuh object memo, terus saya lanjutkan dengan mengubah isi text dari object memo.
Ternyata usaha yang saya lakukan adalah sia-sia...
bagi temen2 yang tahu solusi untuk mengubah data text dalam memo itu mohon dishare donk ilmunya...
thanxs sebelumnya...
more 16 years ago
DelphiExpert
bagaimana cara anda "membaca" text dalam memo? <getter> ; seperti itulah harusnya anda bisa lakukan set isi memo <setter>.
well... akan lebih menjelaskan apabila code yg dibuat anda post juga...
more 16 years ago
EkoIndri
intinya kan showmessage(memo1.text); itu kan bisa dilakukan di form biasa
tapi kenapa itu tidak bisa saya lakukan terhadap memo yang ada didalam dll
more 16 years ago
ImanD
@EkoIndri
Bener sekali yg di bilang @DE, klo bisa getter kenapa setter ga bisa? mungkin parameternya yg di tangkap dll blom di setter ke dalam object memo tersebut.
more 16 years ago
mat_koder
cobain nge-editnya pake Memo.Lines.Add('..................');
atau kalo ngga bisa juga cara, silakan cobain dibawah ini - pasti bisa ( sdh di coba dgn D7 di PC saya )
Yg di-export dari DLL adalah pointer ke Form yg baru di-create.
Cuma emang dgn DLL , RTTI-nya ngga bisa kebaca.
Kode begini ngga pernah True:
if DllForm.Controls[i] is TMemo
dedangkan dgn begini OK:
if DllForm.Controls[i].ClassName = 'TMemo'
// di Dll (dpr file)
exports
SetDLLApplication, ResetDLLApplication,
CreateNewForm;
// di unit DLL
function CreateNewForm:TForm;
procedure SetDLLApplication(A: TApplication);
procedure ResetDLLApplication;
var
OldHandle: TApplication;
implementation
uses
unitFrmYgDiinginkan;
procedure SetDLLApplication(A: TApplication);
begin
OldHandle := Application;
Application := A;
end;
procedure ResetDLLApplication;
begin
Application := OldHandle;
end;
function CreateNewForm:TForm;
begin
Result := TfrmYgDiinginkan.Create(Application);
end;
// di Aplikasi utama:
type
TShowDllFormdProc = function:TForm;
TResetDLLApplicationProc = procedure;
TSetDLLApplicationProc = procedure(A: TApplication);
function OpenMyDll: Boolean;
procedure CloseMyDll;
procedure SetDLLApplication;
procedure ResetDLLApplication;
var
frmMain: TfrmMain;
GDLLHandle: THandle;
DllMemo: Tmemo;
implementation
{$R *.DFM}
function OpenMyDll: Boolean;
begin
if (GDLLHandle = 0) then
begin
GDLLHandle := LoadLibrary('MdiDll');
if (GDLLHandle = 0) then Result := False else Result := True;
end
else Result := True;
if (Result) then SetDLLApplication;
end;
procedure CloseMyDll;
begin
if (GDLLHandle <> 0) then
begin
ResetDLLApplication;
FreeLibrary(GDLLHandle);
GDLLHandle := 0;
end;
end;
procedure SetDLLApplication;
var
SetDLLApplication: TSetDLLApplicationProc;
begin
SetDLLApplication := GetProcAddress(GDLLHandle, 'SetDLLApplication');
SetDLLApplication(Application);
end;
procedure ResetDLLApplication;
var
ResetDLLApplication: TResetDLLApplicationProc;
begin
ResetDLLApplication := GetProcAddress(GDLLHandle, 'ResetDLLApplication');
ResetDLLApplication;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
DllMemo := nil;
if (not OpenMyDLL) then
begin
ShowMessage('Unable to open DLL.');
end;
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
DllMemo:=nil;
CloseMyDLL;
end;
procedure TfrmMain.btnNewDllFormClick(Sender: TObject);
var
ShowDllFormProc: TShowDllFormdProc;
DllForm:TForm;
i: integer;
begin
ShowDllFormProc := GetProcAddress(GDLLHandle, 'CreateNewForm');
DllForm:=ShowDllFormProc;
for i:=0 to DllForm.ControlCount-1 do
if DllForm.Controls[i].ClassName='TMemo' then
DllMemo := TMemo(DllForm.Controls[i]);
DllForm.Show;
end;
procedure TfrmMain.btnTambahBarisClick(Sender: TObject);
begin
if (DllMemo <> nil) then
DllMemo.Lines.Add('Tambah baris baru');
end;
more 16 years ago
EkoIndri
tul mas..
kemarin aku coba pakai ini:
Cuma emang dgn DLL , RTTI-nya ngga bisa kebaca.
Kode begini ngga pernah True:
if DllForm.Controls[i] is TMemo
tak coba deh ntar caranya diatas
makasih sebelumnya...
more 16 years ago
DelphiExpert
Cuma emang dgn DLL , RTTI-nya ngga bisa kebaca. Kode begini ngga pernah True: if DllForm.Controls[i] is TMemotahukah anda kenapa code tersebut tidak pernah menghasilkan TRUE? :D
more 16 years ago
EkoIndri
kemarin sebenarnya saya mirip dengan itu
if Components[indek].ClassType = TMemo then
@DE
ada penjelasan kah?
more 16 years ago
DelphiExpert
jawaban simplenya karena beda module dng demikian beda virtual-method table, beda class registry table... dll...
if Components[indek].ClassType = TMemo then --> saya rasa ini juga tidak bisa digunakan (jika dieksekusi di Host app / DLL form lain)... karena masing2 module punya Class Table sendiri... jadi pengecekan object A hanya relevan jika dilakukan dlm module dimana object A tersebut dibuat...
if DllForm.Controls[i].ClassName = 'TMemo' --> seperti @mat_koder bilang; itu bisa anda gunakan...
more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 3 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 4 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 11 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 11 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 11 years ago
Random Topic
- Bagaimana menggunakan Multi Monitor
by octa1479 in Hal umum tentang Pascal Indonesia more 16 years ago - Lazarus Win32 GUI App + Exceptions...
by _lmz in OOT more 17 years ago - Contoh aplikasi dari Procedure Rupiah ke Terbilang?
by gormet in Tip n Trik Pemrograman more 16 years ago - Komponen Stringgrid/Listview multi select
by supermuam in Tip n Trik Pemrograman more 15 years ago - [ASK] Cara agar DATA.GDB bisa di-share lewat jaringan
by anyrony in FireBird more 15 years ago - Tanya Apakah...
by johnizzy in Hal umum tentang Pascal Indonesia more 15 years ago - Code delphi untuk interface ke led display
by sp1d3r_n3tz in Enginering more 16 years ago - konversi data
by lagisedih in Network, Files, I/O & System more 15 years ago - Cara Penulisan SELECT FORMAT(Uang,2) FROM tablebank ,Sukses
by faridx in MsSQL more 16 years ago - Error waktu bikin Compact MDB
by shindo in Hal umum tentang Pascal Indonesia more 17 years ago