2012-05-29 9 views
5

मैं TListView के साथ खेल रहा हूं और यह काम करने की कोशिश कर रहा हूं कि वर्कअरेस कैसे काम करते हैं, और वे किसके लिए उपयोगी हैं। ऐसा लगता है कि बहुत कम दस्तावेज (बड़ा आश्चर्य) लगता है।क्या कार्य करें डेल्फी में ListViews पर काम करते हैं?

क्या किसी ने सफलतापूर्वक वर्कअरास का उपयोग किया है? यदि ऐसा है तो क्या?

मैं निम्नलिखित जैसी चीजों के प्रयास कर रहे हैं:

wa := ListView1.WorkAreas.Add; 
    wa.DisplayName := 'Work Area 0'; 
    wa.Rect.Width := ListView1.Width div 2; 
    wa.Rect.Height := ListView1.Height; 

जो एक कार्य क्षेत्र क्षेत्र बनाने के लिए लगता है, और आप अगर एक आइटम अपने workarea संपत्ति की जाँच करके कि कार्य क्षेत्र से संबंधित है जो निर्धारित कर सकते हैं।

उत्तर

6

यह देशी सूची-दृश्य नियंत्रण के कार्यक्षेत्रों के लिए वीसीएल का समर्थन है। List-View Working Areas देखें।

[...] एकाधिक कार्य क्षेत्र एक दृश्य के विभिन्न क्षेत्रों को बनाने के लिए इस्तेमाल किया जा सकता है: प्रलेखन कि वे क्या किया जा सकता है के लिए एक उदाहरण देता है। आप एक ऐसे दृश्य में क्षेत्र बना सकते हैं जिसमें अलग-अलग अर्थ हैं। उदाहरण के लिए, फ़ाइल सिस्टम के दृश्य में पढ़ने/लिखने वाली फ़ाइलों के लिए क्षेत्र और केवल-पढ़ने वाली फ़ाइलों के लिए एक अन्य क्षेत्र हो सकता है। उपयोगकर्ता विभिन्न कार्यक्षेत्रों में उन्हें रखकर आइटम को वर्गीकृत कर सकता है। [...]

प्रलेखन यह भी कहा गया है कि आप किनारों के पास खाली सीमाओं बना सकते हैं या स्क्रॉल बार जहां सामान्य रूप से कोई भी कार्य क्षेत्रों का उपयोग करके किया जाएगा हो सकता है।

वीसीएल के दस्तावेज से बहुत गुम नहीं लग रहा है। आप कार्य क्षेत्रों को जोड़ और क्वेरी कर सकते हैं। किसी विशेष कार्य क्षेत्र में किसी आइटम को स्थानांतरित करें, या उससे पूछें कि यह किस क्षेत्र में रहता है। कुछ भी स्वचालित नहीं है, आपको बस इसे स्वयं करना है। एक आइटम किसी कार्य क्षेत्र से जुड़ा नहीं है, आपको इसे स्वयं स्थानांतरित करना होगा (वीसीएल केवल कार्यक्षेत्रों पर फिर से शुरू होता है और आइटम के क्षेत्र और क्षेत्र के समन्वय को जांचता है ताकि कार्य क्षेत्र में कोई आइटम हो)।

वर्गीकरण भाग शायद बेहद उपयोगी नहीं है, क्योंकि कोई भी नियंत्रण के बिना अपने स्वयं के आभासी क्षेत्रों को रख सकता है। किनारों और स्क्रॉल बार के बारे में बिट्स शायद अधिक महत्वपूर्ण हैं। लेकिन मैंने ओएस समेत किसी एप्लिकेशन में ऐसी चीज को लागू नहीं किया है। लेआउट नियंत्रण के लिए


नमूना उपयोग:

type 
    TForm1 = class(TForm) 
    Button1: TButton; 
    ListView1: TListView; 
    procedure Button1Click(Sender: TObject); 
    procedure FormCreate(Sender: TObject); 
    end; 

var 
    Form1: TForm1; 

implementation 

uses 
    commctrl; 

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject); 
var 
    R1, R2: TRect; 
begin 
    R1 := Rect(0, 0, 
       ListView1.ClientWidth div 2, ListView1.ClientHeight div 2 + 10); 
    R2 := Rect(ListView1.ClientWidth div 2 + 1, 0, 
       ListView1.ClientWidth - 1, ListView1.ClientHeight div 2 + 10); 

    ListView1.WorkAreas.Add.Rect := R1; 
    ListView1.WorkAreas.Add.Rect := R2; 

    ListView1.AddItem('Item 1', nil); 
    ListView1.AddItem('Item 2', nil); 
    ListView1.AddItem('Item 3', nil); 
    ListView1.AddItem('Item 4', nil); 
    ListView1.AddItem('Item 5', nil); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    i: Integer; 
begin 
    for i := 0 to ListView1.Items.Count - 1 do begin 
    ListView1.Items[i].Left := ListView1.WorkAreas[1].Rect.Left; 
    ListView1.Items[i].Top := ListView1.WorkAreas[1].Rect.Top; 
    end; 
    ListView1.Arrange(arAlignTop); 
end; 


प्रारंभिक दृश्य:
enter image description here

ध्यान दें कि पहली तस्वीर में "आइटम 5" नहीं है:
enter image description here
बटन दबाने के बाद किसी भी कार्य क्षेत्र में। बटन में हैंडलर क्लिक करें मैंने सभी पांच आइटम 'दाएं-शीर्ष' कार्य क्षेत्र में डालने का प्रयास किया। "आइटम 5" के बाद वहां रखा गया है, नियंत्रण ने "आइटम -1" को बाहर निकालने का फैसला किया है क्योंकि सभी पांच फिट नहीं थे। अब तक यह स्पष्ट होना चाहिए कि मैंने कभी भी कार्यक्षेत्रों का उपयोग नहीं किया है, लेकिन मैंने उद्देश्य से इस उदाहरण को संभावित क्विर्क को इंगित करने में सक्षम होने के लिए दिया है। मुझे उम्मीद थी कि दस्तावेजों में उल्लिखित स्क्रॉलबार दिखाई देगा।

+0

मैं एक अच्छा डेल्फी उदाहरण की उम्मीद कर रहा था जो उनके उपयोग को उजागर करेगा। – Alister

+0

@ एलीस्टर - मैंने एक साधारण उदाहरण को एक साथ रखने की कोशिश की, अनुमान लगाया नहीं जा सकता है कि यह मददगार होगा .. –

संबंधित मुद्दे