Articles   Members Online:
-Article/Tip Search
-News Group Search over 21 Million news group articles.
-Delphi/Pascal
-CBuilder/C++
-C#Builder/C#
-JBuilder/Java
-Kylix
Member Area
-Home
-Account Center
-Top 10 NEW!!
-Submit Article/Tip
-Forums Upgraded!!
-My Articles
-Edit Information
-Login/Logout
-Become a Member
-Why sign up!
-Newsletter
-Chat Online!
-Indexes NEW!!
Employment
-Build your resume
-Find a job
-Post a job
-Resume Search
Contacts
-Contacts
-Feedbacks
-Link to us
-Privacy/Disclaimer
Embarcadero
Visit Embarcadero
Embarcadero Community
JEDI
Links
How to find the parent TTabSheet of a control Turn on/off line numbers in source code. Switch to Orginial background IDE or DSP color Comment or reply to this aritlce/tip for discussion. Bookmark this article to my favorite article(s). Print this article
31-Oct-02
Category
VCL-General
Language
Delphi 2.x
Views
107
User Rating
No Votes
# Votes
0
Replies
0
Publisher:
DSP, Administrator
Reference URL:
DKB
			Author: Tomas Rutkauskas

I am trying to write a recursive function that will go through all the parents of a 
component until it finds the tabsheet that it is on (ie: TEdit -> TGroupBox -> 
TTabSheet). Then I would like to get the caption of that tabsheet.

Answer:

Solve 1:

If you walk the tree up - from root - you need recursion, but the opposite way is 
linear as each element (control) has only one immediate parent, so recursion would 
be nonsense. A code like this should do:

1   function GetParentTabsheet(C: TControl): TTabsheet;
2   begin
3     Result := TTabSheet(C.Parent);
4     while (Result <> nil) and not Result.InheritsFrom(TTabSheet) do
5       Result := TTabSheet(Result.Parent);
6   end;


If you really want it recursive:

7   function GetParentTabsheet(C: TControl): TTabsheet;
8   begin
9     Result := TTabSheet(C.Parent);
10    if (Result <> nil) and not Result.InheritsFrom(TTabSheet) then
11      Result := GetParentTabsheet(Result);
12  end;



Solve 2:

13  function GetParentTabSheet(Control: TControl): TTabSheet;
14  begin
15    while Assigned(Control) and not (Control is TTabSheet) do
16      Control := Control.Parent;
17    Result := TTabSheet(Control);
18  end;



Solve 3:

19  procedure TForm1.Button1Click(Sender: TObject);
20  begin
21    ShowMessage(TTabSheet(TGroupBox(Edit1.Parent).Parent).Caption);
22  end;



			
Vote: How useful do you find this Article/Tip?
Bad Excellent
1 2 3 4 5 6 7 8 9 10

 

Advertisement
Share this page
Advertisement
Download from Google

Copyright © Mendozi Enterprises LLC