J'utilise un composant Pagecontrol et j'ai besoin d'ajouter un bouton et de cliquer dessus pour accéder à une page spécifiée. P>
Comment puis-je faire cela s'il vous plaît? p>
3 Réponses :
Ajoutez un bouton au formulaire et écrivez un gestionnaire d'événements OnCliquez comme suit:
procedure TMyForm.Button1Click(Sender: TObject); begin PageControl1.ActivePage := TabSheet1; end;
@ Satch3000, bonne suggestion, mais notez que cela ne déclenchera pas un événement OnPagechange pour le pagecontrol, si vous voulez que B> se produise, vous devez appeler cet événement dans votre Bouton1click code> explicitement.
Vous pouvez utiliser ActivePageindex:
procedure TForm1.Button1Click(Sender: TObject); begin PageControl1.ActivePageIndex := 0; end;
Cela équivaut à utiliser ActivePage code>, les deux propriétés sont synonymes
Je préférerais toujours la définition d'acomptage, car l'index d'une page est variable. Ou au moins: a cette capacité. La référence à une page d'autre part restera toujours la même. Et le plus probablement, le code sera plus lisible avec un nom de variable auto-descriptif qu'avec un chiffre sans signification.
Je pense que cela dépend de la situation. Plusieurs fois, j'ai utilisé ActivePageDex défini sur 0 sur Formshow pour être sûr que le premier sera visible au début. Après avoir réaménagé, le code de tabsheets est toujours correct.
Eh bien, ce n'est guère une situation i>, mais juste un talent pour réinitialiser les modifications que vous avez faites dans le concepteur. ;) Bon conseil cependant! +1
Puis-je simplement ajouter que vous ne pouvez pas définir la page active dans l'événement Onchange (j'ai essayé depuis des lustres!). Toutes les chèques nécessaires doivent être effectuées dans l'événement ONCHANGING, puis définir l'autoroute Var à true ou false en conséquence:
procedure Tfrm_AspireParams.PC_OptionsChanging(Sender: TObject;
var AllowChange: Boolean);
begin
AllowChange := true;
if fActivated then
begin
if BBtn_Timesheets_Save.Enabled then // They have not saved changes on this tab.
begin
messagedlg('Please save the page first', mtInformation, [mbOK], 0);
AllowChange := False;
end;
end;
end;