简体   繁体   中英

Delphi display a frame by tag number in page control

I have a unique question. I am using Delphi 2007 on Windows XP. I have a form with a TPageControl component. I created a Frame that I want to display within that PageControl. I will be creating many other frames that will be displayed based on button click events. Is there anyway to use the tag property of the frame so that when the button is pressed the tag number can be passed into a generic function or procedure so that the functions or procedures can be reused for all the buttons. Another idea was to use the tabsheets index property and match it to the frame tag number. Any suggestions would be great. Thanks in advance.

You need an function which maps the tag number to the frame class, something like following:

type
  TFrameClass = class of TFrame;

function GetFrameClass(const aClassID: Integer): TFrameClass;
begin
  case aClassID of
    1 : Result := TFrameFoo;
    2 : Result := TFrameBar;
    else Result := nil;
  end;
end;

and then you can create frames:

var FrClass: TFrameClass;
    Frame: TFrame;
begin
  FrClass := GetFrameClass(btn.Tag);
  if(FrClass <> nil)then begin
     Frame := FrClass.Create(tabsheet);
     Frame.Parent := tabsheet;
  end;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM