Apakah ada cara untuk menambahkan lebih dari satu komponen ke editor IVTEditLink VirtualTreeView?
Lebih dari satu komponen untuk editor IVTEditLink di VirtualTreeView
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 memilihParent
yang tepat dariTPanel
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 komponenTPanel
- 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 acaraOnEditing
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
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
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
Pertanyaannya sangat tidak jelas. OP perlu mengedit pertanyaannya agar lebih jelas apa yang ingin dia capai.
- person Linas; 08.01.2012
Setuju, makanya saya minta penjelasannya di komentar saya ;)
- person TLama; 08.01.2012
IVTEditLink
dari, saya tidak tahuTPanel
dan dua kotakTEdit
, maka itu mungkin; satu-satunya hal yang harus Anda pikirkan adalah mengimplementasikan antarmukaIVTEditLink
untuk panel itu dan menangani juga peristiwa untuk kotak edit tersebut - jika Anda mau, misalnya. untuk membatalkan pengeditan ketika AndaOnExit
kotak edit, maka Anda harusCancelEditNode
dalam acara itu. - person TLama   schedule 07.01.2012IVTEditLink
, mis.TComboBox
untuk satu kolom danTDateTimePicker
untuk kolom lainnya, lalu cukup tuliskan kolom diOnCreateEditor
dan buat editor yang ingin Anda gunakan ;) - person TLama   schedule 07.01.2012