में संकेत देता है मैं एक टीपीएज कंट्रोल और कुछ टीटीएबीशीट्स चाहता हूं, 'प्रति टैबशीट' टूलटिप संकेतों के साथ दिखाई देता है क्योंकि मैं प्रत्येक टैब पर बदले में रहता हूं।TTabSheet डेल्फी
क्या डेल्फी 200 9 में इस प्रभाव को पाने का कोई तरीका है?
में संकेत देता है मैं एक टीपीएज कंट्रोल और कुछ टीटीएबीशीट्स चाहता हूं, 'प्रति टैबशीट' टूलटिप संकेतों के साथ दिखाई देता है क्योंकि मैं प्रत्येक टैब पर बदले में रहता हूं।TTabSheet डेल्फी
क्या डेल्फी 200 9 में इस प्रभाव को पाने का कोई तरीका है?
बस पेज कंट्रोल के माउस मूव इवेंट को हुक करें और टैबएटपोस प्रॉपर्टी का उपयोग यह निर्धारित करने के लिए करें कि माउस किस टैब पर हो रहा है। फिर पेज नियंत्रण की संकेत संपत्ति पर उस टैब का संकेत असाइन करें।
procedure TForm.PageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
var
tabindex: integer;
begin
tabindex := PageControl.IndexOfTabAt(X, Y);
if (tabindex >= 0) and (PageControl.Hint <> PageControl.Pages[tabindex].Hint) then
begin
Application.CancelHint;
PageControl.Hint := PageControl.Pages[tabindex].Hint;
PageControl.ShowHint := true;
end;
end;
CancelHint/ShowHint संकेत खिड़की को अद्यतन करने का ख्याल रखना होगा जब एक टैब से सीधे एक और करने के लिए माउस ले जाता है।
बेहतर लेकिन बदसूरत संस्करण नीचे भी अस्थायी रूप से हिंटपोज़ को 0 में बदल देता है जब माउस सीधे टैब से टैब पर ले जाया जाता है ताकि संकेत तुरंत फिर से चलाया जा सके। ("बदसूरत" समाधान का हिस्सा Application.ProcessMessages को जाता है फोन जो बलों संदेशों से पहले HintPause पुनर्स्थापित किया जाता है संसाधित करने के लिए संकेत।)
procedure TForm.PagesMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
var
hintPause: integer;
tabindex: integer;
begin
tabindex := PageControl.IndexOfTabAt(X, Y);
if (tabindex >= 0) and (PageControl.Hint <> PageControl.Pages[tabindex].Hint) then
begin
hintPause := Application.HintPause;
try
if PageControl.Hint <> '' then
Application.HintPause := 0;
Application.CancelHint;
PageControl.Hint := PageControl.Pages[tabindex].Hint;
PageControl.ShowHint := true;
Application.ProcessMessages; // force hint to appear
finally Application.HintPause := hintPause; end;
end;
end;
मुख्य पृष्ठ शरीर पर संकेत छुपाने के लिए, निम्न विधि आवंटित पृष्ठ नियंत्रण के OnMouseLeave घटना में।
procedure TForm.PageMouseLeave(Sender: TObject);
begin
PageControl.Hint := '';
PageControl.ShowHint := false;
end;
TabAtPos मौजूद नहीं है, आपका मतलब इंडेक्सऑफटाब (एक्स, वाई) था। यह * इतना * लगभग सही काम करता है। सिवाय इसके कि जब आप एक टैब से दूसरे स्थान पर जाते हैं, तो संकेत अद्यतन या पुन: प्रदर्शित नहीं होता है। – Roddy
माफी; मैं TRzTabSheet (Raize घटक) का उपयोग कर रहा था जिसमें TabAtPos प्रॉपर्टी है और अच्छी तरह से काम करता है। आप केवल थिंटविंडो क्लास का उपयोग करके टैबिंडेक्स के बदलाव पर संकेत दिखा सकते हैं। पृष्ठ नियंत्रण के संकेत संकेत को झूठी पर सेट करें और अपना स्वयं का बनाएं। – Gerard
1 - उस संपत्ति को भरें, और सेट करें। PageHontrol के लिए TrueHint प्रॉपर्टी को सही (मान लें कि प्रत्येक टैबशीट में माता-पिताशॉइंट सही है, अन्यथा आपको प्रत्येक पृष्ठ को अलग-अलग सेट करना होगा)।
2 - PageControl के OnChange इवेंट हैंडलर को यह घटना असाइन करें:
procedure TForm1.PageControl1Change(Sender: TObject);
begin
PageControl1.Hint := PageControl1.ActivePage.Hint;
end;
आप करते हैं उसके बाद, संकेत किया जाएगा जो कुछ सक्रिय टैब है। मुझे यकीन नहीं है कि माउस कहां चल रहा है, इस पर आधारित संकेत को कैसे बदलना है - यह एक दिलचस्प घटना है जिसे मैंने पहले कभी नहीं देखा है।
भी करता है, मुझे लगता है कि प्रश्न सक्रिय पृष्ठ को बदले बिना पेज-विशिष्ट संकेत दिखा रहा था। – Wolf
Raize Components में, इस true
को trzpagecontrol.tabhints
संपत्ति सेट कर पूरा किया जा सकता है। अच्छे घटक आपको बहुत समय बचा सकते हैं (इसलिए पैसा)।
(बस एक खुश ग्राहक, Btw)
पर tPageControl.OnMouseMove लगता है Pgctrl.IndexOfTabAt (एक्स, वाई) द्वारा tabindex और tPageControl संकेत करने के लिए TabSheet संकेत आवंटित
यहाँ देखो:
फ़ायरफ़ॉक्स यह –