Arsip: ngilangin popup menu pada Tedit dengan Windows API

 
user image
more 13 years ago

mbahdien

Eh buat teman-temanku delhier ada yang tahu nggak cara ngilangin pop up menu di edit box(itu tuh yang isinya edit,cut,copy,paste,undo) pakai windows API.
user image
more 13 years ago

DelphiExpert

setahu daku ngga' ada cara (method) utk mem-by-pass popup menu di TEdit menggunakan Windows API dikarenakan behavior TCustomEdit itu sendiri dalam meng-handle context-menu (popup) :mrgreen: ada 2 cara utk ngilangin popup menu: 1. by pass WM_CONTEXTMENU dng cara mengalokasikan message hook-proc menggunakan AllocateHWnd(WndProc) 2. cara paling simple; handle event OnContextPopup milik TEdit, kemudian anggap aja memunculkan contextmenu dikau lakukan sendiri / custom (Handled:= True)

procedure TForm.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
  Handled:= True;
end;
user image
more 13 years ago

mbahdien

wah kalo pakai method itu cuma buat satu edit box, nah kalo buat banyak edit box dalam satu form bisa pegel tangannya buat ngetik. Sebenarnya sih bisa di akalin dengan mensetting properties popupmenu pada Tedit di isi dengan Tpopupmenu yang tidak di isi, but itu kan kalo satu form, tetapi kalo banyak form or unit kita harus selalu uses ke unit tersebut dong.
user image
more 13 years ago

DelphiExpert

walah... bego' lu (kidding) :mrgreen: ngga' perlu ngetik banyak-banyak! cukup 1 (satu) procedure / event method tsb. diatas. caranya: 1. ambil sample salah satu TEdit dalam form dikau, enter event OnContextPopup, ketikan seperti diatas (Handled:= True) 2. di object inspector - events; cari event OnContextPopup (selected control masih pada TEdit sample tadi), copy value-nya 3. select/pilih semua TEdit yg ada di form dikau, masukkan/ketikkan/paste value tadi di event OnContextPopup 4. hidangan siap di santap... atau secara program, handle event OnCreate milik TForm, telusuri semua controls yg ada didalamnya, deteksi:

  for x:= 0 to ControlCount - 1 do
    if Controls[x] is TEdit then TEdit(Controls[x]).OnContextPopup:= Edit1ContextPopup;
perulangan diatas cuman ilustrasi, pada akhirnya dikau harus melakukan iterasi di setiap TWinControl descendants yg ada di form dikau (macam TPanel dsj.), each TWinControl descendant bisa mempunya child-control, dan bisa aja ada TEdit yg dikau taruh diatas TPanel... naah... sebagai bahan latihan, buat iterasi tsb. efektif! telusuri setiap ditemui TWinControl applykan contoh perulangan diatas, gunakan recursive... :mrgreen: atau... kalau tidak mau ada coding sama sekali setelahnya, baiknya dikau gunakan descendant TEdit aja, buat turunannya utk mem-bypass contextmenu dng meng-override method2 yg berhubungan dengan itu. registerkan di component-palettes, dan selalu gunakan komponen baru tersebut sebagai pengganti TEdit standard :mrgreen:
user image
more 13 years ago

ivan

Ikut ngerame in ah.. Kalo gak mau capek ya udah blok aja fungsi klik kanannya resikonya semua popup gak bakal muncul :mrgreen: Kalo mau, cobain aja pasang Komponen TApplicationEvents pada Event OnMessage nya masukin script:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = WM_RButtonDown then Handled:= true;
end;
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com