J'ai une question particulière. J'utilise Delphi 2007 sur Windows XP. J'ai un formulaire avec un composant TPageControl. J'ai créé un cadre que je souhaite afficher à l'intérieur de ce PageControl. Je vais créer de nombreux autres cadres qui seront affichés en fonction des événements de clics sur les boutons. Est-il possible d'utiliser la propriété tag du cadre de sorte que lorsque le bouton est pressé, le numéro de tag peut être passé dans une fonction ou procédure générique de sorte que les fonctions ou procédures peuvent être réutilisées pour tous les boutons. Une autre idée était d'utiliser la propriété d'index des tabsheets et de la faire correspondre au numéro de tag du cadre. Toute suggestion serait la bienvenue. Merci d'avance.
Réponse
Trop de publicités?Vous avez besoin d'une fonction qui associe le numéro d'étiquette à la classe de cadre, quelque chose comme ce qui suit :
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;
et vous pouvez ensuite créer des cadres :
var FrClass: TFrameClass;
Frame: TFrame;
begin
FrClass := GetFrameClass(btn.Tag);
if(FrClass <> nil)then begin
Frame := FrClass.Create(tabsheet);
Frame.Parent := tabsheet;
end;