Lebih dari satu komponen untuk editor IVTEditLink di VirtualTreeView

Apakah ada cara untuk menambahkan lebih dari satu komponen ke editor IVTEditLink VirtualTreeView?


person Knobik    schedule 07.01.2012    source sumber
comment
Saya tidak yakin apa sebenarnya yang Anda tanyakan di sini. Jika Anda ingin membuat editor IVTEditLink dari, saya tidak tahu TPanel dan dua kotak TEdit, maka itu mungkin; satu-satunya hal yang harus Anda pikirkan adalah mengimplementasikan antarmuka IVTEditLink untuk panel itu dan menangani juga peristiwa untuk kotak edit tersebut - jika Anda mau, misalnya. untuk membatalkan pengeditan ketika Anda OnExit kotak edit, maka Anda harus CancelEditNode dalam acara itu.   -  person TLama    schedule 07.01.2012
comment
Atau jika Anda bertanya apakah Anda dapat mengimplementasikan lebih dari satu antarmuka IVTEditLink, mis. TComboBox untuk satu kolom dan TDateTimePicker untuk kolom lainnya, lalu cukup tuliskan kolom di OnCreateEditor dan buat editor yang ingin Anda gunakan ;)   -  person TLama    schedule 07.01.2012
comment
Terimakasih atas balasan anda. jika memungkinkan, saya akan menandai postingan Anda sebagai jawaban yang bagus.   -  person Knobik    schedule 08.01.2012


Jawaban (2)


Saya akan menggunakan formulir mandiri sebagai wadah editor dan meninggalkan konsep IVTEditLink untuk tujuan ini karena:

  • jika Anda menggunakan mis. TPanel sebagai wadah komponen editor maka Anda harus mempertimbangkan untuk memilih Parent yang tepat dari TPanel tersebut; editor dengan banyak bidang mungkin tumpang tindih dengan batas persegi panjang pohon virtual Anda atau bahkan batas formulir Anda
  • jauh lebih mudah untuk mengimplementasikan acara OnDeactivate ke formulir daripada ke komponen TPanel
  • Anda dapat meninggalkan konsep IVTEditLink sama sekali karena konsep tersebut kehilangan maknanya di sini; IVTEditLink dirancang untuk editor node dan kolom tertentu, bukan untuk keseluruhan node; Anda cukup membuka editor formulir saat acara OnEditing tiba, atau saat acara klik dua kali, dll.

Tetapi jika saya tidak meyakinkan Anda untuk meninggalkan konsep IVTEditLink untuk pengeditan node lebih dari satu kolom maka Anda dapat memeriksa this example untuk implementasi formulir sebagai editor untuk antarmuka IVTEditLink.

person TLama    schedule 08.01.2012
comment
Contoh aplikasi yang sangat bagus. Terima kasih. - person James L.; 13.08.2017

Cukup buat editor khusus Anda di OnCreateEditor acara. Karena acara ini menyediakan parameter Column, Anda dapat membuat editor berbeda untuk kolom berbeda. Misalnya.:

procedure TForm1.OnCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; out EditLink: IVTEditLink);
begin
  case Column of
    0: EditLink := TColorEditLink.Create;
    1: EditLink := TFontEditLink.Create;
  //etc..
  end;
end;
person Linas    schedule 08.01.2012
comment
OP menginginkan komentar saya yang pertama; untuk membuat satu editor dari lebih dari satu komponen, tidak menggunakan editor yang berbeda untuk kolom yang berbeda. - person TLama; 08.01.2012
comment
Pertanyaannya sangat tidak jelas. OP perlu mengedit pertanyaannya agar lebih jelas apa yang ingin dia capai. - person Linas; 08.01.2012
comment
Setuju, makanya saya minta penjelasannya di komentar saya ;) - person TLama; 08.01.2012