Arsip: men-disable semua dbedit/tedit dgn sedikit coding??

more 19 years ago
imunk
dear,
sebetulnya aku rada2 minder&malu nih nanya terus di forum ini ditambah lagi permasalahan2 yg aku angkat kesannya sepele dan kurang berbobot (batu kaleee..) dibanding yg laen.
tapi aku sbg junior programming kadang merasa bgg hrs nanya kemana lagi, jadi ya aku berani2 in deh nanya disini. :)
mas2 senior tolong bantuin dong.....
aku lagi nyari cara utk men-disable semua komponen dbedit/tedit yg ada diform dg sedikit coding, selama ini aku pake cara kuno gini, jika ada 10 dbedit/tedit maka aku tulis perintah (dbedit/edit).enabled:=false sebanyak 10 kali, kalo lebih dari 10?? bisa dibayangin berapa banyak lagi barisnya.....
kalo bisa sih pengennya yang simple gitu tapi hasilnya sama....:)
jika ada tips n triknya utk itu saya sangat berterima kasih sekali sebelumnya.
regards.[/b]

more 19 years ago
DelphiExpert
:wink: Hehe ngga' perlu malu atuh, tapi kalo malu ngga' papa, kirim aja angpau buat kita2 wakakak :mrgreen:
Pada dasarnya semua component & control dapat diakses pada parent component-nya.
Misal kamu naruh sebuah TEdit di sebuah TForm ato TPanel (Parent control pasti turunan dari TWinControl), maka untuk ngakses ke TEdit cukup (misal parentnya adalah Form1)
AnEdit:= Form1.Contros[x] as TEdit;
Ok simplenya kaya' gini:
procedure EnDisControls(AParent: TWinControl; EnableCtrl: Boolean);
var I: Integer;
CacheCtrl: TControl; // control dlm array di cache biar cepet
begin
// cek AParent dah diset blum
if not Assigned(AParent) then Exit;
for I:= 0 to Pred(AParent.ControlCount) do begin
CacheCtrl:= AParent.Controls[I];
if CacheCtrl is TDBEdit then
TDBEdit(CacheCtrl).Enabled:= EnableCtrl
else if CacheCtrl is TClassApaAjaYgMauEluAkses then
...
end;
end;
Done, procedure diatas cuman mencari control di AParent, utk mendeteksi sebuah control adalah control yang kita maksud pake "IS", setelah itu utk ngakses property/method-nya pakai Type Cast. Misal if ACtrl is TButton then TButton(ACtrl).Visible:= False;
Nah, kalo controls yang kamu taruh ada di sub TWinControl pas (misal kamu taruh diatas TPanel) maka kalo ente set AParentClass-nya ke Form1 maka semua control yang kamu taruh di Panel1 harus kamu akses secara eksplisit ato modifikasi procedure diatas utk bisa rekursif ngakses ke sub TWinControl.
Ok cukup jelas kan...
Regards - D.E
more 19 years ago
masdi2t
yup. betul seperti penjelasan mas DelphiExpert.
oya sekalian saya mau tanya. klu mekanisme buffering dengan variabel array tersebut di lewati dan diganti dengan operator as kira2 cepet mana ya.
sebagai gambarannya saya modif procedure mas DelphiExpert ya
procedure EnDisControls(AParent: TWinControl; EnableCtrl: Boolean);
var I: Integer;
begin
// cek AParent dah diset blum
if not Assigned(AParent) then Exit;
for I:= 0 to AParent.ControlCount-1 do
begin
if (AParent.ControlCount[I] is TDBEdit) then
(AParent.ControlCount[I] as TDBEdit).Enabled:= EnableCtrl
else
if (AParent.ControlCount[I] is TClassApaAjaYgMauEluAkses) then
...
end;
end;
memang pada script diatas ada pemanggilan (AParent.ControlCount[I] is TDBEdit) sebangyak 2x, metode pemanggilan langsung dgn dibuffer di variable kira2 bagus dan cepet yang mana ya?
maturnuwun
:) [/b]
more 19 years ago
DelphiExpert
Secara teory lebih cepet di pass ke variable dulu mas. Soalnya ngga' perlu search lagi di list utk kedua-kalinya (misal control permasalahan sperti diatas) AParent.Controls[X]. Mending di buffer dulu trus pake TypeCast utk aksesnya.
Misal bayangin aja kalo ada 100 control disebuah parentclass, utk ke dua kalinya Delphi ya harus cari sebanyak 100 kali (kalo saya liat menggunakan sequensial search)
Type cast cepet koq, soalnya tuh pointer class dah ada semacam heardernya untuk mengacu ke blok memory tertentu dari sebuah class.
Regards - D.E

more 19 years ago
imunk
makasih banyak mas......
tapi maaf mas saya rada2 telmi nih dan masih bgg dengan yang ini:
Nah, kalo controls yang kamu taruh ada di sub TWinControl pas (misal kamu taruh diatas TPanel) maka kalo ente set AParentClass-nya ke Form1 maka semua control yang kamu taruh di Panel1 harus kamu akses secara eksplisit ato modifikasi procedure diatas utk bisa rekursif ngakses ke sub TWinControlbisa di 'awam' kan gak mas bahasanya..??? kalo bisa dgn codingnya sekalian biar otakku rada encer...... :):)

more 19 years ago
ZeAL
Gini... Buat Panel di form... Taruh TEdit di DALAM panel yang udah dibuat.... Masukin misalnya 5 TEdit di panel tersebut..
Nah, untuk mematikan Semua TEdit itu gak perlu satu-satu.. cukup matiin "parent" tempat ia diletakkan.. (misalnya Panel1.enabled := false; ) gituuu...

more 19 years ago
wongdee2t
maksudnya mas D.E tuh jika kasus ketika posisi komponen kamu (dalam hal ini TEdit dan TDBEdit) tidak nempel di Form secara langsung. Melainkan di atas sebuat Panel misalnya. Jadi simpel bahasanya seperti ini di form kita tempel panel trus diatas panel baru kita tempel TEdit dan TDBEdit kita.
Nah kasus seperti ini ada 2 cara (ktnya mas D.E), yaitu:
- secara eksplisit
- modif procedure untuk bisa rekursif
untuk yg eksplisit, maksudnya km harus manggil procedure diatas 2 kali dengan paramater untuk TWinControl yg berbeda. contoh:
EnDisControls(Form1, false); //untuk mendisable yg melekat di form1
EnDisControls(Panel1, false); //untuk mendisable yg melekat di panel1
untuk yg model rekursif kita modif dikit procedure yg dari mas D.E. Dan manggilnya cukup satu kali ajah:
EnDisControls(Form1, false); //untuk mendisable yg melekat di form1
nih coba tak editkan yg model rekursif.
procedure TForm1.EnDisControls(AParent: TWinControl; EnableCtrl: boolean);
var
i: integer;
cacheCtrl: TControl;
begin
if not assigned(AParent) then Exit;
for i:=0 to AParent.ControlCount-1 do
begin
cacheCtrl := AParent.Controls[i];
if (cacheCtrl is TEdit) then
TEdit(cacheCtrl).enabled := EnableCtrl
else if (cacheCtrl is TDBEdit) then
TDBEdit(cacheCtrl).Enabled := EnableCtrl
....
....
else if (cacheCtrl is TPanel) then
EnDisControls(TPanel(cacheCtrl), EnableCtrl);
end;
end;
smoga bisa membantu dengan bahasa dari orang awam juga.. :D
(CMIIW)
Nah, untuk mematikan Semua TEdit itu gak perlu satu-satu.. cukup matiin "parent" tempat ia diletakkan.. (misalnya Panel1.enabled := false; ) gituuu...itu jg bisa dilakukan, kalo menurutku itu cara ekstrimnya. hehehee :D tp ada perbedaan deh kaya'nya kalo kita matikan dari parentnya. yaitu komponen TEditnya secara visual tidak menunjukkan perubahan kalo dia udah disable (biasanya perubahan warna font di dalam TEdit-nya), tp sebenernya dia memang udah disable sih.. :p

more 19 years ago
imunk
thanks buat mas2 yg dah baek ati ngejelasin ke aku....:)
tuh coding dah running well...(senangnya aku).
but......
aku bgg, sejak dulu aku bikin coding sendiri tuk nge-create form kayak gini codingnya:
procedure createform(tfrm:TComponentClass;frm:tform;nmform:string;
showmod:byte);
begin
if assigned(application.FindComponent(nmform)) then abort;
Application.CreateForm(Tfrm, frm);
//var showmod utk showmodal jika bernilai 1
if showmod=1 then frm.ShowModal
else frm.Show;
end;
saat ku pake tuh procedure eh malah procedure Disable/Enabled nya kagak ngaruh, apanya yg salah ya??
tapi saat ku pake perintah:
Application.CreateForm(Tform1, form1);
form1.Showmodal;
procedure disable/enable kedetek, binun......
apa ada yg salah ya dgn procedure buatanku..??
please help me and thanks before.more ...
- Pages:
- 1
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- update data dbchart
by k_p in Bedah Kasus more 15 years ago - SDAC vs ADO
by EkoIndri in MsSQL more 18 years ago - [ASK] Algoritma untuk Perpustakaan
by lord_kimm in Tip n Trik Pemrograman more 18 years ago - PSQL untuk menangani BLOB field
by i_hasibuan in FireBird more 16 years ago - Mohon Bantuannya....
by Jokuy in OOT more 17 years ago - mengirim variabel delphi ke variabel fastreport script
by delphi_pitu in Reporting more 13 years ago - begin-end
by kaito_kid in Tip n Trik Pemrograman more 15 years ago - extract icon
by bboyz in Tip n Trik Pemrograman more 17 years ago - Delphi dan fuzzytech
by vicksinhaler in Enginering more 17 years ago - perintah sql untuk operasi pengurangan 2 tabel
by ricky_seldjatem in Tip n Trik Pemrograman more 16 years ago